when a symbol 'foo' is exported and non-hidden and hence is
available for resolving from other objects it's unreasonable
for readelf to print it as 'foo@@'. If it's not available
for unversioned resolving because its version is hidden
(but without name), then continue printing it as 'foo@' to
indicate that something special goes on.
*sym_info = (vers_data & VERSYM_HIDDEN) != 0 ? symbol_hidden : symbol_public;
max_vd_ndx = 0;
- /* Return the empty string for the base version. */
- if ((vers_data & VERSYM_VERSION) == VERSYM_BASE)
+ /* Return the empty string for the hidden base version. */
+ if (vers_data == (VERSYM_HIDDEN | VERSYM_BASE))
return "";
/* Usually we'd only see verdef for defined symbols, and verneed for
Symbol table '\.dynsym' contains [0-9]+ entries:
#...
- +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ +bar@@
+ +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ +bar
#...
+[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ +foo@
#pass