From: Alan Modra Date: Fri, 13 Dec 2024 23:46:07 +0000 (+1030) Subject: xcoff ldrel and tls sections X-Git-Tag: gdb-16-branchpoint~103 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ecb790c0bb80a2d93a75cf3c9463ffe24ad445d9;p=thirdparty%2Fbinutils-gdb.git xcoff ldrel and tls sections * xcofflink.c (_bfd_xcoff_canonicalize_dynamic_reloc): Use .tdata and .tbss section symbols. (xcoff_create_ldrel): Abort on h and hsec both NULL. --- diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c index b75fb42eed5..6eb4529b85a 100644 --- a/bfd/xcofflink.c +++ b/bfd/xcofflink.c @@ -439,12 +439,11 @@ _bfd_xcoff_canonicalize_dynamic_reloc (bfd *abfd, bfd_xcoff_swap_ldrel_in (abfd, elrel, &ldrel); - if (ldrel.l_symndx == -1u) - relbuf->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; - else if (ldrel.l_symndx < 3) + if (ldrel.l_symndx + 2 < 5) { - static const char stdsec[3][8] = { ".text", ".data", ".bss" }; - const char *name = stdsec[ldrel.l_symndx]; + static const char stdsec[5][8] + = { ".tbss", ".tdata", ".text", ".data", ".bss" }; + const char *name = stdsec[ldrel.l_symndx + 2]; asection *sec = bfd_get_section_by_name (abfd, name); if (sec == NULL) { @@ -5090,7 +5089,7 @@ xcoff_create_ldrel (bfd *output_bfd, struct xcoff_final_link_info *flinfo, ldrel.l_symndx = h->ldindx; } else - ldrel.l_symndx = -1; + abort (); ldrel.l_rtype = (irel->r_size << 8) | irel->r_type; ldrel.l_rsecnm = output_section->target_index;