Date: Wed, 11 Aug 2010 13:23:34 +0200 From: Matthias Reyelt <Matthias.Reyelt@brunel.de> To: freebsd-arm@freebsd.org Subject: Cross compiling for FreeBSD/ARM on cygwin? Message-ID: <201008111323.36267.Matthias.Reyelt@brunel.de>
next in thread | raw e-mail | index | archive | help
Hi, I have tried to build a cross-compiler environment for FreeBSD/ARM on cygwin. I have built a gcc toolchain for cygwin and I can compile a test program: ------------------------------------------------------------------------------------------ ./arm-unknown-freebsd8.0-gcc -c -v -Wa,-mfloat-abi=softfp,-mfpu=vfp -Wl,--eh-frame-hdr,-X main.c ---> test.o ------------------------------------------------------------------------------------------ I can link this object file on the ARM (Marvell db-78xxx) and the resulting binary runs fine: ------------------------------------------------------------------------------------------ ld --eh-frame-hdr -V -dynamic-linker /libexec/ld-elf.so.1 -X /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/lib -L/usr/lib -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/crtend.o /usr/lib/crtn.o test.o ------------------------------------------------------------------------------------------ I haven't yet managed to do the linking under cygwin: ------------------------------------------------------------------------------------- /usr/local/bin/arm-unknown-freebsd8.0-ld.exe --eh-frame-hdr -V -dynamic-linker /usr/local/arm-unknown-freebsd8.0/libexec/ld-elf.so.1 -X /usr/local/arm-unknown-freebsd8.0/lib/crt1.o /usr/local/arm-unknown-freebsd8.0/lib/crti.o /usr/local/arm-unknown-freebsd8.0/lib/crtbegin.o -L/usr/local/arm-unknown-freebsd8.0/lib -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/local/arm-unknown-freebsd8.0/lib/crtend.o /usr/local/arm-unknown-freebsd8.0/lib/crtn.o test.o ------------------------------------------------------------------------------------------ When I try to run the resulting binary, I get the message: "Exec format error. Binary not executable" I have copied the crt1.o and the other files from the ARM target. Any idea what is missing? Matthias readelf on the binary looks like this: ------------------------------------------------------------------------------------------- ELF Header: Magic: 7f 45 4c 46 01 01 01 61 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: ARM ABI Version: 0 Type: EXEC (Executable file) Machine: ARM Version: 0x1 Entry point address: 0x8234 Start of program headers: 52 (bytes into file) Start of section headers: 35128 (bytes into file) Flags: 0x602, has entry point, GNU EABI, software FP, <unknown> Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 5 Size of section headers: 40 (bytes) Number of section headers: 28 Section header string table index: 25 Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .interp PROGBITS 00008000 008000 000036 00 A 0 0 1 [ 2] .note.ABI-tag NOTE 00008038 008038 000018 00 A 0 0 4 [ 3] .hash HASH 00008050 008050 000038 04 A 4 0 4 [ 4] .dynsym DYNSYM 00008088 008088 000090 10 A 5 1 4 [ 5] .dynstr STRTAB 00008118 008118 000058 00 A 0 0 1 [ 6] .gnu.version VERSYM 00008170 008170 000012 02 A 4 0 2 [ 7] .gnu.version_r VERNEED 00008184 008184 000020 00 A 5 1 4 [ 8] .rel.plt REL 000081a4 0081a4 000020 08 A 4 a 4 [ 9] .init PROGBITS 000081d0 0081d0 000020 00 AX 0 0 16 [10] .plt PROGBITS 000081f0 0081f0 000044 04 AX 0 0 4 [11] .text PROGBITS 00008234 008234 000254 00 AX 0 0 4 [12] .fini PROGBITS 00008490 008490 00001c 00 AX 0 0 16 [13] .rodata PROGBITS 000084ac 0084ac 000018 00 A 0 0 4 [14] .data PROGBITS 000085c4 0085c4 000014 00 WA 0 0 4 [15] .eh_frame PROGBITS 000085d8 0085d8 000004 00 A 0 0 4 [16] .dynamic DYNAMIC 000085dc 0085dc 0000b0 08 WA 5 0 4 [17] .ctors PROGBITS 0000868c 00868c 000008 00 WA 0 0 4 [18] .dtors PROGBITS 00008694 008694 000008 00 WA 0 0 4 [19] .jcr PROGBITS 0000869c 00869c 000004 00 WA 0 0 4 [20] .got PROGBITS 000086a0 0086a0 00001c 04 WA 0 0 4 [21] .bss NOBITS 000086bc 0086bc 00000c 00 WA 0 0 4 [22] .comment PROGBITS 00000000 0086bc 0001a2 00 0 0 1 [23] .stack PROGBITS 00080000 00885e 000000 00 W 0 0 1 [24] .arm.atpcs PROGBITS 00000000 00885e 000000 00 0 0 1 [25] .shstrtab STRTAB 00000000 00885e 0000d7 00 0 0 1 [26] .symtab SYMTAB 00000000 008d98 000740 10 27 5b 4 [27] .strtab STRTAB 00000000 0094d8 000313 00 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align PHDR 0x000034 0x00008034 0x00000000 0x000a0 0x000a0 R E 0x4 INTERP 0x008000 0x00008000 0x00008000 0x00036 0x00036 R 0x1 [Requesting program interpreter: /usr/local/arm-unknown-freebsd8.0/libexec/ld-elf.so.1] LOAD 0x008000 0x00008000 0x00008000 0x006bc 0x006c8 RWE 0x8000 DYNAMIC 0x0085dc 0x000085dc 0x000085dc 0x000b0 0x000b0 RW 0x4 NOTE 0x008038 0x00008038 0x00008038 0x00018 0x00018 R 0x4 Section to Segment mapping: Segment Sections... 00 .note.ABI-tag .hash 01 .interp 02 .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.plt .init .plt .text .fini .rodata .data .eh_frame .dynamic .ctors .dtors .jcr .got .bss 03 .dynamic 04 .note.ABI-tag Dynamic segment at offset 0x85dc contains 17 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libc.so.7] 0x0000000c (INIT) 0x81d0 0x0000000d (FINI) 0x8490 0x00000004 (HASH) 0x8050 0x00000005 (STRTAB) 0x8118 0x00000006 (SYMTAB) 0x8088 0x0000000a (STRSZ) 88 (bytes) 0x0000000b (SYMENT) 16 (bytes) 0x00000015 (DEBUG) 0x0 0x00000003 (PLTGOT) 0x86a0 0x00000002 (PLTRELSZ) 32 (bytes) 0x00000014 (PLTREL) REL 0x00000017 (JMPREL) 0x81a4 0x6ffffffe (VERNEED) 0x8184 0x6fffffff (VERNEEDNUM) 1 0x6ffffff0 (VERSYM) 0x8170 0x00000000 (NULL) 0x0 Relocation section '.rel.plt' at offset 0x81a4 contains 4 entries: Offset Info Type Sym.Value Sym. Name 000086ac 00000116 R_ARM_JUMP_SLOT 00008204 _init_tls 000086b0 00000416 R_ARM_JUMP_SLOT 00008210 printf 000086b4 00000516 R_ARM_JUMP_SLOT 0000821c exit 000086b8 00000716 R_ARM_JUMP_SLOT 00008228 atexit There are no unwind sections in this file. Symbol table '.dynsym' contains 9 entries: Num: Value Size Type Bind Vis Ndx Name 0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 00008204 4 FUNC GLOBAL DEFAULT UND _init_tls@FBSD_1.0 (2) 2: 000086c0 4 OBJECT GLOBAL DEFAULT 21 environ 3: 000085c4 4 OBJECT GLOBAL DEFAULT 14 __progname 4: 00008210 72 FUNC GLOBAL DEFAULT UND printf@FBSD_1.0 (2) 5: 0000821c 92 FUNC GLOBAL DEFAULT UND exit@FBSD_1.0 (2) 6: 000086c8 0 NOTYPE GLOBAL DEFAULT ABS _end 7: 00008228 56 FUNC GLOBAL DEFAULT UND atexit@FBSD_1.0 (2) 8: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses Symbol table '.symtab' contains 116 entries: Num: Value Size Type Bind Vis Ndx Name 0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 00008000 0 SECTION LOCAL DEFAULT 1 2: 00008038 0 SECTION LOCAL DEFAULT 2 3: 00008050 0 SECTION LOCAL DEFAULT 3 4: 00008088 0 SECTION LOCAL DEFAULT 4 5: 00008118 0 SECTION LOCAL DEFAULT 5 6: 00008170 0 SECTION LOCAL DEFAULT 6 7: 00008184 0 SECTION LOCAL DEFAULT 7 8: 000081a4 0 SECTION LOCAL DEFAULT 8 9: 000081d0 0 SECTION LOCAL DEFAULT 9 10: 000081f0 0 SECTION LOCAL DEFAULT 10 11: 00008234 0 SECTION LOCAL DEFAULT 11 12: 00008490 0 SECTION LOCAL DEFAULT 12 13: 000084ac 0 SECTION LOCAL DEFAULT 13 14: 000085c4 0 SECTION LOCAL DEFAULT 14 15: 000085d8 0 SECTION LOCAL DEFAULT 15 16: 000085dc 0 SECTION LOCAL DEFAULT 16 17: 0000868c 0 SECTION LOCAL DEFAULT 17 18: 00008694 0 SECTION LOCAL DEFAULT 18 19: 0000869c 0 SECTION LOCAL DEFAULT 19 20: 000086a0 0 SECTION LOCAL DEFAULT 20 21: 000086bc 0 SECTION LOCAL DEFAULT 21 22: 00000000 0 SECTION LOCAL DEFAULT 22 23: 00080000 0 SECTION LOCAL DEFAULT 23 24: 00000000 0 SECTION LOCAL DEFAULT 24 25: 00000000 0 SECTION LOCAL DEFAULT 25 26: 00000000 0 SECTION LOCAL DEFAULT 26 27: 00000000 0 SECTION LOCAL DEFAULT 27 28: 00000000 0 FILE LOCAL DEFAULT ABS crt1.c 29: 00008234 0 FUNC LOCAL DEFAULT 11 $a 30: 00008310 0 OBJECT LOCAL DEFAULT 11 $d 31: 000085c4 0 OBJECT LOCAL DEFAULT 14 $d 32: 00008038 24 OBJECT LOCAL DEFAULT 2 abitag 33: 00008038 0 OBJECT LOCAL DEFAULT 2 $d 34: 00000000 0 FILE LOCAL DEFAULT ABS /root/ARM/head/lib/csu/ar 35: 00000000 0 FILE LOCAL DEFAULT ABS /usr/obj/arm/root/ARM/hea 36: 00000000 0 FILE LOCAL DEFAULT ABS /usr/obj/arm/root/ARM/hea 37: 00000000 0 FILE LOCAL DEFAULT ABS /usr/obj/arm/root/ARM/hea 38: 00000000 0 FILE LOCAL DEFAULT ABS /root/ARM/head/lib/csu/ar 39: 00000000 0 FILE LOCAL DEFAULT ABS <command-line> 40: 00000000 0 FILE LOCAL DEFAULT ABS <built-in> 41: 00000000 0 FILE LOCAL DEFAULT ABS /root/ARM/head/lib/csu/ar 42: 000081d0 0 FUNC LOCAL DEFAULT 9 $a 43: 00008490 0 FUNC LOCAL DEFAULT 12 $a 44: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c 45: 000085c8 0 OBJECT LOCAL DEFAULT 14 force_to_data 46: 0000868c 0 OBJECT LOCAL DEFAULT 17 __CTOR_LIST__ 47: 0000868c 0 OBJECT LOCAL DEFAULT 17 $d 48: 00008694 0 OBJECT LOCAL DEFAULT 18 __DTOR_LIST__ 49: 00008694 0 OBJECT LOCAL DEFAULT 18 $d 50: 0000869c 0 OBJECT LOCAL DEFAULT 19 __JCR_LIST__ 51: 00008324 0 FUNC LOCAL DEFAULT 11 __do_global_dtors_aux 52: 00008324 0 FUNC LOCAL DEFAULT 11 $a 53: 00008388 0 OBJECT LOCAL DEFAULT 11 $d 54: 000086bc 1 OBJECT LOCAL DEFAULT 21 completed.4826 55: 000085d0 0 OBJECT LOCAL DEFAULT 14 p.4824 56: 00008390 0 FUNC LOCAL DEFAULT 11 call___do_global_dtors_au 57: 00008390 0 FUNC LOCAL DEFAULT 11 $a 58: 000084a0 0 FUNC LOCAL DEFAULT 12 $a 59: 000083a0 0 FUNC LOCAL DEFAULT 11 frame_dummy 60: 000083d0 0 OBJECT LOCAL DEFAULT 11 $d 61: 000083d8 0 FUNC LOCAL DEFAULT 11 call_frame_dummy 62: 000083d8 0 FUNC LOCAL DEFAULT 11 $a 63: 000081e0 0 FUNC LOCAL DEFAULT 9 $a 64: 000085d0 0 OBJECT LOCAL DEFAULT 14 $d 65: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c 66: 000085d4 0 OBJECT LOCAL DEFAULT 14 force_to_data 67: 00008690 0 OBJECT LOCAL DEFAULT 17 __CTOR_END__ 68: 00008698 0 OBJECT LOCAL DEFAULT 18 __DTOR_END__ 69: 000085d8 0 OBJECT LOCAL DEFAULT 15 __FRAME_END__ 70: 0000869c 0 OBJECT LOCAL DEFAULT 19 __JCR_END__ 71: 000083e8 0 FUNC LOCAL DEFAULT 11 __do_global_ctors_aux 72: 000083e8 0 FUNC LOCAL DEFAULT 11 $a 73: 00008424 0 OBJECT LOCAL DEFAULT 11 $d 74: 00008428 0 FUNC LOCAL DEFAULT 11 call___do_global_ctors_au 75: 00008428 0 FUNC LOCAL DEFAULT 11 $a 76: 000081e4 0 FUNC LOCAL DEFAULT 9 $a 77: 00000000 0 FILE LOCAL DEFAULT ABS /root/ARM/head/lib/csu/ar 78: 00000000 0 FILE LOCAL DEFAULT ABS /usr/obj/arm/root/ARM/hea 79: 00000000 0 FILE LOCAL DEFAULT ABS /usr/obj/arm/root/ARM/hea 80: 00000000 0 FILE LOCAL DEFAULT ABS /usr/obj/arm/root/ARM/hea 81: 00000000 0 FILE LOCAL DEFAULT ABS /root/ARM/head/lib/csu/ar 82: 00000000 0 FILE LOCAL DEFAULT ABS <command-line> 83: 00000000 0 FILE LOCAL DEFAULT ABS <built-in> 84: 00000000 0 FILE LOCAL DEFAULT ABS /root/ARM/head/lib/csu/ar 85: 000081e8 0 FUNC LOCAL DEFAULT 9 $a 86: 000084a4 0 FUNC LOCAL DEFAULT 12 $a 87: 00000000 0 FILE LOCAL DEFAULT ABS test.c 88: 000084b0 0 NOTYPE LOCAL DEFAULT 13 $d 89: 00008438 0 NOTYPE LOCAL DEFAULT 11 $a 90: 00008484 0 NOTYPE LOCAL DEFAULT 11 $d 91: 000085dc 0 OBJECT GLOBAL DEFAULT 16 _DYNAMIC 92: 000086c8 0 NOTYPE GLOBAL DEFAULT ABS _bss_end__ 93: 000086bc 0 NOTYPE GLOBAL DEFAULT ABS __bss_start__ 94: 000085cc 0 OBJECT GLOBAL HIDDEN 14 __dso_handle 95: 00008204 4 FUNC GLOBAL DEFAULT UND _init_tls@@FBSD_1.0 96: 000081d0 0 FUNC GLOBAL DEFAULT 9 _init 97: 000086c0 4 OBJECT GLOBAL DEFAULT 21 environ 98: 00008264 192 FUNC GLOBAL DEFAULT 11 __start 99: 000086c8 0 NOTYPE GLOBAL DEFAULT ABS __bss_end__ 100: 000085c4 4 OBJECT GLOBAL DEFAULT 14 __progname 101: 00008234 0 NOTYPE GLOBAL DEFAULT 11 _start 102: 00008210 72 FUNC GLOBAL DEFAULT UND printf@@FBSD_1.0 103: 000086bc 0 NOTYPE GLOBAL DEFAULT ABS __bss_start 104: 00008438 80 FUNC GLOBAL DEFAULT 11 main 105: 000086c8 0 NOTYPE GLOBAL DEFAULT ABS __end__ 106: 00008490 0 FUNC GLOBAL DEFAULT 12 _fini 107: 0000821c 92 FUNC GLOBAL DEFAULT UND exit@@FBSD_1.0 108: 000086bc 0 NOTYPE GLOBAL DEFAULT ABS _edata 109: 000086a0 0 OBJECT GLOBAL DEFAULT 20 _GLOBAL_OFFSET_TABLE_ 110: 000086c8 0 NOTYPE GLOBAL DEFAULT ABS _end 111: 000086c4 4 OBJECT GLOBAL DEFAULT 21 __ps_strings 112: 00008228 56 FUNC GLOBAL DEFAULT UND atexit@@FBSD_1.0 113: 00080000 0 NOTYPE GLOBAL DEFAULT 23 _stack 114: 000085c4 0 NOTYPE GLOBAL DEFAULT 14 __data_start 115: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses Histogram for bucket list length (total of 3 buckets): Length Number % of total Coverage 0 0 ( 0.0%) 1 1 ( 33.3%) 12.5% 2 0 ( 0.0%) 12.5% 3 1 ( 33.3%) 50.0% 4 1 ( 33.3%) 100.0% Version symbols section '.gnu.version' contains 9 entries: Addr: 0000000000008170 Offset: 0x008170 Link: 4 (.dynsym) 000: 0 (*local*) 2 (FBSD_1.0) 1 (*global*) 1 (*global*) 004: 2 (FBSD_1.0) 2 (FBSD_1.0) 1 (*global*) 2 (FBSD_1.0) 008: 0 (*local*) Version needs section '.gnu.version_r' contains 1 entries: Addr: 0x0000000000008184 Offset: 0x008184 Link to section: 5 (.dynstr) 000000: Version: 1 File: libc.so.7 Cnt: 1 0x0010: Name: FBSD_1.0 Flags: none Version: 2
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008111323.36267.Matthias.Reyelt>