]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
PR 14962 testcase xcoff failure
authorAlan Modra <amodra@gmail.com>
Fri, 9 Feb 2024 01:43:13 +0000 (12:13 +1030)
committerAlan Modra <amodra@gmail.com>
Fri, 9 Feb 2024 01:47:20 +0000 (12:17 +1030)
Like https://sourceware.org/pipermail/binutils/2002-August/021279.html
but for symbols defined in an xcoff object but then made absolute by a
linker script.

* xcofflink.c (xcoff_link_input_bfd): Set n_scnum correctly
for symbols made absolute by a linker script.

bfd/xcofflink.c

index 6ef9abcd88350dd20b20c8d74b282269881e8093..49ac8efd1e8eec79bb277219d22a312dbc8b4dc2 100644 (file)
@@ -5482,7 +5482,13 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo,
                   && isym.n_sclass != C_DECL
                   && isym.n_scnum > 0)
            {
-             isym.n_scnum = (*csectpp)->output_section->target_index;
+             if (*sym_hash != NULL
+                 && ((*sym_hash)->root.type == bfd_link_hash_defined
+                     || (*sym_hash)->root.type == bfd_link_hash_defweak)
+                 && (*sym_hash)->root.u.def.section == bfd_abs_section_ptr)
+               isym.n_scnum = N_ABS;
+             else
+               isym.n_scnum = (*csectpp)->output_section->target_index;
              isym.n_value += ((*csectpp)->output_section->vma
                               + (*csectpp)->output_offset
                               - (*csectpp)->vma);