+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.
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) \
/* 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,
+2018-07-17 Maciej W. Rozycki <macro@mips.com>
+
+ * bfdlink.h (bfd_link_hash_entry): Add `rel_from_abs' member.
+
2018-07-06 Alan Modra <amodra@gmail.com>
* diagnostics.h: Comment on macro usage.
/* Symbol defined in a linker script. */
unsigned int ldscript_def : 1;
+ /* Symbol will be converted from absolute to section-relative. Set for
+ symbols defined by a script from "dot" (also SEGMENT_START or ORIGIN)
+ outside of an output section statement. */
+ unsigned int rel_from_abs : 1;
+
/* A union of information depending upon the type. */
union
{
+2018-07-17 Maciej W. Rozycki <macro@mips.com>
+
+ * ldexp.c (exp_fold_tree_1) <etree_assign, etree_provide>
+ <etree_provided>: Copy expression's `rel_from_abs' flag to the
+ link hash.
+
2018-07-12 Maciej W. Rozycki <macro@mips.com>
* testsuite/ld-mips-elf/mips-elf.exp (run_dump_test_abi)
h->u.def.section = expld.result.section;
h->linker_def = ! tree->assign.type.lineno;
h->ldscript_def = 1;
+ h->rel_from_abs = expld.rel_from_abs;
if (tree->assign.hidden)
bfd_link_hide_symbol (link_info.output_bfd,
&link_info, h);