|
Message-ID: <CAB=m8wKevO1tOZ8ZXqdAcF2rqPMgOx_A10AL296a40+W8NPGzA@mail.gmail.com> Date: Wed, 5 Jun 2019 13:53:58 -0600 From: "tenspd137 ." <dcday137@...il.com> To: Rich Felker <dalias@...c.org> Cc: musl@...ts.openwall.com Subject: Re: Illegal instruction in __copy_tls() Sure - strace -d -v ./a.out: strace: ptrace_setoptions = 0x51 strace: new tcb for pid 26302, active tcbs:1 strace: [wait(0x80137f) = 26302] WIFSTOPPED,sig=SIGSTOP,EVENT_STOP (128) strace: pid 26302 has TCB_STARTUP, initializing it strace: [wait(0x80057f) = 26302] WIFSTOPPED,sig=SIGTRAP,EVENT_STOP (128) strace: [wait(0x00127f) = 26302] WIFSTOPPED,sig=SIGCONT strace: [wait(0x00857f) = 26302] WIFSTOPPED,sig=133 execve("./a.out", ["./a.out"], ["SSH_CONNECTION=15.86.136.27 5196"..., "LANG=en_US.UTF-8", "XDG_SESSION_ID=41", "USER=dayd", "PWD=/home/dayd/projects/musl-tes"..., "HOME=/home/dayd", "SSH_CLIENT=xx.xxx.xxx.xx 51960 22", "CCACHE_DIR=/ssd/dayd/.ccache", "VMWARE_USE_SHIPPED_GTK=yes", "XDG_DATA_DIRS=/usr/local/share:/"..., "USECCACHE=ON", "SSH_TTY=/dev/pts/2", "MAIL=/var/mail/dayd", "TERM=rxvt-unicode-256color", "SHELL=/bin/bash", "SHLVL=1", "PYTHONPATH=:/home/dayd/projects/"..., "LOGNAME=dayd", "DBUS_SESSION_BUS_ADDRESS=unix:pa"..., "XDG_RUNTIME_DIR=/run/user/6686", "PATH=/usr/lib/ccache/bin/:/usr/l"..., "USEDISTCC=OFF", "_=/usr/bin/strace", "OLDPWD=/home/dayd/projects"]strace: [wait(0x04057f) = 26302] WIFSTOPPED,sig=SIGTRAP,EVENT_EXEC (4) strace: [wait(0x00857f) = 26302] WIFSTOPPED,sig=133 ) = 0 strace: [wait(0x00047f) = 26302] WIFSTOPPED,sig=SIGILL --- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPN, si_addr=0x40169e} --- strace: [wait(0x06057f) = 26302] WIFSTOPPED,sig=SIGTRAP,EVENT_EXIT (6) strace: [wait(0x000084) = 26302] WIFSIGNALED,core,sig=SIGILL +++ killed by SIGILL (core dumped) +++ strace: dropped tcb for pid 26302, 0 remain Illegal instruction (core dumped) ****************************************************************************************** (gdb) bt #0 0x00000000004016ae in __copy_tls () #1 0x0000000000000000 in ?? () ***************************************************************************************** (gdb) disassemble Dump of assembler code for function __copy_tls: 0x0000000000401680 <+0>: push %r13 0x0000000000401682 <+2>: mov %rdi,%r13 0x0000000000401685 <+5>: push %r12 0x0000000000401687 <+7>: push %rbp 0x0000000000401688 <+8>: push %rbx 0x0000000000401689 <+9>: sub $0x8,%rsp 0x000000000040168d <+13>: mov 0x410c(%rip),%rax # 0x4057a0 <__libc+32> 0x0000000000401694 <+20>: mov 0x410d(%rip),%rcx # 0x4057a8 <__libc+40> 0x000000000040169b <+27>: mov 0x40f6(%rip),%rbx # 0x405798 <__libc+24> 0x00000000004016a2 <+34>: lea -0xe0(%rdi,%rax,1),%rax 0x00000000004016aa <+42>: lea -0x1(%rcx),%r12 => 0x00000000004016ae <+46>: andn %rax,%r12,%r12 0x00000000004016b3 <+51>: test %rbx,%rbx 0x00000000004016b6 <+54>: je 0x4016eb <__copy_tls+107> 0x00000000004016b8 <+56>: lea 0x8(%rdi),%rbp 0x00000000004016bc <+60>: nopl 0x0(%rax) 0x00000000004016c0 <+64>: mov %r12,%rax 0x00000000004016c3 <+67>: sub 0x28(%rbx),%rax 0x00000000004016c7 <+71>: mov %rax,0x0(%rbp) 0x00000000004016cb <+75>: mov 0x8(%rbx),%rsi 0x00000000004016cf <+79>: mov %r12,%rdi 0x00000000004016d2 <+82>: mov 0x10(%rbx),%rdx 0x00000000004016d6 <+86>: sub 0x28(%rbx),%rdi 0x00000000004016da <+90>: callq 0x401e3c <memcpy> 0x00000000004016df <+95>: mov (%rbx),%rbx 0x00000000004016e2 <+98>: add $0x8,%rbp 0x00000000004016e6 <+102>: test %rbx,%rbx 0x00000000004016e9 <+105>: jne 0x4016c0 <__copy_tls+64> 0x00000000004016eb <+107>: mov 0x40be(%rip),%rax # 0x4057b0 <__libc+48> 0x00000000004016f2 <+114>: mov %rax,0x0(%r13) 0x00000000004016f6 <+118>: mov %r13,0xd8(%r12) 0x00000000004016fe <+126>: mov %r13,0x8(%r12) 0x0000000000401703 <+131>: add $0x8,%rsp 0x0000000000401707 <+135>: mov %r12,%rax 0x000000000040170a <+138>: pop %rbx 0x000000000040170b <+139>: pop %rbp 0x000000000040170c <+140>: pop %r12 0x000000000040170e <+142>: pop %r13 0x0000000000401710 <+144>: retq End of assembler dump. *********************************************************************************** as a bonus (I thought this might also help): (%:~/projects/musl-test)┌- x86_64-pc-linux-musl-gcc -v -static -O0 -g hello.c Using built-in specs. COLLECT_GCC=x86_64-pc-linux-musl-gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/lto-wrapper Target: x86_64-pc-linux-musl Configured with: /var/tmp/portage/cross-x86_64-pc-linux-musl/gcc-9.1.0/work/gcc-9.1.0/configure --host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-musl --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/x86_64-pc-linux-musl/gcc-bin/9.1.0 --includedir=/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-musl/9.1.0 --mandir=/usr/share/gcc-data/x86_64-pc-linux-musl/9.1.0/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-musl/9.1.0/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/include/g++-v9 --with-python-dir=/share/gcc-data/x86_64-pc-linux-musl/9.1.0/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 9.1.0 p1.0' --disable-esp --enable-libstdcxx-time --enable-poison-system-directories --with-sysroot=/usr/x86_64-pc-linux-musl --disable-bootstrap --enable-__cxa_atexit --disable-multilib --with-multilib-list=m64 --disable-altivec --disable-fixed-point --enable-targets=all --enable-libgomp --disable-libmudflap --disable-libssp --disable-systemtap --disable-vtable-verify --disable-libvtv --enable-lto --without-isl --disable-libsanitizer --enable-default-pie --enable-default-ssp Thread model: posix gcc version 9.1.0 (Gentoo 9.1.0 p1.0) COLLECT_GCC_OPTIONS='-v' '-static' '-O0' '-g' '-mtune=generic' '-march=x86-64' /usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/cc1 -quiet -v hello.c -quiet -dumpbase hello.c -mtune=generic -march=x86-64 -auxbase hello -g -O0 -version -o /tmp/ccoTkh38.s GNU C17 (Gentoo 9.1.0 p1.0) version 9.1.0 (x86_64-pc-linux-musl) compiled by GNU C version 8.3.0, GMP version 6.1.2, MPFR version 4.0.2, MPC version 1.1.0, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "/usr/x86_64-pc-linux-musl/usr/local/include" ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/../../../../x86_64-pc-linux-musl/include" #include "..." search starts here: #include <...> search starts here: /usr/x86_64-pc-linux-musl/usr/include /usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/include End of search list. GNU C17 (Gentoo 9.1.0 p1.0) version 9.1.0 (x86_64-pc-linux-musl) compiled by GNU C version 8.3.0, GMP version 6.1.2, MPFR version 4.0.2, MPC version 1.1.0, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: a3183e5f435d1938198d432af6db159b COLLECT_GCC_OPTIONS='-v' '-static' '-O0' '-g' '-mtune=generic' '-march=x86-64' /usr/libexec/gcc/x86_64-pc-linux-musl/as -v --64 -o /tmp/ccHq7CL6.o /tmp/ccoTkh38.s GNU assembler version 2.32.0 (x86_64-pc-linux-musl) using BFD version (Gentoo 2.32 p2) 2.32.0 COMPILER_PATH=/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/libexec/gcc/x86_64-pc-linux-musl/:/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/lib/gcc/x86_64-pc-linux-musl/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/../../../../x86_64-pc-linux-musl/lib/:/usr/x86_64-pc-linux-musl/lib/:/usr/x86_64-pc-linux-musl/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-static' '-O0' '-g' '-mtune=generic' '-march=x86-64' /usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/collect2 -plugin /usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccWcifv4.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lc --sysroot=/usr/x86_64-pc-linux-musl -m elf_x86_64 -static /usr/x86_64-pc-linux-musl/usr/lib/crt1.o /usr/x86_64-pc-linux-musl/usr/lib/crti.o /usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/crtbeginT.o -L/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0 -L/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/../../../../x86_64-pc-linux-musl/lib -L/usr/x86_64-pc-linux-musl/lib -L/usr/x86_64-pc-linux-musl/usr/lib /tmp/ccHq7CL6.o --start-group -lgcc -lgcc_eh -lc --end-group /usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/crtend.o /usr/x86_64-pc-linux-musl/usr/lib/crtn.o COLLECT_GCC_OPTIONS='-v' '-static' '-O0' '-g' '-mtune=generic' '-march=x86-64' mtune=generic and march=x86-64 suggests it isn't trying to do something weird on the compile computer. Also, if I messed up and am not giving you what you are asking for, please let me know and I will grab it. Thanks! On Wed, Jun 5, 2019 at 12:37 PM Rich Felker <dalias@...c.org> wrote: > > On Wed, Jun 05, 2019 at 12:16:39PM -0600, tenspd137 . wrote: > > Hi all > > > > I am using musl 1.1.22 with in a cross toolchain to create static > > binaries on my machine. I am running gentoo linux and used their > > crossdev tool to create the cross compiler (x86_64-pc-linux-musl). I > > created a small hello world app: > > > > #include <stdio.h> > > int main(int argc, char **argv) > > {printf("Hello MUSL\n");} > > > > and compiled with: > > > > x86_64-pc-linux-musl-gcc -v -static -Os -g hello.c > > > > Built and runs fine on local machine, but when I put the binary on > > another machine, it dumped the core with an ilegal instruction. gdb > > claims illegal instruction in __copy_tls(). > > > > I have been able to compile this program after building the musl-gcc > > wrapper and it works on both machines, but I need the cross toolchain > > for C++ support. The -v in the commandline above prints messages that > > indicate it is using musl from what I can tell. > > > > Can anyone point me in the right direction or help me figure out what > > I am missing? > > Can you show the gdb backtrace, disassembly at the point of crash, and > an strace leading up to it? > > My best guess is that your toolchain is producing binaries for some > non-baseline level of x86_64 ISA, and the machine you're trying to run > it on does not support some of the instructions used. > > Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.