Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 21 Jan 2016 14:05:41 -0500
From: N Jain <jain61@...il.com>
To: musl@...ts.openwall.com, Szabolcs Nagy <nsz@...t70.net>
Subject: Re: MUSL issue while loading C++ lib

Hi Szabolcs,

I am having one c and other cpp file and using g++ for linking.
I do have libgcc_s.so.1 lib added.

When I looked into generated elf I do see .so dependencies but order of
libgcc_s.so.1 is second.
I am assuming this is not the problem.

0x00000001 (NEEDED)                     Shared library: [libstdc++.so.6]
 0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so]



>
> > these symbols should be defined in libgcc_s.so.1
> > which is linked to c++ code by gcc.
>


Also searching online I saw some issues with versions for
GLIBCXX but don't know how to confirm if this is not the problem with MUSL
toolchain I generated.

 ersion needs section '.gnu.version_r' contains 1 entries:
 Addr: 0x0000000000010634  Offset: 0x000634  Link: 4 (.dynstr)
  000000: Version: 1  File: libstdc++.so.6  Cnt: 3
  0x0010:   Name: GLIBCXX_3.4.9  Flags: none  Version: 4
  0x0020:   Name: GLIBCXX_3.4.11  Flags: none  Version: 3
  0x0030:   Name: GLIBCXX_3.4  Flags: none  Version: 2



> > sounds like a gcc toolchain issue, if you cannot
> > figure it out then post
>
> > echo 'int main(){}' |g++ -xc++ -
>

I am not sure where to issue this command ?



>
> > readelf -ld ./a.out
>

Result
------------

Elf file type is EXEC (Executable file)
Entry point 0x109fc
There are 7 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  EXIDX          0x000c08 0x00010c08 0x00010c08 0x00008 0x00008 R   0x4
  PHDR           0x000034 0x00010034 0x00010034 0x000e0 0x000e0 R E 0x4
  INTERP         0x000114 0x00010114 0x00010114 0x00016 0x00016 R   0x1
      [Requesting program interpreter: /lib/ld-musl-arm.so.1]
  LOAD           0x000000 0x00010000 0x00010000 0x00c14 0x00c14 R E 0x10000
  LOAD           0x000c14 0x00020c14 0x00020c14 0x00154 0x0020c RW  0x10000
  DYNAMIC        0x000c24 0x00020c24 0x00020c24 0x000f8 0x000f8 RW  0x4
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x10

 Section to Segment mapping:
  Segment Sections...
   00     .ARM.exidx
   01
   02     .interp
   03     .interp .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

Dynamic section at offset 0xc24 contains 26 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so.6]
 0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so]
 0x0000000c (INIT)                       0x106fc
 0x0000000d (FINI)                       0x10b68
 0x00000019 (INIT_ARRAY)                 0x20c14
 0x0000001b (INIT_ARRAYSZ)               8 (bytes)
 0x0000001a (FINI_ARRAY)                 0x20c1c
 0x0000001c (FINI_ARRAYSZ)               4 (bytes)
 0x00000004 (HASH)                       0x1012c
 0x00000005 (STRTAB)                     0x103bc
 0x00000006 (SYMTAB)                     0x101ec
 0x0000000a (STRSZ)                      573 (bytes)
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000015 (DEBUG)                      0x0
 0x00000003 (PLTGOT)                     0x20d1c
 0x00000002 (PLTRELSZ)                   120 (bytes)
 0x00000014 (PLTREL)                     REL
 0x00000017 (JMPREL)                     0x10684
 0x00000011 (REL)                        0x10674
 0x00000012 (RELSZ)                      16 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x6ffffffe (VERNEED)                    0x10634
 0x6fffffff (VERNEEDNUM)                 1
 0x6ffffff0 (VERSYM)                     0x105fa
 0x00000000 (NULL)                       0x0




> > strace /lib/ld-musl-*.so.1 ./a.out
>

I don't have strace capability in my toolchain.



> > readelf -d /lib/libstdc++.so.6
>

Result
------------

Dynamic section at offset 0x126f00 contains 28 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libc.so]
 0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]
 0x0000000e (SONAME)                     Library soname: [libstdc++.so.6]
 0x0000000c (INIT)                       0x68280
 0x0000000d (FINI)                       0x1100f8
 0x00000019 (INIT_ARRAY)                 0x1329ec
 0x0000001b (INIT_ARRAYSZ)               44 (bytes)
 0x0000001a (FINI_ARRAY)                 0x132a18
 0x0000001c (FINI_ARRAYSZ)               4 (bytes)
 0x00000004 (HASH)                       0x114
 0x00000005 (STRTAB)                     0x1c8a8
 0x00000006 (SYMTAB)                     0x75c8
 0x0000000a (STRSZ)                      259844 (bytes)
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000003 (PLTGOT)                     0x137000
 0x00000002 (PLTRELSZ)                   6832 (bytes)
 0x00000014 (PLTREL)                     REL
 0x00000017 (JMPREL)                     0x667d0
 0x00000011 (REL)                        0x5eef0
 0x00000012 (RELSZ)                      30944 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x6ffffffc (VERDEF)                     0x5ea08
 0x6ffffffd (VERDEFNUM)                  34
 0x6ffffffe (VERNEED)                    0x5eeb0
 0x6fffffff (VERNEEDNUM)                 1
 0x6ffffff0 (VERSYM)                     0x5bfac
 0x6ffffffa (RELCOUNT)                   796
 0x00000000 (NULL)                       0x0




> > readelf -aW /lib/libstdc++.so.6 |grep Unwind
>

Result
------------

00137214  00036116 R_ARM_JUMP_SLOT        00000000   _Unwind_GetRegionStart
00137254  0003d116 R_ARM_JUMP_SLOT        00000000   _Unwind_GetTextRelBase
00137268  0003de16 R_ARM_JUMP_SLOT        00000000   _Unwind_RaiseException
00137330  00051c16 R_ARM_JUMP_SLOT        00000000
_Unwind_Resume_or_Rethrow
00137510  00083616 R_ARM_JUMP_SLOT        00000000
_Unwind_GetLanguageSpecificData
0013757c  0008d916 R_ARM_JUMP_SLOT        00000000   _Unwind_VRS_Get
001377f4  000d0016 R_ARM_JUMP_SLOT        00000000   _Unwind_Complete
00137954  000ee216 R_ARM_JUMP_SLOT        00000000   _Unwind_GetDataRelBase
00137b2c  0011f216 R_ARM_JUMP_SLOT        00000000   _Unwind_VRS_Set
00137bec  00131d16 R_ARM_JUMP_SLOT        00000000   _Unwind_DeleteException
00137c70  0013d416 R_ARM_JUMP_SLOT        00000000   _Unwind_Resume
Unwind table index '.ARM.exidx' at offset 0x11d9e4 contains 2164 entries:
0x6e11c <_ZL21base_of_encoded_valuehP15_Unwind_Context>: 0x80a8b0b0
0x6e190 <_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info>:
0x80acb0b0
0x6e990
<_ZL33__gxx_dependent_exception_cleanup19_Unwind_Reason_CodeP21_Unwind_Control_Block>:
0x80a8b0b0
0x6ee4c <_ZL22free_any_cxa_exceptionP21_Unwind_Control_Block>: 0x1
[cantunwind]
0x6f00c
<_ZL23__gxx_exception_cleanup19_Unwind_Reason_CodeP21_Unwind_Control_Block>:
0x80a8b0b0
   865: 00000000     0 FUNC    GLOBAL DEFAULT  UND
_Unwind_GetRegionStart@..._3.0 (36)
   977: 00000000     0 FUNC    GLOBAL DEFAULT  UND
_Unwind_GetTextRelBase@..._3.0 (36)
   990: 00000000     0 FUNC    GLOBAL DEFAULT  UND
_Unwind_RaiseException@..._3.0 (36)
  1308: 00000000     0 FUNC    GLOBAL DEFAULT  UND
_Unwind_Resume_or_Rethrow@..._3.3 (37)
  2102: 00000000     0 FUNC    GLOBAL DEFAULT  UND
_Unwind_GetLanguageSpecificData@..._3.0 (36)
  2265: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_VRS_Get@..._3.5
(35)
  3328: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_Complete@..._3.5
(35)
  3810: 00000000     0 FUNC    GLOBAL DEFAULT  UND
_Unwind_GetDataRelBase@..._3.0 (36)
  4594: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_VRS_Set@..._3.5
(35)
  4893: 00000000     0 FUNC    GLOBAL DEFAULT  UND
_Unwind_DeleteException@..._3.0 (36)
  5076: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_Resume@..._3.0
(36)
  4923: 0006e11c   116 FUNC    LOCAL  DEFAULT   11
_ZL21base_of_encoded_valuehP15_Unwind_Context
  4926: 0006e190   224 FUNC    LOCAL  DEFAULT   11
_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info
  4934: 0006e990   104 FUNC    LOCAL  DEFAULT   11
_ZL33__gxx_dependent_exception_cleanup19_Unwind_Reason_CodeP21_Unwind_Control_Block
  4995: 0006ee4c    84 FUNC    LOCAL  DEFAULT   11
_ZL22free_any_cxa_exceptionP21_Unwind_Control_Block
  5001: 0006f00c    96 FUNC    LOCAL  DEFAULT   11
_ZL23__gxx_exception_cleanup19_Unwind_Reason_CodeP21_Unwind_Control_Block
 13579: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_GetRegionStart@
@GCC_3.0
 13691: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_GetTextRelBase@
@GCC_3.0
 13704: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_RaiseException@
@GCC_3.0
 14022: 00000000     0 FUNC    GLOBAL DEFAULT  UND
_Unwind_Resume_or_Rethrow@@GCC_3.3
 14816: 00000000     0 FUNC    GLOBAL DEFAULT  UND
_Unwind_GetLanguageSpecificData@@GCC_3.0
 14979: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_VRS_Get@@GCC_3.5
 16042: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_Complete@@GCC_3.5
 16524: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_GetDataRelBase@
@GCC_3.0
 17308: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_VRS_Set@@GCC_3.5
 17607: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_DeleteException@
@GCC_3.0
 17790: 00000000     0 FUNC    GLOBAL DEFAULT  UND _Unwind_Resume@@GCC_3.0



> > readelf -aW /lib/libgcc_s.so.1 |grep Unwin
>

Result
------------

0002c1f0  0003a015 R_ARM_GLOB_DAT         00000000   __gnu_Unwind_Find_exidx
0002c108  00003016 R_ARM_JUMP_SLOT        0001b374   _Unwind_GetDataRelBase
0002c118  00007816 R_ARM_JUMP_SLOT        0001a2fc   _Unwind_VRS_Set
0002c128  00012e16 R_ARM_JUMP_SLOT        0001b350
_Unwind_GetLanguageSpecificData
0002c154  00028316 R_ARM_JUMP_SLOT        0001a900   _Unwind_VRS_Pop
0002c178  00035e16 R_ARM_JUMP_SLOT        0001b340   _Unwind_GetRegionStart
0002c17c  00038116 R_ARM_JUMP_SLOT        0001b36c   _Unwind_GetTextRelBase
0002c180  0003a016 R_ARM_JUMP_SLOT        00000000   __gnu_Unwind_Find_exidx
0002c198  00042616 R_ARM_JUMP_SLOT        0001a274   _Unwind_VRS_Get
Unwind table index '.ARM.exidx' at offset 0x1bd38 contains 34 entries:
0x19f00 <_Unwind_decode_typeinfo_ptr.isra.0>: 0x1 [cantunwind]
0x1a0f0 <_Unwind_GetCFA>: 0x1 [cantunwind]
0x1a0f8 <__gnu_Unwind_RaiseException>: 0x80383fab
0x1a1a0 <__gnu_Unwind_ForcedUnwind>: 0x1 [cantunwind]
0x1a1c4 <__gnu_Unwind_Resume>: 0x80aab0b0
0x1a238 <__gnu_Unwind_Resume_or_Rethrow>: 0x1 [cantunwind]
0x1a2d0 <_Unwind_GetGR>: 0x80048400
0x1a2fc <_Unwind_VRS_Set>: 0x1 [cantunwind]
0x1a358 <_Unwind_SetGR>: 0x80048400
0x1a384 <__gnu_Unwind_Backtrace>: 0x80b20dac
0x1a900 <_Unwind_VRS_Pop>: 0x80033fac
0x1aed4 <_Unwind_GetGR.constprop.1>: 0x80048400
0x1b340 <_Unwind_GetRegionStart>: 0x80a8b0b0
0x1b36c <_Unwind_GetTextRelBase.localalias.0>: 0x1 [cantunwind]
0x1b638 <_Unwind_SetGR>: 0x80048400
    48: 0001b374     4 FUNC    GLOBAL DEFAULT   10 _Unwind_GetDataRelBase@
@GCC_3.0
   120: 0001a2fc    92 FUNC    GLOBAL DEFAULT   10 _Unwind_VRS_Set@@GCC_3.5
   302: 0001b350    28 FUNC    GLOBAL DEFAULT   10
_Unwind_GetLanguageSpecificData@@GCC_3.0
   352: 0001a258     4 FUNC    GLOBAL DEFAULT   10 _Unwind_Complete@@GCC_3.5
   356: 0001a25c    24 FUNC    GLOBAL DEFAULT   10 _Unwind_DeleteException@
@GCC_3.0
   620: 0001ae04    36 FUNC    GLOBAL DEFAULT   10
_Unwind_Resume_or_Rethrow@@GCC_3.3
   643: 0001a900   968 FUNC    GLOBAL DEFAULT   10 _Unwind_VRS_Pop@@GCC_3.5
   719: 0001ae28    36 FUNC    GLOBAL DEFAULT   10 _Unwind_ForcedUnwind@
@GCC_3.0
   793: 0001adbc    36 FUNC    GLOBAL DEFAULT   10 _Unwind_RaiseException@
@GCC_3.0
   835: 0001ae4c    36 FUNC    GLOBAL DEFAULT   10 _Unwind_Backtrace@
@GCC_4.3.0
   862: 0001b340    16 FUNC    GLOBAL DEFAULT   10 _Unwind_GetRegionStart@
@GCC_3.0
   897: 0001b36c     8 FUNC    GLOBAL DEFAULT   10 _Unwind_GetTextRelBase@
@GCC_3.0
   915: 0001a0f0     8 FUNC    GLOBAL DEFAULT   10 _Unwind_GetCFA@@GCC_3.3
   928: 00000000     0 FUNC    WEAK   DEFAULT  UND __gnu_Unwind_Find_exidx
  1062: 0001a274    92 FUNC    GLOBAL DEFAULT   10 _Unwind_VRS_Get@@GCC_3.5
  1069: 0001ade0    36 FUNC    GLOBAL DEFAULT   10 _Unwind_Resume@@GCC_3.0
  1351: 00019f00    20 FUNC    LOCAL  DEFAULT   10
_Unwind_decode_typeinfo_ptr.isra.0
  1353: 00019f1c     4 FUNC    LOCAL  DEFAULT   10 _Unwind_DebugHook
  1356: 0001a2d0    44 FUNC    LOCAL  DEFAULT   10 _Unwind_GetGR
  1357: 0001a358    44 FUNC    LOCAL  DEFAULT   10 _Unwind_SetGR
  1365: 0001aed4    44 FUNC    LOCAL  DEFAULT   10 _Unwind_GetGR.constprop.1
  1367: 0001b36c     8 FUNC    LOCAL  DEFAULT   10
_Unwind_GetTextRelBase.localalias.0
  1376: 0001b638    44 FUNC    LOCAL  DEFAULT   10 _Unwind_SetGR
  1377: 0001b664    44 FUNC    LOCAL  DEFAULT   10 _Unwind_GetGR.constprop.0
  1421: 0001ad50     0 FUNC    LOCAL  DEFAULT   10 __gnu_Unwind_Save_WMMXD
  1423: 0001a238    32 FUNC    LOCAL  DEFAULT   10
__gnu_Unwind_Resume_or_Rethrow
  1427: 0001ae04    36 FUNC    LOCAL  DEFAULT   10
___Unwind_Resume_or_Rethrow
  1429: 0001ace4     0 FUNC    LOCAL  DEFAULT   10 __gnu_Unwind_Save_VFP
  1438: 0001acec     0 FUNC    LOCAL  DEFAULT   10
__gnu_Unwind_Restore_VFP_D
  1440: 0001a0f8   168 FUNC    LOCAL  DEFAULT   10
__gnu_Unwind_RaiseException
  1441: 0001acf4     0 FUNC    LOCAL  DEFAULT   10 __gnu_Unwind_Save_VFP_D
  1501: 0001ae4c    36 FUNC    LOCAL  DEFAULT   10 ___Unwind_Backtrace
  1508: 0001ad04     0 FUNC    LOCAL  DEFAULT   10
__gnu_Unwind_Save_VFP_D_16_to_31
  1513: 0001acfc     0 FUNC    LOCAL  DEFAULT   10
__gnu_Unwind_Restore_VFP_D_16_to_31
  1528: 0001ad0c     0 FUNC    LOCAL  DEFAULT   10
__gnu_Unwind_Restore_WMMXD
  1533: 0001ad94     0 FUNC    LOCAL  DEFAULT   10
__gnu_Unwind_Restore_WMMXC
  1539: 0001ae28    36 FUNC    LOCAL  DEFAULT   10 ___Unwind_ForcedUnwind
  1547: 0001adbc    36 FUNC    LOCAL  DEFAULT   10 ___Unwind_RaiseException
  1557: 0001a1a0    36 FUNC    LOCAL  DEFAULT   10 __gnu_Unwind_ForcedUnwind
  1559: 0001ade0    36 FUNC    LOCAL  DEFAULT   10 ___Unwind_Resume
  1569: 0001a1c4   116 FUNC    LOCAL  DEFAULT   10 __gnu_Unwind_Resume
  1574: 0001ada8     0 FUNC    LOCAL  DEFAULT   10 __gnu_Unwind_Save_WMMXC
  1589: 0001a384   200 FUNC    LOCAL  DEFAULT   10 __gnu_Unwind_Backtrace
  1590: 0001acdc     0 FUNC    LOCAL  DEFAULT   10 __gnu_Unwind_Restore_VFP
  1663: 0001b374     4 FUNC    GLOBAL DEFAULT   10 _Unwind_GetDataRelBase
  1735: 0001a2fc    92 FUNC    GLOBAL DEFAULT   10 _Unwind_VRS_Set
  1917: 0001b350    28 FUNC    GLOBAL DEFAULT   10
_Unwind_GetLanguageSpecificData
  1967: 0001a258     4 FUNC    GLOBAL DEFAULT   10 _Unwind_Complete
  1971: 0001a25c    24 FUNC    GLOBAL DEFAULT   10 _Unwind_DeleteException
  2235: 0001ae04    36 FUNC    GLOBAL DEFAULT   10 _Unwind_Resume_or_Rethrow
  2258: 0001a900   968 FUNC    GLOBAL DEFAULT   10 _Unwind_VRS_Pop
  2334: 0001ae28    36 FUNC    GLOBAL DEFAULT   10 _Unwind_ForcedUnwind
  2408: 0001adbc    36 FUNC    GLOBAL DEFAULT   10 _Unwind_RaiseException
  2450: 0001ae4c    36 FUNC    GLOBAL DEFAULT   10 _Unwind_Backtrace
  2477: 0001b340    16 FUNC    GLOBAL DEFAULT   10 _Unwind_GetRegionStart
  2512: 0001b36c     8 FUNC    GLOBAL DEFAULT   10 _Unwind_GetTextRelBase
  2530: 0001a0f0     8 FUNC    GLOBAL DEFAULT   10 _Unwind_GetCFA
  2543: 00000000     0 FUNC    WEAK   DEFAULT  UND __gnu_Unwind_Find_exidx
  2677: 0001a274    92 FUNC    GLOBAL DEFAULT   10 _Unwind_VRS_Get
  2684: 0001ade0    36 FUNC    GLOBAL DEFAULT   10 _Unwind_Resume



Thanks,

Content of type "text/html" skipped

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.