https://sourceware.org/bugzilla/show_bug.cgi?id=33162
Bug ID: 33162
Summary: Diagnostics FAILs on Solaris
Product: binutils
Version: 2.45
Status: NEW
Severity: normal
Priority: P2
Component: libctf
Assignee: unassigned at sourceware dot org
Reporter: ro at gcc dot gnu.org
CC: nick.alcock at oracle dot com
Target Milestone: ---
Target: *-*-solaris2.11
Once PR libctf/29292 is fixed, there are only two ld-ctf failures remaining on
Solaris:
FAIL: Diagnostics - Invalid CU name offset
FAIL: Diagnostics - Non-zero parlabel in parent
In both cases, the failure is similar: comparing the dump.out files in the
first
case gives
--- /homes/ro/dump.out 2025-07-16 14:03:36.750211689 +0200
+++ tmpdir/dump.out 2025-07-16 14:02:19.973710436 +0200
@@ -1,5 +1,5 @@
-tmpdir/dump: file format elf32-i386
+tmpdir/dump: file format elf32-i386-sol2
Contents of CTF section .ctf:
@@ -9,8 +9,9 @@
Flags: 0xe (CTF_F_NEWFUNCINFO, CTF_F_IDXSORTED, CTF_F_DYNSTR)
Compilation unit name: (?)
Data object section: 0x0 -- 0x3 (0x4 bytes)
- Type section: 0x4 -- 0x33 (0x30 bytes)
- String section: 0x34 -- 0x3f (0xc bytes)
+ Object index section: 0x4 -- 0x7 (0x4 bytes)
+ Type section: 0x8 -- 0x37 (0x30 bytes)
+ String section: 0x38 -- 0x43 (0xc bytes)
i.e. an additional Object index section not accounted for.
Further investigation can trace this to differences in the symbol tables
between Solaris and Linux: readelf -sW gives
* Solaris/i386:
Symbol table '.symtab' contains 8 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FILE LOCAL DEFAULT ABS A.c
2: 00000000 0 FILE LOCAL DEFAULT ABS
3: 000011d0 0 OBJECT LOCAL DEFAULT 8 _END_
4: 00000170 0 OBJECT LOCAL DEFAULT 4 _START_
5: 00001170 0 OBJECT GLOBAL DEFAULT 6 _DYNAMIC
6: 00000170 0 OBJECT GLOBAL DEFAULT 4 _PROCEDURE_LINKAGE_TABLE_
7: 000011c8 8 OBJECT GLOBAL DEFAULT 8 a
* Linux/i686:
Symbol table '.symtab' contains 5 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FILE LOCAL DEFAULT ABS A.c
2: 00000000 0 FILE LOCAL DEFAULT ABS
3: 00002028 0 OBJECT LOCAL DEFAULT 7 _DYNAMIC
4: 00002088 8 OBJECT GLOBAL DEFAULT 8 a
I turns out that declaring _PROCEDURE_LINKAGE_TABLE_ as skippable fixes the
failures:
diff --git a/libctf/ctf-serialize.c b/libctf/ctf-serialize.c
--- a/libctf/ctf-serialize.c
+++ b/libctf/ctf-serialize.c
@@ -74,6 +74,7 @@ ctf_symtab_skippable (ctf_link_sym_t *sy
|| sym->st_shndx == SHN_UNDEF
|| strcmp (sym->st_name, "_START_") == 0
|| strcmp (sym->st_name, "_END_") == 0
+ || strcmp (sym->st_name, "_PROCEDURE_LINKAGE_TABLE_") == 0
|| (sym->st_type == STT_OBJECT && sym->st_shndx == SHN_EXTABS
&& sym->st_value == 0));
}
On Solaris/SPARC there are a few more: I'll investigate separately.
--
You are receiving this mail because:
You are on the CC list for the bug.