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

Side by Side Diff: bfd/elf64-sparc.c

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 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 unified diff | Download patch
« no previous file with comments | « bfd/elf64-sh64.c ('k') | bfd/elf64-tilegx.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
None
OLDNEW
1 /* SPARC-specific support for 64-bit ELF 1 /* SPARC-specific support for 64-bit ELF
2 Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2 Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
3 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 3 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
4 Free Software Foundation, Inc. 4 Free Software Foundation, Inc.
5 5
6 This file is part of BFD, the Binary File Descriptor library. 6 This file is part of BFD, the Binary File Descriptor library.
7 7
8 This program is free software; you can redistribute it and/or modify 8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or 10 the Free Software Foundation; either version 3 of the License, or
11 (at your option) any later version. 11 (at your option) any later version.
12 12
13 This program is distributed in the hope that it will be useful, 13 This program is distributed in the hope that it will be useful,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 /* Read relocations for ASECT from REL_HDR. There are RELOC_COUNT of 50 /* Read relocations for ASECT from REL_HDR. There are RELOC_COUNT of
51 them. We cannot use generic elf routines for this, because R_SPARC_OLO10 51 them. We cannot use generic elf routines for this, because R_SPARC_OLO10
52 has secondary addend in ELF64_R_TYPE_DATA. We handle it as two relocations 52 has secondary addend in ELF64_R_TYPE_DATA. We handle it as two relocations
53 for the same location, R_SPARC_LO10 and R_SPARC_13. */ 53 for the same location, R_SPARC_LO10 and R_SPARC_13. */
54 54
55 static bfd_boolean 55 static bfd_boolean
56 elf64_sparc_slurp_one_reloc_table (bfd *abfd, asection *asect, 56 elf64_sparc_slurp_one_reloc_table (bfd *abfd, asection *asect,
57 Elf_Internal_Shdr *rel_hdr, 57 Elf_Internal_Shdr *rel_hdr,
58 asymbol **symbols, bfd_boolean dynamic) 58 asymbol **symbols, bfd_boolean dynamic)
59 { 59 {
60 PTR allocated = NULL; 60 void * allocated = NULL;
61 bfd_byte *native_relocs; 61 bfd_byte *native_relocs;
62 arelent *relent; 62 arelent *relent;
63 unsigned int i; 63 unsigned int i;
64 int entsize; 64 int entsize;
65 bfd_size_type count; 65 bfd_size_type count;
66 arelent *relents; 66 arelent *relents;
67 67
68 allocated = (PTR) bfd_malloc (rel_hdr->sh_size); 68 allocated = bfd_malloc (rel_hdr->sh_size);
69 if (allocated == NULL) 69 if (allocated == NULL)
70 goto error_return; 70 goto error_return;
71 71
72 if (bfd_seek (abfd, rel_hdr->sh_offset, SEEK_SET) != 0 72 if (bfd_seek (abfd, rel_hdr->sh_offset, SEEK_SET) != 0
73 || bfd_bread (allocated, rel_hdr->sh_size, abfd) != rel_hdr->sh_size) 73 || bfd_bread (allocated, rel_hdr->sh_size, abfd) != rel_hdr->sh_size)
74 goto error_return; 74 goto error_return;
75 75
76 native_relocs = (bfd_byte *) allocated; 76 native_relocs = (bfd_byte *) allocated;
77 77
78 relents = asect->relocation + canon_reloc_count (asect); 78 relents = asect->relocation + canon_reloc_count (asect);
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 } 272 }
273 273
274 *storage = NULL; 274 *storage = NULL;
275 275
276 return ret; 276 return ret;
277 } 277 }
278 278
279 /* Write out the relocs. */ 279 /* Write out the relocs. */
280 280
281 static void 281 static void
282 elf64_sparc_write_relocs (bfd *abfd, asection *sec, PTR data) 282 elf64_sparc_write_relocs (bfd *abfd, asection *sec, void * data)
283 { 283 {
284 bfd_boolean *failedp = (bfd_boolean *) data; 284 bfd_boolean *failedp = (bfd_boolean *) data;
285 Elf_Internal_Shdr *rela_hdr; 285 Elf_Internal_Shdr *rela_hdr;
286 bfd_vma addr_offset; 286 bfd_vma addr_offset;
287 Elf64_External_Rela *outbound_relocas, *src_rela; 287 Elf64_External_Rela *outbound_relocas, *src_rela;
288 unsigned int idx, count; 288 unsigned int idx, count;
289 asymbol *last_sym = 0; 289 asymbol *last_sym = 0;
290 int last_sym_idx = 0; 290 int last_sym_idx = 0;
291 291
292 /* If we have already failed, don't do anything. */ 292 /* If we have already failed, don't do anything. */
(...skipping 30 matching lines...) Expand all
323 && r->address == addr 323 && r->address == addr
324 && bfd_is_abs_section ((*r->sym_ptr_ptr)->section) 324 && bfd_is_abs_section ((*r->sym_ptr_ptr)->section)
325 && (*r->sym_ptr_ptr)->value == 0) 325 && (*r->sym_ptr_ptr)->value == 0)
326 ++idx; 326 ++idx;
327 } 327 }
328 } 328 }
329 329
330 rela_hdr = elf_section_data (sec)->rela.hdr; 330 rela_hdr = elf_section_data (sec)->rela.hdr;
331 331
332 rela_hdr->sh_size = rela_hdr->sh_entsize * count; 332 rela_hdr->sh_size = rela_hdr->sh_entsize * count;
333 rela_hdr->contents = (PTR) bfd_alloc (abfd, rela_hdr->sh_size); 333 rela_hdr->contents = bfd_alloc (abfd, rela_hdr->sh_size);
334 if (rela_hdr->contents == NULL) 334 if (rela_hdr->contents == NULL)
335 { 335 {
336 *failedp = TRUE; 336 *failedp = TRUE;
337 return; 337 return;
338 } 338 }
339 339
340 /* Figure out whether the relocations are RELA or REL relocations. */ 340 /* Figure out whether the relocations are RELA or REL relocations. */
341 if (rela_hdr->sh_type != SHT_RELA) 341 if (rela_hdr->sh_type != SHT_RELA)
342 abort (); 342 abort ();
343 343
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 (_("Symbol `%s' has differing types: %s in %B, previously REGISTER in %B"), 535 (_("Symbol `%s' has differing types: %s in %B, previously REGISTER in %B"),
536 abfd, p->abfd, *namep, stt_types[type]); 536 abfd, p->abfd, *namep, stt_types[type]);
537 return FALSE; 537 return FALSE;
538 } 538 }
539 } 539 }
540 return TRUE; 540 return TRUE;
541 } 541 }
542 542
543 /* This function takes care of emitting STT_REGISTER symbols 543 /* This function takes care of emitting STT_REGISTER symbols
544 which we cannot easily keep in the symbol hash table. */ 544 which we cannot easily keep in the symbol hash table. */

error: old chunk mismatch

OLDNEW
« no previous file with comments | « bfd/elf64-sh64.c ('k') | bfd/elf64-tilegx.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698