aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2002-09-02 17:03:30 +0000
committerNick Clifton <nickc@redhat.com>2002-09-02 17:03:30 +0000
commit67010b4679cde27a16ba60f1ff8ec1d502a6d681 (patch)
treeb5115745ec78ebf91c1abf2bc9ae42e56028d2e4 /ld
parentd66198e1a79726cf2c4eac8cb9e9b25b40a928e6 (diff)
downloadgdb-67010b4679cde27a16ba60f1ff8ec1d502a6d681.zip
gdb-67010b4679cde27a16ba60f1ff8ec1d502a6d681.tar.gz
gdb-67010b4679cde27a16ba60f1ff8ec1d502a6d681.tar.bz2
Add EXTERN references to __ctbpm __gp and __ep.
Define TEMPLATE_NAME. Revert bogus change to ldexp.c
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/emulparams/v850.sh1
-rw-r--r--ld/ldexp.c24
-rw-r--r--ld/scripttempl/v850.sc1
4 files changed, 18 insertions, 14 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index f097310..4a3abd9 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,8 +1,8 @@
2002-09-02 Nick Clifton <nickc@redhat.com>
- * ldexp.c (exp_fold_tree): If the first attempt to lookup a
- PROVIDEd symbol fails, look it up again, but this time with
- the 'create' flag set.
+ * scripttempl/v850.sc: Add EXTERN references to __ctbpm __gp and
+ __ep.
+ * emulparams/v850.sh (TEMPLATE_NAME): Define.
2002-08-30 Nick Clifton <nickc@redhat.com>
diff --git a/ld/emulparams/v850.sh b/ld/emulparams/v850.sh
index 78bfbd3..96cdc68 100644
--- a/ld/emulparams/v850.sh
+++ b/ld/emulparams/v850.sh
@@ -12,3 +12,4 @@ ARCH=v850
MAXPAGESIZE=256
ENTRY=_start
EMBEDDED=yes
+TEMPLATE_NAME=elf32
diff --git a/ld/ldexp.c b/ld/ldexp.c
index 6c4937d..8e3ea63 100644
--- a/ld/ldexp.c
+++ b/ld/ldexp.c
@@ -726,20 +726,22 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp)
if (tree->type.node_class == etree_assign)
create = true;
else
- create = false;
+ create = false;
h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst,
create, false, false);
-
- if (tree->type.node_class == etree_provide
- && (h == NULL
- || h->type == bfd_link_hash_undefined
- || h->type == bfd_link_hash_common))
- h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst,
- true, false, false);
-
if (h == (struct bfd_link_hash_entry *) NULL)
- einfo (_("%P%F:%s: hash creation failed\n"),
- tree->assign.dst);
+ {
+ if (tree->type.node_class == etree_assign)
+ einfo (_("%P%F:%s: hash creation failed\n"),
+ tree->assign.dst);
+ }
+ else if (tree->type.node_class == etree_provide
+ && h->type != bfd_link_hash_undefined
+ && h->type != bfd_link_hash_common)
+ {
+ /* Do nothing. The symbol was defined by some
+ object. */
+ }
else
{
/* FIXME: Should we worry if the symbol is already
diff --git a/ld/scripttempl/v850.sc b/ld/scripttempl/v850.sc
index 8958321..18ba03a 100644
--- a/ld/scripttempl/v850.sc
+++ b/ld/scripttempl/v850.sc
@@ -4,6 +4,7 @@ OUTPUT_FORMAT("elf32-v850", "elf32-v850",
OUTPUT_ARCH(v850)
ENTRY(_start)
SEARCH_DIR(.);
+EXTERN(__ctbp __ep __gp);
SECTIONS
{
/* This saves a little space in the ELF file, since the zda starts