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

Unified Diff: bfd/elf64-hppa.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/elf64-alpha.c ('k') | bfd/elf64-ia64-vms.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: bfd/elf64-hppa.c
diff --git a/bfd/elf64-hppa.c b/bfd/elf64-hppa.c
index 62efef3979dc2912a5669bb56464ace20d9b552e..c992563761db640470df3d8ce7f76ac4e46dc888 100644
--- a/bfd/elf64-hppa.c
+++ b/bfd/elf64-hppa.c
@@ -1,6 +1,6 @@
/* Support for HPPA 64-bit ELF
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010, 2011, 2012
+ Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+ 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -194,9 +194,6 @@ static bfd_boolean elf64_hppa_finish_dynamic_symbol
(bfd *, struct bfd_link_info *,
struct elf_link_hash_entry *, Elf_Internal_Sym *);
-static enum elf_reloc_type_class elf64_hppa_reloc_type_class
- (const Elf_Internal_Rela *);
-
static bfd_boolean elf64_hppa_finish_dynamic_sections
(bfd *, struct bfd_link_info *);
@@ -299,7 +296,7 @@ elf64_hppa_hash_table_create (bfd *abfd)
struct elf64_hppa_link_hash_table *htab;
bfd_size_type amt = sizeof (*htab);
- htab = bfd_zalloc (abfd, amt);
+ htab = bfd_zmalloc (amt);
if (htab == NULL)
return NULL;
@@ -308,7 +305,7 @@ elf64_hppa_hash_table_create (bfd *abfd)
sizeof (struct elf64_hppa_link_hash_entry),
HPPA64_ELF_DATA))
{
- bfd_release (abfd, htab);
+ free (htab);
return NULL;
}
@@ -476,7 +473,7 @@ hppa64_elf_local_refcounts (bfd *abfd)
{
Elf_Internal_Shdr *symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
bfd_signed_vma *local_refcounts;
-
+
local_refcounts = elf_local_got_refcounts (abfd);
if (local_refcounts == NULL)
{
@@ -647,6 +644,9 @@ elf64_hppa_check_relocs (bfd *abfd,
|| hh->eh.root.type == bfd_link_hash_warning)
hh = hppa_elf_hash_entry (hh->eh.root.u.i.link);
+ /* PR15323, ref flags aren't set for references in the same
+ object. */
+ hh->eh.root.non_ir_ref = 1;
hh->eh.ref_regular = 1;
}
else
@@ -796,7 +796,7 @@ elf64_hppa_check_relocs (bfd *abfd,
else
{
bfd_signed_vma *local_dlt_refcounts;
-
+
/* This is a DLT entry for a local symbol. */
local_dlt_refcounts = hppa64_elf_local_refcounts (abfd);
if (local_dlt_refcounts == NULL)
@@ -821,7 +821,7 @@ elf64_hppa_check_relocs (bfd *abfd,
{
bfd_signed_vma *local_dlt_refcounts;
bfd_signed_vma *local_plt_refcounts;
-
+
/* This is a PLT entry for a local symbol. */
local_dlt_refcounts = hppa64_elf_local_refcounts (abfd);
if (local_dlt_refcounts == NULL)
@@ -855,7 +855,7 @@ elf64_hppa_check_relocs (bfd *abfd,
{
bfd_signed_vma *local_dlt_refcounts;
bfd_signed_vma *local_opd_refcounts;
-
+
/* This is a OPD for a local symbol. */
local_dlt_refcounts = hppa64_elf_local_refcounts (abfd);
if (local_dlt_refcounts == NULL)
@@ -1132,7 +1132,7 @@ elf64_hppa_post_process_headers (bfd *abfd,
Elf_Internal_Ehdr * i_ehdrp;
i_ehdrp = elf_elfheader (abfd);
-
+
i_ehdrp->e_ident[EI_OSABI] = get_elf_backend_data (abfd)->elf_osabi;
i_ehdrp->e_ident[EI_ABIVERSION] = 1;
}
@@ -1639,7 +1639,7 @@ elf64_hppa_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
{
*local_dlt = sec->size;
sec->size += DLT_ENTRY_SIZE;
- if (info->shared)
+ if (info->shared)
{
srel->size += sizeof (Elf64_External_Rela);
}
@@ -2213,7 +2213,7 @@ elf64_hppa_finalize_opd (struct elf_link_hash_entry *eh, void *data)
nh = elf_link_hash_lookup (elf_hash_table (info),
new_name, TRUE, TRUE, FALSE);
-
+
/* All we really want from the new symbol is its dynamic
symbol index. */
if (nh)
@@ -2446,7 +2446,9 @@ elf64_hppa_finalize_dynreloc (struct elf_link_hash_entry *eh,
dynamic linker, before writing them out. */
static enum elf_reloc_type_class
-elf64_hppa_reloc_type_class (const Elf_Internal_Rela *rela)
+elf64_hppa_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ const asection *rel_sec ATTRIBUTE_UNUSED,
+ const Elf_Internal_Rela *rela)
{
if (ELF64_R_SYM (rela->r_info) == STN_UNDEF)
return reloc_class_relative;
@@ -2522,6 +2524,8 @@ elf64_hppa_finish_dynamic_sections (bfd *output_bfd,
area at the start of the .data section. So all we have to
to is find the start of the .data section. */
s = bfd_get_section_by_name (output_bfd, ".data");
+ if (!s)
+ return FALSE;
dyn.d_un.d_ptr = s->vma;
bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
break;
@@ -2591,10 +2595,10 @@ elf64_hppa_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
case 760: /* Linux/hppa */
/* pr_cursig */
- elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12);
+ elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12);
/* pr_pid */
- elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 32);
+ elf_tdata (abfd)->core->lwpid = bfd_get_32 (abfd, note->descdata + 32);
/* pr_reg */
offset = 112;
@@ -2620,16 +2624,16 @@ elf64_hppa_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
return FALSE;
case 136: /* Linux/hppa elf_prpsinfo. */
- elf_tdata (abfd)->core_program
+ elf_tdata (abfd)->core->program
= _bfd_elfcore_strndup (abfd, note->descdata + 40, 16);
- elf_tdata (abfd)->core_command
+ elf_tdata (abfd)->core->command
= _bfd_elfcore_strndup (abfd, note->descdata + 56, 80);
}
/* Note that for some reason, a spurious space is tacked
onto the end of the args in some (at least one anyway)
implementations, so strip it off if it exists. */
- command = elf_tdata (abfd)->core_command;
+ command = elf_tdata (abfd)->core->command;
n = strlen (command);
if (0 < n && command[n - 1] == ' ')
@@ -2687,7 +2691,7 @@ elf64_hppa_modify_segment_map (bfd *abfd,
s = bfd_get_section_by_name (abfd, ".interp");
if (! s)
{
- for (m = elf_tdata (abfd)->segment_map; m != NULL; m = m->next)
+ for (m = elf_seg_map (abfd); m != NULL; m = m->next)
if (m->p_type == PT_PHDR)
break;
if (m == NULL)
@@ -2703,12 +2707,12 @@ elf64_hppa_modify_segment_map (bfd *abfd,
m->p_paddr_valid = 1;
m->includes_phdrs = 1;
- m->next = elf_tdata (abfd)->segment_map;
- elf_tdata (abfd)->segment_map = m;
+ m->next = elf_seg_map (abfd);
+ elf_seg_map (abfd) = m;
}
}
- for (m = elf_tdata (abfd)->segment_map; m != NULL; m = m->next)
+ for (m = elf_seg_map (abfd); m != NULL; m = m->next)
if (m->p_type == PT_LOAD)
{
unsigned int i;
@@ -2772,7 +2776,7 @@ elf64_hppa_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int sec_index,
if (bfd_bread (&sig, 4, abfd) != 4)
return FALSE;
- elf_tdata (abfd)->core_signal = sig;
+ elf_tdata (abfd)->core->signal = sig;
if (!_bfd_elf_make_section_from_phdr (abfd, hdr, sec_index, typename))
return FALSE;
@@ -3190,7 +3194,7 @@ elf_hppa_final_link_relocate (Elf_Internal_Rela *rel,
if (hppa_info == NULL)
return bfd_reloc_notsupported;
-
+
symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
local_offsets = elf_local_got_offsets (input_bfd);
insn = bfd_get_32 (input_bfd, hit_data);
@@ -3273,7 +3277,7 @@ elf_hppa_final_link_relocate (Elf_Internal_Rela *rel,
&& value + addend + max_branch_offset >= 2*max_branch_offset)
{
(*_bfd_error_handler)
- (_("%B(%A+0x" BFD_VMA_FMT "x): cannot reach %s"),
+ (_("%B(%A+0x%" BFD_VMA_FMT "x): cannot reach %s"),
input_bfd,
input_section,
offset,
@@ -3859,14 +3863,14 @@ elf64_hppa_relocate_section (bfd *output_bfd,
/* This is not a local symbol. */
struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd);
- /* It seems this can happen with erroneous or unsupported
+ /* It seems this can happen with erroneous or unsupported
input (mixing a.out and elf in an archive, for example.) */
if (sym_hashes == NULL)
return FALSE;
eh = sym_hashes[r_symndx - symtab_hdr->sh_info];
- while (eh->root.type == bfd_link_hash_indirect
+ while (eh->root.type == bfd_link_hash_indirect
|| eh->root.type == bfd_link_hash_warning)
eh = (struct elf_link_hash_entry *) eh->root.u.i.link;
@@ -4057,7 +4061,7 @@ const struct elf_size_info hppa64_elf_size_info =
elf64_hppa_finish_dynamic_sections
#define elf_backend_grok_prstatus elf64_hppa_grok_prstatus
#define elf_backend_grok_psinfo elf64_hppa_grok_psinfo
-
+
/* Stuff for the BFD linker: */
#define bfd_elf64_bfd_link_hash_table_create \
elf64_hppa_hash_table_create
« no previous file with comments | « bfd/elf64-alpha.c ('k') | bfd/elf64-ia64-vms.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698