Why are dwarf2 symbols getting assigned hidden visibility?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've successfully built the GNAT front-end of gcc 4.6 on several BSD platforms. The NetBSD versions (i386 and AMD64) have a problem that I can't figure out, and I suspect it can be fixed with a change to the build configuration.

Although NetBSD passes its regression tests cleanly, there are some dwarf2 functions it doesn't seem to recognize. When I listed hidden symbols embedded in a pre-stripped gnat1 executable, here is the result:

> readelf -s gnat1 | grep HIDDEN
 19135: 0000000000fc68c0   389 FUNC    LOCAL  HIDDEN   11 _Unwind_Find_FDE
 19136: 0000000000fc4dc0    21 FUNC    LOCAL  HIDDEN   11 _Unwind_GetIPInfo
 19137: 0000000000fc4db0     8 FUNC    LOCAL  HIDDEN   11 _Unwind_GetIP
 19138: 0000000000fc66a0    38 FUNC    LOCAL  HIDDEN   11 __register_frame
19139: 0000000000fc52b0 241 FUNC LOCAL HIDDEN 11 _Unwind_Resume_or_Rethrow 19140: 0000000000fc4e00 8 FUNC LOCAL HIDDEN 11 _Unwind_GetRegionStart
 19141: 0000000000fc53d0   155 FUNC    LOCAL  HIDDEN   11 _Unwind_Backtrace
 19142: 0000000001299720   256 OBJECT  LOCAL  HIDDEN   13 __popcount_tab
 19143: 0000000000fc4d50     8 FUNC    LOCAL  HIDDEN   11 _Unwind_GetCFA
 19144: 00000000014b8820     0 OBJECT  LOCAL  HIDDEN   17 __DTOR_END__
 19145: 00000000014b9168     0 OBJECT  LOCAL  HIDDEN   22 __dso_handle
 19146: 0000000000fc4e60   269 FUNC    LOCAL  HIDDEN   11 __frame_state_for
19147: 0000000000fc6760 26 FUNC LOCAL HIDDEN 11 __register_frame_table 19148: 0000000000fc6600 130 FUNC LOCAL HIDDEN 11 __register_frame_info_bas 19149: 0000000000fc6880 5 FUNC LOCAL HIDDEN 11 __deregister_frame_info
 19150: 0000000000fc51e0   193 FUNC    LOCAL  HIDDEN   11 _Unwind_Resume
19151: 0000000000fc53b0 26 FUNC LOCAL HIDDEN 11 _Unwind_DeleteException 19152: 0000000000fc6780 256 FUNC LOCAL HIDDEN 11 __deregister_frame_info_b 19153: 0000000000fc4f80 358 FUNC LOCAL HIDDEN 11 _Unwind_RaiseException
 19154: 0000000000fc4de0     8 FUNC    LOCAL  HIDDEN   11 _Unwind_SetIP
19155: 0000000000fc66d0 114 FUNC LOCAL HIDDEN 11 __register_frame_info_tab 19156: 0000000000fc6890 33 FUNC LOCAL HIDDEN 11 __deregister_frame 19157: 0000000000fc4e50 8 FUNC LOCAL HIDDEN 11 _Unwind_GetTextRelBase 19158: 0000000000fc4e10 36 FUNC LOCAL HIDDEN 11 _Unwind_FindEnclosingFunc 19159: 0000000000fc4df0 8 FUNC LOCAL HIDDEN 11 _Unwind_GetLanguageSpecif 19160: 0000000000fc50f0 230 FUNC LOCAL HIDDEN 11 _Unwind_ForcedUnwind 19161: 00000000014b8a28 0 OBJECT LOCAL HIDDEN 21 _GLOBAL_OFFSET_TABLE_
 19162: 0000000000fc2bf0    44 FUNC    LOCAL  HIDDEN   11 __popcountdi2
 19163: 0000000000fc4d60    80 FUNC    LOCAL  HIDDEN   11 _Unwind_SetGR
 19164: 0000000000fc4d00    72 FUNC    LOCAL  HIDDEN   11 _Unwind_GetGR
19165: 0000000000fc4e40 8 FUNC LOCAL HIDDEN 11 _Unwind_GetDataRelBase 19166: 0000000000fc6750 9 FUNC LOCAL HIDDEN 11 __register_frame_info_tab 19167: 0000000000fc6690 9 FUNC LOCAL HIDDEN 11 __register_frame_info


The other BSDs consider these symbols global. For example, here is a subset of the same symbols taken from a stripped DragonFly BSD gnat1:

   419: 0000000000fb10e0   373 FUNC    GLOBAL DEFAULT   10 _Unwind_Find_FDE
582: 0000000000fad8f0 21 FUNC GLOBAL DEFAULT 10 _Unwind_GetIPInfo
   920: 0000000000fad8e0     8 FUNC    GLOBAL DEFAULT   10 _Unwind_GetIP
2116: 0000000000fafb40 235 FUNC GLOBAL DEFAULT 10 _Unwind_Resume_or_Rethrow 2762: 0000000000fad930 8 FUNC GLOBAL DEFAULT 10 _Unwind_GetRegionStart 3171: 0000000000fafc50 155 FUNC GLOBAL DEFAULT 10 _Unwind_Backtrace
  4035: 0000000000fad880     8 FUNC    GLOBAL DEFAULT   10 _Unwind_GetCFA
  9786: 0000000000fafa60   212 FUNC    GLOBAL DEFAULT   10 _Unwind_Resume
9841: 0000000000fafc30 21 FUNC GLOBAL DEFAULT 10 _Unwind_DeleteException 12631: 0000000000faf800 359 FUNC GLOBAL DEFAULT 10 _Unwind_RaiseException
 13229: 0000000000fad910     8 FUNC    GLOBAL DEFAULT   10 _Unwind_SetIP
15888: 0000000000fad980 8 FUNC GLOBAL DEFAULT 10 _Unwind_GetTextRelBase 16508: 0000000000fad940 36 FUNC GLOBAL DEFAULT 10 _Unwind_FindEnclosingFunc 16814: 0000000000fad920 8 FUNC GLOBAL DEFAULT 10 _Unwind_GetLanguageSpecif 17568: 0000000000faf970 230 FUNC GLOBAL DEFAULT 10 _Unwind_ForcedUnwind
 18388: 0000000000fad890    75 FUNC    GLOBAL DEFAULT   10 _Unwind_SetGR
 19462: 0000000000fad830    72 FUNC    GLOBAL DEFAULT   10 _Unwind_GetGR
20086: 0000000000fad970 8 FUNC GLOBAL DEFAULT 10 _Unwind_GetDataRelBase
  1345: 0000000000fb0ec0    38 FUNC    GLOBAL DEFAULT   10 __register_frame
8011: 0000000000fb0f80 26 FUNC GLOBAL DEFAULT 10 __register_frame_table 8532: 0000000000fb0e20 130 FUNC GLOBAL DEFAULT 10 __register_frame_info_bas 14325: 0000000000fb0ef0 114 FUNC GLOBAL DEFAULT 10 __register_frame_info_tab 20736: 0000000000fb0f70 9 FUNC GLOBAL DEFAULT 10 __register_frame_info_tab 20856: 0000000000fb0eb0 9 FUNC GLOBAL DEFAULT 10 __register_frame_info 9544: 0000000000fb10a0 5 FUNC GLOBAL DEFAULT 10 __deregister_frame_info 10772: 0000000000fb0fa0 256 FUNC GLOBAL DEFAULT 10 __deregister_frame_info_b 15277: 0000000000fb10b0 33 FUNC GLOBAL DEFAULT 10 __deregister_frame
  3677: 0000000001284260   256 OBJECT  GLOBAL DEFAULT   12 __popcount_tab
 18046: 0000000000fad460    44 FUNC    GLOBAL DEFAULT   10 __popcountdi2


I'm pretty well convinced that the NetBSD symbols should also be classified as GLOBAL DEFAULT and this explains NetBSD's issue with functions such as _Unwind_Resume and _Unwind_GetIPInfo. I've gone over config.gcc and the various NetBSD headers many times, but I don't see what's causing this or what omission might be causing it.

Can anybody suggest what may be wrong and how to correct it?

Thanks,
John




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux