aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/xcofflink.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
index 6ef9abc..49ac8ef 100644
--- a/bfd/xcofflink.c
+++ b/bfd/xcofflink.c
@@ -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);