aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2010-05-14 03:15:20 +0000
committerAlan Modra <amodra@gmail.com>2010-05-14 03:15:20 +0000
commite092cb30d23375162df46825e5b5bc99a339245b (patch)
treea4808ab88f40435294c6f5580decd4f3966398db /ld
parent6595d32bb250ef0d53a93c91774a284d04988f7e (diff)
downloadfsf-binutils-gdb-e092cb30d23375162df46825e5b5bc99a339245b.zip
fsf-binutils-gdb-e092cb30d23375162df46825e5b5bc99a339245b.tar.gz
fsf-binutils-gdb-e092cb30d23375162df46825e5b5bc99a339245b.tar.bz2
PR ld/11583
* ldexp.c (exp_fold_tree_1): If assignment source expression is invalid, make the destination symbol undefined.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/ldexp.c8
2 files changed, 14 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 7fa12d7..ca76b05 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2010-05-14 Alan Modra <amodra@gmail.com>
+
+ PR ld/11583
+ * ldexp.c (exp_fold_tree_1): If assignment source expression is
+ invalid, make the destination symbol undefined.
+
2010-05-11 Kai Tietz <kai.tietz@onevision.com>
* emultempl/pe.em (gld_${EMULATION_NAME}_before_parse):
diff --git a/ld/ldexp.c b/ld/ldexp.c
index 7fdf7f4..34d9eab 100644
--- a/ld/ldexp.c
+++ b/ld/ldexp.c
@@ -830,6 +830,14 @@ exp_fold_tree_1 (etree_type *tree)
hsrc);
}
}
+ else if (expld.phase == lang_final_phase_enum)
+ {
+ h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst,
+ FALSE, FALSE, TRUE);
+ if (h != NULL
+ && h->type == bfd_link_hash_new)
+ h->type = bfd_link_hash_undefined;
+ }
}
break;