summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog12
-rw-r--r--bfd/elf32-nds32.c4
-rw-r--r--bfd/elfnn-aarch64.c6
-rw-r--r--bfd/xcofflink.c9
4 files changed, 19 insertions, 12 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 008d416d271..8dce93072cf 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,17 @@
2018-07-17 Maciej W. Rozycki <macro@mips.com>
+ * elf32-nds32.c (nds32_elf_relax_loadstore): Use
+ `bfd_is_abs_symbol' rather than `bfd_is_abs_section' in checking
+ whether the symbol is absolute.
+ (nds32_elf_relax_lo12): Likewise.
+ * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Likewise.
+ (elfNN_aarch64_check_relocs): Likewise.
+ * xcofflink.c (xcoff_need_ldrel_p): Likewise.
+ (bfd_xcoff_import_symbol): Likewise.
+ (xcoff_write_global_symbol): Likewise.
+
+2018-07-17 Maciej W. Rozycki <macro@mips.com>
+
* linker.c (bfd_is_abs_symbol): New macro.
* bfd-in2.h: Regenerate.
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c
index 1b30d127a5a..ae43cdfd8af 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -10567,7 +10567,7 @@ nds32_elf_relax_loadstore (struct bfd_link_info *link_info, bfd *abfd,
/* This is avoid to relax symbol address which is fixed
relocations. Ex: _stack. */
- if (h && bfd_is_abs_section (h->root.u.def.section))
+ if (h && bfd_is_abs_symbol (&h->root))
return FALSE;
}
@@ -10707,7 +10707,7 @@ nds32_elf_relax_lo12 (struct bfd_link_info *link_info, bfd *abfd,
/* This is avoid to relax symbol address which is fixed
relocations. Ex: _stack. */
else if (N32_OP6 (insn) == N32_OP6_ORI
- && h && bfd_is_abs_section (h->root.u.def.section))
+ && h && bfd_is_abs_symbol (&h->root))
return;
else
{
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index cf321f32c20..868144489ba 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -5224,8 +5224,7 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
weak_undef_p = (h ? h->root.type == bfd_link_hash_undefweak
: bfd_is_und_section (sym_sec));
- abs_symbol_p = (h !=NULL && h->root.type == bfd_link_hash_defined
- && bfd_is_abs_section (h->root.u.def.section));
+ abs_symbol_p = h != NULL && bfd_is_abs_symbol (&h->root);
/* Since STT_GNU_IFUNC symbol must go through PLT, we handle
@@ -7363,8 +7362,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, struct bfd_link_info *info,
if (h != NULL
/* This is an absolute symbol. It represents a value instead
of an address. */
- && ((h->root.type == bfd_link_hash_defined
- && bfd_is_abs_section (h->root.u.def.section))
+ && (bfd_is_abs_symbol (&h->root)
/* This is an undefined symbol. */
|| h->root.type == bfd_link_hash_undefined))
break;
diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
index ac9539082b1..b7a50de4171 100644
--- a/bfd/xcofflink.c
+++ b/bfd/xcofflink.c
@@ -2687,10 +2687,7 @@ xcoff_need_ldrel_p (struct bfd_link_info *info, struct internal_reloc *rel,
case R_RLA:
/* Absolute relocations against absolute symbols can be
resolved statically. */
- if (h != NULL
- && (h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak)
- && bfd_is_abs_section (h->root.u.def.section))
+ if (h != NULL && bfd_is_abs_symbol (&h->root))
return FALSE;
return TRUE;
@@ -3125,7 +3122,7 @@ bfd_xcoff_import_symbol (bfd *output_bfd,
if (val != (bfd_vma) -1)
{
if (h->root.type == bfd_link_hash_defined
- && (! bfd_is_abs_section (h->root.u.def.section)
+ && (!bfd_is_abs_symbol (&h->root)
|| h->root.u.def.value != val))
(*info->callbacks->multiple_definition) (info, &h->root, output_bfd,
bfd_abs_section_ptr, val);
@@ -5589,7 +5586,7 @@ xcoff_write_global_symbol (struct bfd_hash_entry *bh, void * inf)
|| h->root.type == bfd_link_hash_defweak)
&& h->smclas == XMC_XO)
{
- BFD_ASSERT (bfd_is_abs_section (h->root.u.def.section));
+ BFD_ASSERT (bfd_is_abs_symbol (&h->root));
isym.n_value = h->root.u.def.value;
isym.n_scnum = N_UNDEF;
if (h->root.type == bfd_link_hash_undefweak