This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] bfd/elfnn-aarch64.c: Set st_value to zero for undefined symbols
- From: Will Newton <will dot newton at linaro dot org>
- To: binutils at sourceware dot org
- Date: Thu, 29 Jan 2015 12:43:27 +0000
- Subject: [PATCH] bfd/elfnn-aarch64.c: Set st_value to zero for undefined symbols
- Authentication-results: sourceware.org; auth=none
Unless pointer_equality_needed is set then set st_value to be zero
for undefined symbols. This relates to BZ #16715.
bfd/ChangeLog:
2015-01-28 Will Newton <will.newton@linaro.org>
* elfnn-aarch64.c (elfNN_aarch64_finish_dynamic_symbol):
Set st_value to zero for undefined symbols unless
pointer_equality_needed.
---
bfd/elfnn-aarch64.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 37de7fa..ee718c5 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -7441,6 +7441,12 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
comparisons work between an application and shared
library. */
sym->st_shndx = SHN_UNDEF;
+ /* If the symbol is weak, we do need to clear the value.
+ Otherwise, the PLT entry would provide a definition for
+ the symbol even if the symbol wasn't defined anywhere,
+ and so the symbol would never be NULL. */
+ if (!h->ref_regular_nonweak || !h->pointer_equality_needed)
+ sym->st_value = 0;
}
}
--
2.1.0