projects
/
platform
/
upstream
/
binutils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
(cris_elf_relocate_section) <R_CRIS_8, R_CRIS_16, R_CRIS_32>: Add missing
[platform/upstream/binutils.git]
/
bfd
/
elf32-cris.c
diff --git
a/bfd/elf32-cris.c
b/bfd/elf32-cris.c
index
389798d
..
1f4b0dd
100644
(file)
--- a/
bfd/elf32-cris.c
+++ b/
bfd/elf32-cris.c
@@
-1494,7
+1494,7
@@
cris_elf_relocate_section (output_bfd, info, input_bfd, input_section,
&& r_type != R_CRIS_16_PCREL
&& r_type != R_CRIS_32_PCREL)
|| (!info->symbolic
&& r_type != R_CRIS_16_PCREL
&& r_type != R_CRIS_32_PCREL)
|| (!info->symbolic
- ||
!h->def_regular
)))
+ ||
(h != NULL && !h->def_regular)
)))
{
Elf_Internal_Rela outrel;
bfd_byte *loc;
{
Elf_Internal_Rela outrel;
bfd_byte *loc;
@@
-3024,6
+3024,11
@@
elf_cris_copy_indirect_symbol (struct bfd_link_info *info,
edir = (struct elf_cris_link_hash_entry *) dir;
eind = (struct elf_cris_link_hash_entry *) ind;
edir = (struct elf_cris_link_hash_entry *) dir;
eind = (struct elf_cris_link_hash_entry *) ind;
+ /* Only indirect symbols are replaced; we're not interested in
+ updating any of EIND's fields for other symbols. */
+ if (eind->root.root.type != bfd_link_hash_indirect)
+ return;
+
BFD_ASSERT (edir->pcrel_relocs_copied == NULL);
BFD_ASSERT (edir->gotplt_offset == 0 || eind->gotplt_offset == 0);
BFD_ASSERT (edir->pcrel_relocs_copied == NULL);
BFD_ASSERT (edir->gotplt_offset == 0 || eind->gotplt_offset == 0);