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 --

Reply via email to