]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
libctf: exclude always-emitted Solaris symbols from the symtypetab
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Wed, 16 Jul 2025 15:55:51 +0000 (16:55 +0100)
committerNick Alcock <nick.alcock@oracle.com>
Wed, 23 Jul 2025 12:06:14 +0000 (13:06 +0100)
If we're skipping _BEGIN_ and _END_ we should certainly skip all the other
ABI-required always-emitted symbols given in ld/emultempl/solaris2*em as
well.  (This fixes a couple of diagnostics tests, but that's just because
the tests are quite sensitive to CTF section sizes, and introducing any
symtypetab entries for those tests perturbs those.)

Some of these are usually STT_NOTYPE, but not always: if programs already
emitted the symbol they might end up with any type, in particular
STT_OBJECT, and appear in the symtypetabs.

[nca: added commit log, added more symbols]

libctf/
PR libctf/33162
* ctf-serialize.c (ctf_symtab_skippable): Skip
more always-emitted Solaris symbols.

libctf/ctf-serialize.c

index 8c35a2b2489635134aad83d8c6a2af556fa7f103..f04c278344cfcea85f21e4a767af97e1873f19e7 100644 (file)
@@ -74,6 +74,12 @@ ctf_symtab_skippable (ctf_link_sym_t *sym)
          || sym->st_shndx == SHN_UNDEF
          || strcmp (sym->st_name, "_START_") == 0
          || strcmp (sym->st_name, "_END_") == 0
+         || strcmp (sym->st_name, "_DYNAMIC") == 0
+         || strcmp (sym->st_name, "_GLOBAL_OFFSET_TABLE_") == 0
+         || strcmp (sym->st_name, "_PROCEDURE_LINKAGE_TABLE_") == 0
+         || strcmp (sym->st_name, "_edata") == 0
+         || strcmp (sym->st_name, "_end") == 0
+         || strcmp (sym->st_name, "_etext") == 0
          || (sym->st_type == STT_OBJECT && sym->st_shndx == SHN_EXTABS
              && sym->st_value == 0));
 }