diff --git a/binutils/readelf.c b/binutils/readelf.c index 633453ae2b2..425b7b78653 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -14500,8 +14500,8 @@ get_symbol_version_string (Filedata *filedata, *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 diff --git a/ld/testsuite/ld-elf/pr33599.d b/ld/testsuite/ld-elf/pr33599.d index 9a06427aca2..f3aee6eb114 100644 --- a/ld/testsuite/ld-elf/pr33599.d +++ b/ld/testsuite/ld-elf/pr33599.d @@ -5,7 +5,7 @@ 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