From 4214ca9036c8f5d01025d0505ff1167700af5f98 Mon Sep 17 00:00:00 2001 From: Rainer Orth Date: Wed, 16 Jul 2025 16:55:51 +0100 Subject: [PATCH] libctf: exclude always-emitted Solaris symbols from the symtypetab 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 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libctf/ctf-serialize.c b/libctf/ctf-serialize.c index 8c35a2b2489..f04c278344c 100644 --- a/libctf/ctf-serialize.c +++ b/libctf/ctf-serialize.c @@ -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)); } -- 2.47.2