Hi Matthew,
On Wed, Apr 29, 2020 at 07:14:30AM -0700, Matthew Fernandez wrote:
>
> To add another data point to this discussion, one other (fruitless) thing I
> tried previously was cross-compiling Clustal Omega. From an amd64 host, it’s
> possible to target mipsel using the GCC cross-compilers in the standard
> Debian repositories. You can then run the resulting binary using Qemu’s user
> mode. Using this technique, the f002 test runs to completion with no bus
> error. This is not really surprising as AFAIK unaligned accesses that would
> trigger a bus error on mipsel hardware would be silently allowed in this
> configuration (Qemu doesn’t faithfully emulate this hardware behaviour and
> amd64 allows unaligned access).
>
> Unfortunately the repositories’ cross-compilers have been built without ASan
> enabled and you can’t attach to an emulated mipsel process with a native
> Valgrind. So debugging memory safety issues is not straightforward. To go
> further with this approach, you would have to build a mipsel-targeting
> cross-compiler with ASan enabled or cross-compile Valgrind to mipsel. For a
> true masochist, it may be possible to attach to the process with GDB or rr
> and reverse-step from the location Andreas has quoted, but I wouldn’t trust
> the debugger not to crash in this configuration. Even then the issue may not
> be reproducible because it may be dependent on transformations/optimizations
> only performed by the particular version of the native mipsel compiler called
> during packaging.
Thanks a lot for your effort.
> For those on this thread who have access to mipsel hardware or can shell in
> to one of the mipsel build machines, I would suggest running an
> ASan-instrumented test there (`export CFLAGS="-g -fsanitize=address"; export
> CXXFLAGS="-g -fsanitize=address"`) and see what we learn.
I tried on real hardware. Unfortunately I'm running into
configure:3720: $? = 0
configure:3709: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/mipsel-linux-gnu/9/lto-wrapper
Target: mipsel-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 9.3.0-10'
--with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs
--enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,gm2 --prefix=/usr
--with-gcc-major-version-only --program-suffix=-9
--program-prefix=mipsel-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new
--enable-gnu-unique-object --disable-libitm --disable-libsanitizer
--disable-libquadmath --disable-libquadmath-support --enable-plugin
--enable-default-pie --with-system-zlib --with-target-system-zlib=auto
--enable-multiarch --disable-werror --enable-multilib --with-arch-32=mips32r2
--with-fp-32=xx --with-madd4=no --with-lxc1-sxc1=no --enable-targets=all
--with-arch-64=mips64r2 --enable-checking=release --build=mipsel-linux-gnu
--host=mipsel-linux-gnu --target=mipsel-linux-gnu
Thread model: posix
gcc version 9.3.0 (Debian 9.3.0-10)
configure:3720: $? = 0
configure:3709: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:3720: $? = 1
configure:3709: gcc -qversion >&5
gcc: error: unrecognized command line option '-qversion'; did you mean
'--version'?
gcc: fatal error: no input files
compilation terminated.
configure:3720: $? = 1
configure:3740: checking whether the C compiler works
configure:3762: gcc -g -O2 -fdebug-prefix-map=/home/tille/clustalo=.
-fstack-protector-strong -Wformat -Werror=format-security -fsanitize=address
-Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wl,-z,now conftest.c >&5
/usr/bin/ld: cannot find libasan_preinit.o: No such file or directory
/usr/bin/ld: cannot find -lasan
collect2: error: ld returned 1 exit status
configure:3766: $? = 1
configure:3804: result: no
configure: failed program was:
I have no idea why libasan_preinit.o and libasan.a are not installed.
The package libgcc-9-dev is installed for sure and on amd64 both files
are included here. It seems the sudo command on eller does not permit
me executing `apt-file update` in a chroot so I have no idea where these
files are on mipsel (if they exist at all).
Any more help from debian-mipsel is really appreciated.
Kind regards
Andreas.
--
http://fam-tille.de