http://sourceware.org/bugzilla/show_bug.cgi?id=14541
Bug #: 14541 Summary: Wrong entry point computation using cross binutils linux amd64->arm-linux-gnueabihf Product: binutils Version: 2.22 Status: NEW Severity: normal Priority: P2 Component: binutils AssignedTo: unassig...@sourceware.org ReportedBy: eric.vale...@free.fr Classification: Unclassified I'm trying to build a cross compilation tool for raspberry pi on a debian amd64 machine. While I succeeded to build the tools either the debian way or using pure official gnu tools releases unpatched, in both case I get binary that do no execute on the raspberry. Even a simple hello word statically compiled fails to execute test.c : #include <stdio.h> main() { printf("hello world\n"); exit (0); } I noticed the entry point is wrongly computed on this sample program (native tools on raspberry have _start address as their entry point not _start +1! arm-linux-gnueabihf-gcc-4.7 -static -v -o test test.c Using built-in specs. COLLECT_GCC=arm-linux-gnueabihf-gcc-4.7 COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.7/lto-wrapper Target: arm-linux-gnueabihf Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.1-7' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/arm-linux-gnueabihf/include/c++/4.7.1 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libitm --enable-plugin --enable-objc-gc --disable-sjlj-exceptions --with-cpu=arm1176jzf-s --with-tune=arm1176jzf-s --with-build-sysroot=/home/armDev/raspberry/flashRoot --with-arch=armv6 --with-float=hard --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-linux-gnueabihf --program-prefix=arm-linux-gnueabihf- --includedir=/usr/arm-linux-gnueabihf/include --with-headers=/usr/arm-linux-gnueabihf/include --with-libs=/usr/arm-linux-gnueabihf/lib Thread model: posix gcc version 4.7.1 (Debian 4.7.1-7) COLLECT_GCC_OPTIONS='-static' '-v' '-o' 'test' '-march=armv6' '-mtune=arm1176jzf-s' '-mfloat-abi=hard' '-mtls-dialect=gnu' /usr/lib/gcc/arm-linux-gnueabihf/4.7/cc1 -quiet -v -imultilib . -imultiarch arm-linux-gnueabihf test.c -quiet -dumpbase test.c -march=armv6 -mtune=arm1176jzf-s -mfloat-abi=hard -mtls-dialect=gnu -auxbase test -version -o /tmp/cckZtRSC.s GNU C (Debian 4.7.1-7) version 4.7.1 (arm-linux-gnueabihf) compiled by GNU C version 4.7.1, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring duplicate directory "/usr/lib/gcc/arm-linux-gnueabihf/4.7/../../../../arm-linux-gnueabihf/include" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc/arm-linux-gnueabihf/4.7/include /usr/lib/gcc/arm-linux-gnueabihf/4.7/include-fixed /usr/arm-linux-gnueabihf/include End of search list. GNU C (Debian 4.7.1-7) version 4.7.1 (arm-linux-gnueabihf) compiled by GNU C version 4.7.1, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: ae23d5d5164dae087e074ab6bd3989a9 test.c: In function ‘main’: test.c:6:2: warning: incompatible implicit declaration of built-in function ‘exit’ [enabled by default] COLLECT_GCC_OPTIONS='-static' '-v' '-o' 'test' '-march=armv6' '-mtune=arm1176jzf-s' '-mfloat-abi=hard' '-mtls-dialect=gnu' /usr/lib/gcc/arm-linux-gnueabihf/4.7/../../../../arm-linux-gnueabihf/bin/as -v -march=armv6 -mfloat-abi=hard -meabi=5 -o /tmp/ccHi9bK1.o /tmp/cckZtRSC.s GNU assembler version 2.22 (arm-linux-gnueabihf) using BFD version (GNU Binutils for Debian) 2.22 COMPILER_PATH=/usr/lib/gcc/arm-linux-gnueabihf/4.7/:/usr/lib/gcc/arm-linux-gnueabihf/4.7/:/usr/lib/gcc/arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/4.7/:/usr/lib/gcc/arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/4.7/../../../../arm-linux-gnueabihf/bin/ LIBRARY_PATH=/usr/lib/gcc/arm-linux-gnueabihf/4.7/:/usr/lib/gcc/arm-linux-gnueabihf/4.7/../../../../arm-linux-gnueabihf/lib/ COLLECT_GCC_OPTIONS='-static' '-v' '-o' 'test' '-march=armv6' '-mtune=arm1176jzf-s' '-mfloat-abi=hard' '-mtls-dialect=gnu' /usr/lib/gcc/arm-linux-gnueabihf/4.7/collect2 --build-id --no-add-needed -Bstatic -dynamic-linker /lib/ld-linux-armhf.so.3 -X --hash-style=both -m armelf_linux_eabi -o test /usr/lib/gcc/arm-linux-gnueabihf/4.7/../../../../arm-linux-gnueabihf/lib/crt1.o /usr/lib/gcc/arm-linux-gnueabihf/4.7/../../../../arm-linux-gnueabihf/lib/crti.o /usr/lib/gcc/arm-linux-gnueabihf/4.7/crtbeginT.o -L/usr/lib/gcc/arm-linux-gnueabihf/4.7 -L/usr/lib/gcc/arm-linux-gnueabihf/4.7/../../../../arm-linux-gnueabihf/lib /tmp/ccHi9bK1.o --start-group -lgcc -lgcc_eh -lc --end-group /usr/lib/gcc/arm-linux-gnueabihf/4.7/crtend.o /usr/lib/gcc/arm-linux-gnueabihf/4.7/../../../../arm-linux-gnueabihf/lib/crtn.o root@serverCompilARMDev:/home/armDev/crossdevSrc/test# nm test | grep start 0006a12c A __bss_start 0006a12c A __bss_start__ 000088b8 t call_gmon_start 00069a20 D __data_start 00069a20 W data_start 00011f7c T _dl_start w _dl_starting_up 0003c27c T _dl_start_profile 000612d4 a __exidx_start 00069974 t __fini_array_start w __gmon_start__ 00069970 t __init_array_start 00008a00 T __libc_start_main 00069970 b __preinit_array_start 00008880 T _start <======= 00060fb0 A __start___libc_atexit root@serverCompilARMDev:/home/armDev/crossdevSrc/test# arm-linux-gnueabihf-readelf -h test ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: ARM Version: 0x1 Entry point address: 0x8881 <======== Start of program headers: 52 (bytes into file) Start of section headers: 369336 (bytes into file) Flags: 0x5000002, has entry point, Version5 EABI Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 6 Size of section headers: 40 (bytes) Number of section headers: 28 Section header string table index: 25 -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils