summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorart <art@openbsd.org>2000-02-21 16:56:56 +0000
committerart <art@openbsd.org>2000-02-21 16:56:56 +0000
commite8e02239d71dff30fb2b0e83a75cf02703df9ff9 (patch)
tree5698ec84d989b31de5ac4033c18841f4ad36be22
parentback out recent change. completely breaks ld on the sparc: (diff)
downloadwireguard-openbsd-e8e02239d71dff30fb2b0e83a75cf02703df9ff9.tar.xz
wireguard-openbsd-e8e02239d71dff30fb2b0e83a75cf02703df9ff9.zip
Revert the last revert. (with the bug fixed)
-rw-r--r--gnu/usr.bin/ld/ld.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gnu/usr.bin/ld/ld.c b/gnu/usr.bin/ld/ld.c
index d29b195fe70..992e1633d94 100644
--- a/gnu/usr.bin/ld/ld.c
+++ b/gnu/usr.bin/ld/ld.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ld.c,v 1.14 2000/02/21 16:01:04 deraadt Exp $ */
+/* $OpenBSD: ld.c,v 1.15 2000/02/21 16:56:56 art Exp $ */
/* $NetBSD: ld.c,v 1.52 1998/02/20 03:12:51 jonathan Exp $ */
/*-
@@ -1882,6 +1882,7 @@ digest_pass1()
FOR_EACH_SYMBOL(i, sp) {
symbol *spsave;
struct localsymbol *lsp;
+ struct nlist *q = NULL;
int defs = 0;
if (!(sp->flags & GS_REFERENCED)) {
@@ -2029,6 +2030,11 @@ digest_pass1()
common_defined_global_count--;
undefined_global_sym_count++;
}
+ /* Let WEAK symbols take precedence over second class */
+ if (q != NULL && N_ISWEAK(q) &&
+ (lsp->entry->flags & E_SECONDCLASS))
+ continue;
+ q = p;
sp->def_lsp = lsp;
sp->so_defined = type;