Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1433)

Unified Diff: bfd/elf32-iq2000.c

Issue 124383005: GDB 7.6.50 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@upstream
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « bfd/elf32-ip2k.c ('k') | bfd/elf32-lm32.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: bfd/elf32-iq2000.c
diff --git a/bfd/elf32-iq2000.c b/bfd/elf32-iq2000.c
index 079a96219434be4a6ff2ed8129c14d36a1d3eff4..ff7ef4a3ea26ba76e7b901b1533ed4c1b57a289e 100644
--- a/bfd/elf32-iq2000.c
+++ b/bfd/elf32-iq2000.c
@@ -290,7 +290,7 @@ iq2000_elf_relocate_hi16 (bfd *input_bfd,
bfd_vma insn;
insn = bfd_get_32 (input_bfd, contents + relhi->r_offset);
-
+
value += relhi->r_addend;
value &= 0x7fffffff; /* Mask off top-bit which is Harvard mask bit. */
@@ -299,7 +299,7 @@ iq2000_elf_relocate_hi16 (bfd *input_bfd,
if (value & 0x8000)
value += 0x10000;
- value >>= 16;
+ value >>= 16;
insn = ((insn & ~0xFFFF) | value);
bfd_put_32 (input_bfd, insn, contents + relhi->r_offset);
@@ -444,7 +444,7 @@ iq2000_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED,
/* Look through the relocs for a section during the first phase.
Since we don't do .gots or .plts, we just need to consider the
virtual table relocs for gc. */
-
+
static bfd_boolean
iq2000_elf_check_relocs (bfd *abfd,
struct bfd_link_info *info,
@@ -456,19 +456,19 @@ iq2000_elf_check_relocs (bfd *abfd,
const Elf_Internal_Rela *rel;
const Elf_Internal_Rela *rel_end;
bfd_boolean changed = FALSE;
-
+
if (info->relocatable)
return TRUE;
-
+
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
sym_hashes = elf_sym_hashes (abfd);
-
+
rel_end = relocs + sec->reloc_count;
for (rel = relocs; rel < rel_end; rel++)
{
struct elf_link_hash_entry *h;
unsigned long r_symndx;
-
+
r_symndx = ELF32_R_SYM (rel->r_info);
if (r_symndx < symtab_hdr->sh_info)
h = NULL;
@@ -478,8 +478,12 @@ iq2000_elf_check_relocs (bfd *abfd,
while (h->root.type == bfd_link_hash_indirect
|| h->root.type == bfd_link_hash_warning)
h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ /* PR15323, ref flags aren't set for references in the same
+ object. */
+ h->root.non_ir_ref = 1;
}
-
+
switch (ELF32_R_TYPE (rel->r_info))
{
/* This relocation describes the C++ object vtable
@@ -488,7 +492,7 @@ iq2000_elf_check_relocs (bfd *abfd,
if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
return FALSE;
break;
-
+
/* This relocation describes which C++ vtable entries
are actually used. Record for later use during GC. */
case R_IQ2000_GNU_VTENTRY:
@@ -584,20 +588,20 @@ iq2000_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
bfd_reloc_status_type r;
const char * name = NULL;
int r_type;
-
+
r_type = ELF32_R_TYPE (rel->r_info);
-
+
if ( r_type == R_IQ2000_GNU_VTINHERIT
|| r_type == R_IQ2000_GNU_VTENTRY)
continue;
-
+
r_symndx = ELF32_R_SYM (rel->r_info);
howto = iq2000_elf_howto_table + ELF32_R_TYPE (rel->r_info);
h = NULL;
sym = NULL;
sec = NULL;
-
+
if (r_symndx < symtab_hdr->sh_info)
{
asection *osec;
@@ -615,7 +619,7 @@ iq2000_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
relocation = (sec->output_section->vma
+ sec->output_offset
+ sym->st_value);
-
+
name = bfd_elf_string_from_elf_section
(input_bfd, symtab_hdr->sh_link, sym->st_name);
name = (name == NULL) ? bfd_section_name (input_bfd, osec) : name;
@@ -623,12 +627,12 @@ iq2000_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
else
{
bfd_boolean unresolved_reloc;
- bfd_boolean warned;
+ bfd_boolean warned, ignored;
RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
r_symndx, symtab_hdr, sym_hashes,
h, sec, relocation,
- unresolved_reloc, warned);
+ unresolved_reloc, warned, ignored);
name = h->root.root.string;
}
@@ -674,12 +678,12 @@ iq2000_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
(info, (h ? &h->root : NULL), name, howto->name,
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
break;
-
+
case bfd_reloc_undefined:
r = info->callbacks->undefined_symbol
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
break;
-
+
case bfd_reloc_outofrange:
msg = _("internal error: out of range error");
break;
@@ -836,7 +840,7 @@ iq2000_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
break;
}
}
-
+
/* Print out any mismatches from above. */
if (new_opt[0])
{
« no previous file with comments | « bfd/elf32-ip2k.c ('k') | bfd/elf32-lm32.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698