https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66239
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ramana at gcc dot gnu.org --- Comment #2 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> --- (In reply to Maciej Andrzejewski from comment #1) > 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: Yeah it's called constant folding in the compiler. Why make the cpu do more work at run time when the compiler can statically tell you the value for sqrt of a floating point value. The cycles spent in compiling with -O have to give you some value surely ... :) I have no idea why your -O0 case fails though, offhand. Ramana > > -- 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 --