summaryrefslogtreecommitdiff
path: root/ld/ldemul.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2010-12-20 13:00:11 +0000
committerAlan Modra <amodra@bigpond.net.au>2010-12-20 13:00:11 +0000
commit5daebc6a6606a30e60716f5bdee3d2018b560e8e (patch)
tree1d18a8f34c351bb9990aec7ab230d26626bbff0b /ld/ldemul.c
parente347ef3b343fc42ed312d5125047d59ae15df795 (diff)
downloadbinutils-redhat-5daebc6a6606a30e60716f5bdee3d2018b560e8e.tar.gz
* ld.texinfo (Expression Section): Describe treatment of numbers
and absolute symbols. * ldemul.c (after_open_default): Look up __ld_compatibility. * ldexp.c (fold_name): Convert absolute symbols to numbers when inside output section definitions, or when __ld_compatibility >= 221. (exp_fold_tree_1): Convert numbers to absolute when not in output section definition and __ld_compatibility < 221. Don't always convert values outside an output section definition to absolute. * ldexp.h (uses_defined): Comment. * ldlang.c (ld_compatibility): New variable. * ldlang.h (ld_compatibility): Declare. * emultempl/aix.em, * emultempl/armcoff.em, * emultempl/beos.em, * emultempl/elf32.em, * emultempl/genelf.em, * emultempl/lnk960.em, * emultempl/m68kcoff.em, * emultempl/mmo.em, * emultempl/pe.em, * emultempl/pep.em, * emultempl/sunos.em, * emultempl/z80.em: Call after_open_default from after_open function.
Diffstat (limited to 'ld/ldemul.c')
-rw-r--r--ld/ldemul.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ld/ldemul.c b/ld/ldemul.c
index f1f3979578..3c07ceb364 100644
--- a/ld/ldemul.c
+++ b/ld/ldemul.c
@@ -226,6 +226,16 @@ after_parse_default (void)
void
after_open_default (void)
{
+ struct bfd_link_hash_entry *h;
+
+ h = bfd_wrapped_link_hash_lookup (link_info.output_bfd,
+ &link_info,
+ "__ld_compatibility",
+ FALSE, FALSE, TRUE);
+ if (h != NULL
+ && (h->type == bfd_link_hash_defined
+ || h->type == bfd_link_hash_defweak))
+ ld_compatibility = h->u.def.value;
}
void