https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66239
--- Comment #1 from Maciej Andrzejewski <maciej.andrzejewski at data dot pl> --- It is getting even more interesting. I have disassabled 4 binaries compiled with options: 1) -mfloat-abi=softfp 2) -mfloat-abi=softfp -O 3) -mfloat-abi=hard 4) -mfloat-abi=hard -O and from what I understand if we turn ON the optimization the FPU is turned OFF! I dont see in assembler that FPU s** registers are used in those two cases where optimization is turned on: -- DISASSAMBLE OPTION 1 -- 00010570 <main>: 10570: e92d4800 push {fp, lr} 10574: e28db004 add fp, sp, #4 10578: e24dd040 sub sp, sp, #64 ; 0x40 1057c: e3032333 movw r2, #13107 ; 0x3333 10580: e3432333 movt r2, #13107 ; 0x3333 10584: e3033333 movw r3, #13107 ; 0x3333 10588: e3443022 movt r3, #16418 ; 0x4022 1058c: e14b20fc strd r2, [fp, #-12] 10590: ed5b0b03 vldr d16, [fp, #-12] 10594: eef77be0 vcvt.f32.f64 s15, d16 10598: ee170a90 vmov r0, s15 1059c: ebffffa1 bl 10428 <sqrtf@plt> 105a0: ee070a90 vmov s15, r0 105a4: eef70ae7 vcvt.f64.f32 d16, s15 105a8: ed4b0b05 vstr d16, [fp, #-20] ; 0xffffffec 105ac: e30006cc movw r0, #1740 ; 0x6cc 105b0: e3400001 movt r0, #1 105b4: e14b21d4 ldrd r2, [fp, #-20] ; 0xffffffec 105b8: ebffffa0 bl 10440 <printf@plt> 105bc: e309399a movw r3, #39322 ; 0x999a 105c0: e3443111 movt r3, #16657 ; 0x4111 105c4: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 105c8: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 105cc: ebffff95 bl 10428 <sqrtf@plt> 105d0: ee070a90 vmov s15, r0 105d4: eef70ae7 vcvt.f64.f32 d16, s15 105d8: ed4b0b09 vstr d16, [fp, #-36] ; 0xffffffdc 105dc: e30006cc movw r0, #1740 ; 0x6cc 105e0: e3400001 movt r0, #1 105e4: e14b22d4 ldrd r2, [fp, #-36] ; 0xffffffdc 105e8: ebffff94 bl 10440 <printf@plt> 105ec: e3032333 movw r2, #13107 ; 0x3333 105f0: e3432333 movt r2, #13107 ; 0x3333 105f4: e3033333 movw r3, #13107 ; 0x3333 105f8: e3443022 movt r3, #16418 ; 0x4022 105fc: e14b22fc strd r2, [fp, #-44] ; 0xffffffd4 10600: e14b02dc ldrd r0, [fp, #-44] ; 0xffffffd4 10604: ebffff8a bl 10434 <sqrt@plt> 10608: e14b03f4 strd r0, [fp, #-52] ; 0xffffffcc 1060c: e30006cc movw r0, #1740 ; 0x6cc 10610: e3400001 movt r0, #1 10614: e14b23d4 ldrd r2, [fp, #-52] ; 0xffffffcc 10618: ebffff88 bl 10440 <printf@plt> 1061c: e309399a movw r3, #39322 ; 0x999a 10620: e3443111 movt r3, #16657 ; 0x4111 10624: e50b3038 str r3, [fp, #-56] ; 0xffffffc8 10628: ed5b7a0e vldr s15, [fp, #-56] ; 0xffffffc8 1062c: eef70ae7 vcvt.f64.f32 d16, s15 10630: ec510b30 vmov r0, r1, d16 10634: ebffff7e bl 10434 <sqrt@plt> 10638: e14b04f4 strd r0, [fp, #-68] ; 0xffffffbc 1063c: e30006cc movw r0, #1740 ; 0x6cc 10640: e3400001 movt r0, #1 10644: e14b24d4 ldrd r2, [fp, #-68] ; 0xffffffbc 10648: ebffff7c bl 10440 <printf@plt> 1064c: e3a03000 mov r3, #0 10650: e1a00003 mov r0, r3 10654: e24bd004 sub sp, fp, #4 10658: e8bd8800 pop {fp, pc} -- DISASSAMBLE OPTION 1 -- -- DISASSAMBLE OPTION 2 -- 000104f4 <main>: 104f4: e92d40d0 push {r4, r6, r7, lr} 104f8: e30045d4 movw r4, #1492 ; 0x5d4 104fc: e3404001 movt r4, #1 10500: e3a06000 mov r6, #0 10504: e302720a movw r7, #8714 ; 0x220a 10508: e3447008 movt r7, #16392 ; 0x4008 1050c: e1a00004 mov r0, r4 10510: e1a02006 mov r2, r6 10514: e1a03007 mov r3, r7 10518: ebffffa9 bl 103c4 <printf@plt> 1051c: e1a00004 mov r0, r4 10520: e1a02006 mov r2, r6 10524: e1a03007 mov r3, r7 10528: ebffffa5 bl 103c4 <printf@plt> 1052c: e1a00004 mov r0, r4 10530: e30f2d38 movw r2, #64824 ; 0xfd38 10534: e34f2ea1 movt r2, #65185 ; 0xfea1 10538: e3023209 movw r3, #8713 ; 0x2209 1053c: e3443008 movt r3, #16392 ; 0x4008 10540: ebffff9f bl 103c4 <printf@plt> 10544: e1a00004 mov r0, r4 10548: e3072c82 movw r2, #31874 ; 0x7c82 1054c: e340271e movt r2, #1822 ; 0x71e 10550: e302320a movw r3, #8714 ; 0x220a 10554: e3443008 movt r3, #16392 ; 0x4008 10558: ebffff99 bl 103c4 <printf@plt> 1055c: e3a00000 mov r0, #0 10560: e8bd80d0 pop {r4, r6, r7, pc} -- DISASSAMBLE OPTION 2 -- -- DISASSAMBLE OPTION 3 -- 00008578 <main>: 8578: e92d4800 push {fp, lr} 857c: e28db004 add fp, sp, #4 8580: e24dd040 sub sp, sp, #64 ; 0x40 8584: e3032333 movw r2, #13107 ; 0x3333 8588: e3432333 movt r2, #13107 ; 0x3333 858c: e3033333 movw r3, #13107 ; 0x3333 8590: e3443022 movt r3, #16418 ; 0x4022 8594: e14b20fc strd r2, [fp, #-12] 8598: ed5b0b03 vldr d16, [fp, #-12] 859c: eef77be0 vcvt.f32.f64 s15, d16 85a0: eeb00a67 vmov.f32 s0, s15 85a4: ebffffa1 bl 8430 <_init+0x44> 85a8: eef07a40 vmov.f32 s15, s0 85ac: eef70ae7 vcvt.f64.f32 d16, s15 85b0: ed4b0b05 vstr d16, [fp, #-20] ; 0xffffffec 85b4: e30806d4 movw r0, #34516 ; 0x86d4 85b8: e3400000 movt r0, #0 85bc: e14b21d4 ldrd r2, [fp, #-20] ; 0xffffffec 85c0: ebffffa0 bl 8448 <_init+0x5c> 85c4: e309399a movw r3, #39322 ; 0x999a 85c8: e3443111 movt r3, #16657 ; 0x4111 85cc: e50b3018 str r3, [fp, #-24] 85d0: ed1b0a06 vldr s0, [fp, #-24] ; 0xffffffe8 85d4: ebffff95 bl 8430 <_init+0x44> 85d8: eef07a40 vmov.f32 s15, s0 85dc: eef70ae7 vcvt.f64.f32 d16, s15 85e0: ed4b0b09 vstr d16, [fp, #-36] ; 0xffffffdc 85e4: e30806d4 movw r0, #34516 ; 0x86d4 85e8: e3400000 movt r0, #0 85ec: e14b22d4 ldrd r2, [fp, #-36] ; 0xffffffdc 85f0: ebffff94 bl 8448 <_init+0x5c> 85f4: e3032333 movw r2, #13107 ; 0x3333 85f8: e3432333 movt r2, #13107 ; 0x3333 85fc: e3033333 movw r3, #13107 ; 0x3333 8600: e3443022 movt r3, #16418 ; 0x4022 8604: e14b22fc strd r2, [fp, #-44] ; 0xffffffd4 8608: ed1b0b0b vldr d0, [fp, #-44] ; 0xffffffd4 860c: ebffff8a bl 843c <_init+0x50> 8610: ed0b0b0d vstr d0, [fp, #-52] ; 0xffffffcc 8614: e30806d4 movw r0, #34516 ; 0x86d4 8618: e3400000 movt r0, #0 861c: e14b23d4 ldrd r2, [fp, #-52] ; 0xffffffcc 8620: ebffff88 bl 8448 <_init+0x5c> 8624: e309399a movw r3, #39322 ; 0x999a 8628: e3443111 movt r3, #16657 ; 0x4111 862c: e50b3038 str r3, [fp, #-56] ; 0x38 8630: ed5b7a0e vldr s15, [fp, #-56] ; 0xffffffc8 8634: eef70ae7 vcvt.f64.f32 d16, s15 8638: eeb00b60 vmov.f64 d0, d16 863c: ebffff7e bl 843c <_init+0x50> 8640: ed0b0b11 vstr d0, [fp, #-68] ; 0xffffffbc 8644: e30806d4 movw r0, #34516 ; 0x86d4 8648: e3400000 movt r0, #0 864c: e14b24d4 ldrd r2, [fp, #-68] ; 0xffffffbc 8650: ebffff7c bl 8448 <_init+0x5c> 8654: e3a03000 mov r3, #0 8658: e1a00003 mov r0, r3 865c: e24bd004 sub sp, fp, #4 8660: e8bd8800 pop {fp, pc} -- DISASSAMBLE OPTION 3 -- -- DISASSAMBLE OPTION 4 -- 000084fc <main>: 84fc: e92d40d0 push {r4, r6, r7, lr} 8500: e30845dc movw r4, #34268 ; 0x85dc 8504: e3404000 movt r4, #0 8508: e3a06000 mov r6, #0 850c: e302720a movw r7, #8714 ; 0x220a 8510: e3447008 movt r7, #16392 ; 0x4008 8514: e1a00004 mov r0, r4 8518: e1a02006 mov r2, r6 851c: e1a03007 mov r3, r7 8520: ebffffa9 bl 83cc <_init+0x44> 8524: e1a00004 mov r0, r4 8528: e1a02006 mov r2, r6 852c: e1a03007 mov r3, r7 8530: ebffffa5 bl 83cc <_init+0x44> 8534: e1a00004 mov r0, r4 8538: e30f2d38 movw r2, #64824 ; 0xfd38 853c: e34f2ea1 movt r2, #65185 ; 0xfea1 8540: e3023209 movw r3, #8713 ; 0x2209 8544: e3443008 movt r3, #16392 ; 0x4008 8548: ebffff9f bl 83cc <_init+0x44> 854c: e1a00004 mov r0, r4 8550: e3072c82 movw r2, #31874 ; 0x7c82 8554: e340271e movt r2, #1822 ; 0x71e 8558: e302320a movw r3, #8714 ; 0x220a 855c: e3443008 movt r3, #16392 ; 0x4008 8560: ebffff99 bl 83cc <_init+0x44> 8564: e3a00000 mov r0, #0 8568: e8bd80d0 pop {r4, r6, r7, pc} -- DISASSAMBLE OPTION 4 -- (In reply to Maciej Andrzejewski from comment #0) > Tested both on GCC 4.9.1 (compiled toolchain using crosstool-ng) and 4.9.2 > (compiled toolchain using buildroot). > > Simple code: > > -- CODE -- > #include <stdio.h> > #include <cmath> > #include <math.h> > > > int main( void ) > { > double sq3 = 9.1; > double ret3 = sqrtf(sq3); > printf("%f\n", ret3); > > float sq4 = 9.1; > double ret4 = sqrtf(sq4); > printf("%f\n", ret4); > > double sq1 = 9.1; > double ret1 = sqrt(sq1); > printf("%f\n", ret1); > > float sq2 = 9.1; > double ret2 = sqrt(sq2); > printf("%f\n", ret2); > > return 0; > } > -- CODE -- > > compiled with command: > g++ -mcpu=cortex-a8 -march=armv7-a -mtune=cortex-a8 -mfpu=neon > -mthumb-interwork -mfpu=neon -Wall -Wextra -mfloat-abi=softfp > > or > > g++ -mcpu=cortex-a8 -march=armv7-a -mtune=cortex-a8 -mfpu=neon > -mthumb-interwork -mfpu=neon -Wall -Wextra -mfloat-abi=soft > > prints output when run: > -- OUTPUT -- > 0.000000 > 0.000000 > 89884613882771507935772421602449274280826426490922860415370742828850803088708 > 43656890933893326861538272573183614877997670352187692139688355386197138142676 > 33945847309741616433412271681163246268102419739642257742722331754068434663711 > 41886318608237834273423597057507238373804952327520531541920130815989439791104 > .000000 > 89884613882771507935772421602449274280826426490922860415370742828850803088708 > 43656890933893326861538272573183614877997670352187692139688355386197138142676 > 33945847309741616433412271681163246268102419739642257742722331754068434663711 > 41886318608237834273423597057507238373804952327520531541920130815989439791104 > .000000 > -- OUTPUT -- > > when compiled with added ANY optimization flag (O, O1, O2, O3, Og) prints > proper output: > -- OUTPUT 2 -- > 3.016621 > 3.016621 > 3.016621 > 3.016621 > -- OUTPUT 2 -- > > > > > *** Additional info *** > > g++ --version: > arm-none-linux-gnueabi-g++ (Buildroot 2015.02) 4.9.2 > > readelf -a a.out: > -- READELF -- > macieja@ubuntu:~/Projects/sqrtf$ readelf -a a.out > 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: 0x103d0 > Start of program headers: 52 (bytes into file) > Start of section headers: 5012 (bytes into file) > Flags: 0x5000202, has entry point, Version5 > EABI, soft-float ABI > Size of this header: 52 (bytes) > Size of program headers: 32 (bytes) > Number of program headers: 8 > Size of section headers: 40 (bytes) > Number of section headers: 29 > Section header string table index: 26 > > 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 00010134 000134 000013 00 A 0 > 0 1 > [ 2] .note.ABI-tag NOTE 00010148 000148 000020 00 A 0 > 0 4 > [ 3] .hash HASH 00010168 000168 000038 04 A 4 > 0 4 > [ 4] .dynsym DYNSYM 000101a0 0001a0 000090 10 A 5 > 1 4 > [ 5] .dynstr STRTAB 00010230 000230 0000d3 00 A 0 > 0 1 > [ 6] .gnu.version VERSYM 00010304 000304 000012 02 A 4 > 0 2 > [ 7] .gnu.version_r VERNEED 00010318 000318 000040 00 A 5 > 2 4 > [ 8] .rel.dyn REL 00010358 000358 000008 08 A 4 > 0 4 > [ 9] .rel.plt REL 00010360 000360 000020 08 AI 4 > 11 4 > [10] .init PROGBITS 00010380 000380 00000c 00 AX 0 > 0 4 > [11] .plt PROGBITS 0001038c 00038c 000044 04 AX 0 > 0 4 > [12] .text PROGBITS 000103d0 0003d0 0001f8 00 AX 0 > 0 4 > [13] .fini PROGBITS 000105c8 0005c8 000008 00 AX 0 > 0 4 > [14] .rodata PROGBITS 000105d0 0005d0 000008 00 A 0 > 0 4 > [15] .ARM.exidx ARM_EXIDX 000105d8 0005d8 000018 00 AL 12 > 0 4 > [16] .eh_frame PROGBITS 000105f0 0005f0 000004 00 A 0 > 0 4 > [17] .init_array INIT_ARRAY 000205f4 0005f4 000004 00 WA 0 > 0 4 > [18] .fini_array FINI_ARRAY 000205f8 0005f8 000004 00 WA 0 > 0 4 > [19] .jcr PROGBITS 000205fc 0005fc 000004 00 WA 0 > 0 4 > [20] .dynamic DYNAMIC 00020600 000600 000100 08 WA 5 > 0 4 > [21] .got PROGBITS 00020700 000700 000020 04 WA 0 > 0 4 > [22] .data PROGBITS 00020720 000720 000008 00 WA 0 > 0 4 > [23] .bss NOBITS 00020728 000728 000004 00 WA 0 > 0 1 > [24] .comment PROGBITS 00000000 000728 00001f 01 MS 0 > 0 1 > [25] .ARM.attributes ARM_ATTRIBUTES 00000000 000747 000037 00 0 > 0 1 > [26] .shstrtab STRTAB 00000000 00077e 0000f3 00 0 > 0 1 > [27] .symtab SYMTAB 00000000 000874 000700 10 28 > 86 4 > [28] .strtab STRTAB 00000000 000f74 00041e 00 0 > 0 1 > Key to Flags: > W (write), A (alloc), X (execute), M (merge), S (strings) > I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) > O (extra OS processing required) o (OS specific), p (processor specific) > > There are no section groups in this file. > > Program Headers: > Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align > EXIDX 0x0005d8 0x000105d8 0x000105d8 0x00018 0x00018 R 0x4 > PHDR 0x000034 0x00010034 0x00010034 0x00100 0x00100 R E 0x4 > INTERP 0x000134 0x00010134 0x00010134 0x00013 0x00013 R 0x1 > [Requesting program interpreter: /lib/ld-linux.so.3] > LOAD 0x000000 0x00010000 0x00010000 0x005f4 0x005f4 R E 0x10000 > LOAD 0x0005f4 0x000205f4 0x000205f4 0x00134 0x00138 RW 0x10000 > DYNAMIC 0x000600 0x00020600 0x00020600 0x00100 0x00100 RW 0x4 > NOTE 0x000148 0x00010148 0x00010148 0x00020 0x00020 R 0x4 > GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10 > > Section to Segment mapping: > Segment Sections... > 00 .ARM.exidx > 01 > 02 .interp > 03 .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version > .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .ARM.exidx > .eh_frame > 04 .init_array .fini_array .jcr .dynamic .got .data .bss > 05 .dynamic > 06 .note.ABI-tag > 07 > > Dynamic section at offset 0x600 contains 27 entries: > Tag Type Name/Value > 0x00000001 (NEEDED) Shared library: [libstdc++.so.6] > 0x00000001 (NEEDED) Shared library: [libm.so.6] > 0x00000001 (NEEDED) Shared library: [libgcc_s.so.1] > 0x00000001 (NEEDED) Shared library: [libc.so.6] > 0x0000000c (INIT) 0x10380 > 0x0000000d (FINI) 0x105c8 > 0x00000019 (INIT_ARRAY) 0x205f4 > 0x0000001b (INIT_ARRAYSZ) 4 (bytes) > 0x0000001a (FINI_ARRAY) 0x205f8 > 0x0000001c (FINI_ARRAYSZ) 4 (bytes) > 0x00000004 (HASH) 0x10168 > 0x00000005 (STRTAB) 0x10230 > 0x00000006 (SYMTAB) 0x101a0 > 0x0000000a (STRSZ) 211 (bytes) > 0x0000000b (SYMENT) 16 (bytes) > 0x00000015 (DEBUG) 0x0 > 0x00000003 (PLTGOT) 0x20700 > 0x00000002 (PLTRELSZ) 32 (bytes) > 0x00000014 (PLTREL) REL > 0x00000017 (JMPREL) 0x10360 > 0x00000011 (REL) 0x10358 > 0x00000012 (RELSZ) 8 (bytes) > 0x00000013 (RELENT) 8 (bytes) > 0x6ffffffe (VERNEED) 0x10318 > 0x6fffffff (VERNEEDNUM) 2 > 0x6ffffff0 (VERSYM) 0x10304 > 0x00000000 (NULL) 0x0 > > Relocation section '.rel.dyn' at offset 0x358 contains 1 entries: > Offset Info Type Sym.Value Sym. Name > 0002071c 00000415 R_ARM_GLOB_DAT 00000000 __gmon_start__ > > Relocation section '.rel.plt' at offset 0x360 contains 4 entries: > Offset Info Type Sym.Value Sym. Name > 0002070c 00000116 R_ARM_JUMP_SLOT 00000000 abort > 00020710 00000216 R_ARM_JUMP_SLOT 00000000 __libc_start_main > 00020714 00000416 R_ARM_JUMP_SLOT 00000000 __gmon_start__ > 00020718 00000816 R_ARM_JUMP_SLOT 00000000 printf > > Unwind table index '.ARM.exidx' at offset 0x5d8 contains 3 entries: > > 0x103d0 <_start>: 0x1 [cantunwind] > > 0x104f4 <main>: 0x80840db0 > Compact model index: 0 > 0x84 0x0d pop {r4, r6, r7, r14} > 0xb0 finish > > 0x10564 <__libc_csu_init>: 0x1 [cantunwind] > > > Symbol table '.dynsym' contains 9 entries: > Num: Value Size Type Bind Vis Ndx Name > 0: 00000000 0 NOTYPE LOCAL DEFAULT UND > 1: 00000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.4 (2) > 2: 00000000 0 FUNC GLOBAL DEFAULT UND > __libc_start_main@GLIBC_2.4 (2) > 3: 00000000 0 FUNC GLOBAL DEFAULT UND > __aeabi_unwind_cpp_pr0@GCC_3.5 (3) > 4: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ > 5: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses > 6: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab > 7: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable > 8: 00000000 0 FUNC GLOBAL DEFAULT UND printf@GLIBC_2.4 (2) > > Symbol table '.symtab' contains 112 entries: > Num: Value Size Type Bind Vis Ndx Name > 0: 00000000 0 NOTYPE LOCAL DEFAULT UND > 1: 00010134 0 SECTION LOCAL DEFAULT 1 > 2: 00010148 0 SECTION LOCAL DEFAULT 2 > 3: 00010168 0 SECTION LOCAL DEFAULT 3 > 4: 000101a0 0 SECTION LOCAL DEFAULT 4 > 5: 00010230 0 SECTION LOCAL DEFAULT 5 > 6: 00010304 0 SECTION LOCAL DEFAULT 6 > 7: 00010318 0 SECTION LOCAL DEFAULT 7 > 8: 00010358 0 SECTION LOCAL DEFAULT 8 > 9: 00010360 0 SECTION LOCAL DEFAULT 9 > 10: 00010380 0 SECTION LOCAL DEFAULT 10 > 11: 0001038c 0 SECTION LOCAL DEFAULT 11 > 12: 000103d0 0 SECTION LOCAL DEFAULT 12 > 13: 000105c8 0 SECTION LOCAL DEFAULT 13 > 14: 000105d0 0 SECTION LOCAL DEFAULT 14 > 15: 000105d8 0 SECTION LOCAL DEFAULT 15 > 16: 000105f0 0 SECTION LOCAL DEFAULT 16 > 17: 000205f4 0 SECTION LOCAL DEFAULT 17 > 18: 000205f8 0 SECTION LOCAL DEFAULT 18 > 19: 000205fc 0 SECTION LOCAL DEFAULT 19 > 20: 00020600 0 SECTION LOCAL DEFAULT 20 > 21: 00020700 0 SECTION LOCAL DEFAULT 21 > 22: 00020720 0 SECTION LOCAL DEFAULT 22 > 23: 00020728 0 SECTION LOCAL DEFAULT 23 > 24: 00000000 0 SECTION LOCAL DEFAULT 24 > 25: 00000000 0 SECTION LOCAL DEFAULT 25 > 26: 00000000 0 FILE LOCAL DEFAULT ABS /home/macieja/Documents/b > 27: 00010148 0 NOTYPE LOCAL DEFAULT 2 $d > 28: 00000000 0 FILE LOCAL DEFAULT ABS /home/macieja/Documents/b > 29: 000103d0 0 NOTYPE LOCAL DEFAULT 12 $a > 30: 000105d8 0 NOTYPE LOCAL DEFAULT 15 $d > 31: 00010400 0 NOTYPE LOCAL DEFAULT 12 $d > 32: 00000000 0 FILE LOCAL DEFAULT ABS init.c > 33: 000105d0 0 NOTYPE LOCAL DEFAULT 14 $d > 34: 00020720 0 NOTYPE LOCAL DEFAULT 22 $d > 35: 00000000 0 FILE LOCAL DEFAULT ABS /usr/local/buildroot_cort > 36: 0001040c 0 NOTYPE LOCAL DEFAULT 12 $a > 37: 0001040c 0 FUNC LOCAL DEFAULT 12 call_weak_fn > 38: 00010428 0 NOTYPE LOCAL DEFAULT 12 $d > 39: 00010380 0 NOTYPE LOCAL DEFAULT 10 $a > 40: 000105c8 0 NOTYPE LOCAL DEFAULT 13 $a > 41: 00000000 0 FILE LOCAL DEFAULT ABS /usr/local/buildroot_cort > 42: 00010388 0 NOTYPE LOCAL DEFAULT 10 $a > 43: 000105cc 0 NOTYPE LOCAL DEFAULT 13 $a > 44: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c > 45: 000205fc 0 OBJECT LOCAL DEFAULT 19 __JCR_LIST__ > 46: 00010430 0 NOTYPE LOCAL DEFAULT 12 $a > 47: 00010430 0 FUNC LOCAL DEFAULT 12 deregister_tm_clones > 48: 00010454 0 NOTYPE LOCAL DEFAULT 12 $d > 49: 00010460 0 NOTYPE LOCAL DEFAULT 12 $a > 50: 00010460 0 FUNC LOCAL DEFAULT 12 register_tm_clones > 51: 0001048c 0 NOTYPE LOCAL DEFAULT 12 $d > 52: 00020724 0 NOTYPE LOCAL DEFAULT 22 $d > 53: 00010498 0 NOTYPE LOCAL DEFAULT 12 $a > 54: 00010498 0 FUNC LOCAL DEFAULT 12 __do_global_dtors_aux > 55: 000104bc 0 NOTYPE LOCAL DEFAULT 12 $d > 56: 00020728 1 OBJECT LOCAL DEFAULT 23 completed.8966 > 57: 000205f8 0 NOTYPE LOCAL DEFAULT 18 $d > 58: 000205f8 0 OBJECT LOCAL DEFAULT 18 __do_global_dtors_aux_fin > 59: 000104c0 0 NOTYPE LOCAL DEFAULT 12 $a > 60: 000104c0 0 FUNC LOCAL DEFAULT 12 frame_dummy > 61: 000104ec 0 NOTYPE LOCAL DEFAULT 12 $d > 62: 000205f4 0 NOTYPE LOCAL DEFAULT 17 $d > 63: 000205f4 0 OBJECT LOCAL DEFAULT 17 __frame_dummy_init_array_ > 64: 00020728 0 NOTYPE LOCAL DEFAULT 23 $d > 65: 00000000 0 FILE LOCAL DEFAULT ABS main.c > 66: 000104f4 0 NOTYPE LOCAL DEFAULT 12 $a > 67: 000105e0 0 NOTYPE LOCAL DEFAULT 15 $d > 68: 000105d4 0 NOTYPE LOCAL DEFAULT 14 $d > 69: 00000000 0 FILE LOCAL DEFAULT ABS elf-init.c > 70: 00010564 0 NOTYPE LOCAL DEFAULT 12 $a > 71: 000105bc 0 NOTYPE LOCAL DEFAULT 12 $d > 72: 000105c4 0 NOTYPE LOCAL DEFAULT 12 $a > 73: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c > 74: 000105f0 0 NOTYPE LOCAL DEFAULT 16 $d > 75: 000105f0 0 OBJECT LOCAL DEFAULT 16 __FRAME_END__ > 76: 000205fc 0 NOTYPE LOCAL DEFAULT 19 $d > 77: 000205fc 0 OBJECT LOCAL DEFAULT 19 __JCR_END__ > 78: 00000000 0 FILE LOCAL DEFAULT ABS > 79: 00020700 0 OBJECT LOCAL DEFAULT 21 _GLOBAL_OFFSET_TABLE_ > 80: 000205f8 0 NOTYPE LOCAL DEFAULT 17 __init_array_end > 81: 000205f4 0 NOTYPE LOCAL DEFAULT 17 __init_array_start > 82: 00020600 0 OBJECT LOCAL DEFAULT 20 _DYNAMIC > 83: 0001038c 0 NOTYPE LOCAL DEFAULT 11 $a > 84: 0001039c 0 NOTYPE LOCAL DEFAULT 11 $d > 85: 000103a0 0 NOTYPE LOCAL DEFAULT 11 $a > 86: 00020720 0 NOTYPE WEAK DEFAULT 22 data_start > 87: 00000000 0 FUNC GLOBAL DEFAULT UND abort@@GLIBC_2.4 > 88: 000105c4 4 FUNC GLOBAL DEFAULT 12 __libc_csu_fini > 89: 000103d0 0 FUNC GLOBAL DEFAULT 12 _start > 90: 00000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@@GLIBC_ > 91: 00000000 0 FUNC GLOBAL DEFAULT UND __aeabi_unwind_cpp_pr0@@G > 92: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ > 93: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses > 94: 000105c8 0 FUNC GLOBAL DEFAULT 13 _fini > 95: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab > 96: 000105d0 4 OBJECT GLOBAL DEFAULT 14 _IO_stdin_used > 97: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable > 98: 00020720 0 NOTYPE GLOBAL DEFAULT 22 __data_start > 99: 00020728 0 NOTYPE GLOBAL DEFAULT 23 __bss_start__ > 100: 00020728 0 OBJECT GLOBAL HIDDEN 22 __TMC_END__ > 101: 00020724 0 OBJECT GLOBAL HIDDEN 22 __dso_handle > 102: 0002072c 0 NOTYPE GLOBAL DEFAULT 23 __end__ > 103: 00010564 96 FUNC GLOBAL DEFAULT 12 __libc_csu_init > 104: 0002072c 0 NOTYPE GLOBAL DEFAULT 23 __bss_end__ > 105: 00000000 0 FUNC GLOBAL DEFAULT UND printf@@GLIBC_2.4 > 106: 00020728 0 NOTYPE GLOBAL DEFAULT 23 __bss_start > 107: 0002072c 0 NOTYPE GLOBAL DEFAULT 23 _bss_end__ > 108: 0002072c 0 NOTYPE GLOBAL DEFAULT 23 _end > 109: 00020728 0 NOTYPE GLOBAL DEFAULT 22 _edata > 110: 000104f4 112 FUNC GLOBAL DEFAULT 12 main > 111: 00010380 0 FUNC GLOBAL DEFAULT 10 _init > > Histogram for bucket list length (total of 3 buckets): > Length Number % of total Coverage > 0 0 ( 0.0%) > 1 0 ( 0.0%) 0.0% > 2 2 ( 66.7%) 50.0% > 3 0 ( 0.0%) 50.0% > 4 1 ( 33.3%) 100.0% > > Version symbols section '.gnu.version' contains 9 entries: > Addr: 0000000000010304 Offset: 0x000304 Link: 4 (.dynsym) > 000: 0 (*local*) 2 (GLIBC_2.4) 2 (GLIBC_2.4) 3 (GCC_3.5) > > 004: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*) > > 008: 2 (GLIBC_2.4) > > Version needs section '.gnu.version_r' contains 2 entries: > Addr: 0x0000000000010318 Offset: 0x000318 Link: 5 (.dynstr) > 000000: Version: 1 File: libgcc_s.so.1 Cnt: 1 > 0x0010: Name: GCC_3.5 Flags: none Version: 3 > 0x0020: Version: 1 File: libc.so.6 Cnt: 1 > 0x0030: Name: GLIBC_2.4 Flags: none Version: 2 > > Displaying notes found at file offset 0x00000148 with length 0x00000020: > Owner Data size Description > GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag) > OS: Linux, ABI: 2.6.32 > Attribute Section: aeabi > File Attributes > Tag_CPU_name: "Cortex-A8" > Tag_CPU_arch: v7 > Tag_CPU_arch_profile: Application > Tag_ARM_ISA_use: Yes > Tag_THUMB_ISA_use: Thumb-2 > Tag_ABI_PCS_wchar_t: 4 > Tag_ABI_FP_rounding: Needed > Tag_ABI_FP_denormal: Needed > Tag_ABI_FP_exceptions: Needed > Tag_ABI_FP_number_model: IEEE 754 > Tag_ABI_align_needed: 8-byte > Tag_ABI_align_preserved: 8-byte, except leaf SP > Tag_ABI_enum_size: int > Tag_CPU_unaligned_access: v6 > Tag_Virtualization_use: TrustZone > -- READELF --