aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/bfd-in2.h11
-rw-r--r--bfd/linker.c15
3 files changed, 30 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index d4ae7ed..008d416 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2018-07-17 Maciej W. Rozycki <macro@mips.com>
+
+ * linker.c (bfd_is_abs_symbol): New macro.
+ * bfd-in2.h: Regenerate.
+
2018-07-16 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
* elf-bfd.h (elfcore_write_ppc_tar): Add prototype.
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 93745bd..3414682 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -7802,6 +7802,17 @@ bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
const char *bfd_format_string (bfd_format format);
/* Extracted from linker.c. */
+/* Return TRUE if the symbol described by a linker hash entry H
+ is going to be absolute. Linker-script defined symbols can be
+ converted from absolute to section-relative ones late in the
+ link. Use this macro to correctly determine whether the symbol
+ will actually end up absolute in output. */
+#define bfd_is_abs_symbol(H) \
+ (((H)->type == bfd_link_hash_defined \
+ || (H)->type == bfd_link_hash_defweak) \
+ && bfd_is_abs_section ((H)->u.def.section) \
+ && !(H)->rel_from_abs)
+
bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
#define bfd_link_split_section(abfd, sec) \
diff --git a/bfd/linker.c b/bfd/linker.c
index 6b4c8e5..9fee90d 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -484,7 +484,20 @@ _bfd_link_hash_table_init
/* Look up a symbol in a link hash table. If follow is TRUE, we
follow bfd_link_hash_indirect and bfd_link_hash_warning links to
- the real symbol. */
+ the real symbol.
+
+.{* Return TRUE if the symbol described by a linker hash entry H
+. is going to be absolute. Linker-script defined symbols can be
+. converted from absolute to section-relative ones late in the
+. link. Use this macro to correctly determine whether the symbol
+. will actually end up absolute in output. *}
+.#define bfd_is_abs_symbol(H) \
+. (((H)->type == bfd_link_hash_defined \
+. || (H)->type == bfd_link_hash_defweak) \
+. && bfd_is_abs_section ((H)->u.def.section) \
+. && !(H)->rel_from_abs)
+.
+*/
struct bfd_link_hash_entry *
bfd_link_hash_lookup (struct bfd_link_hash_table *table,