diff options
author | Jakub Jelinek <jakub@redhat.com> | 2004-04-22 14:45:32 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2004-04-22 14:45:32 +0000 |
commit | 4c45e5c9ceb986f7d84ad09586d3bdf521140083 (patch) | |
tree | a31256112b6e7734a2f48e82d423d5c4133ee5ea /bfd/elf64-sparc.c | |
parent | d2f7ecac2c3c1058a1d07d19dc095eac7170ff7f (diff) | |
download | gdb-4c45e5c9ceb986f7d84ad09586d3bdf521140083.zip gdb-4c45e5c9ceb986f7d84ad09586d3bdf521140083.tar.gz gdb-4c45e5c9ceb986f7d84ad09586d3bdf521140083.tar.bz2 |
bfd/
* bfd.c (bfd_get_synthetic_symtab): Define.
* targets.c (BFD_JUMP_TABLE_DYNAMIC): Add
NAME##_get_synthetic_symtab.
(struct bfd_target): Add _bfd_get_synthetic_symtab.
* libbfd-in.h (_bfd_nodynamic_get_synthetic_symtab): Define.
* elf-bfd.h (struct elf_backend_data): Add plt_sym_val and
relplt_name fields.
(_bfd_elf_get_synthetic_symtab): New prototype.
* elfcode.h (elf_get_synthetic_symtab): Define.
* elf.c (_bfd_elf_get_synthetic_symtab): New function.
* elfxx-target.h (bfd_elfNN_get_synthetic_symtab): Define.
(elf_backend_plt_sym_val, elf_backend_relplt_name): Define.
(elfNN_bed): Add elf_backend_plt_sym_val and elf_backend_relplt_name.
* bfd-in2.h: Rebuilt.
* libbfd.h: Rebuilt.
* elf32-i386.c (elf_i386_plt_sym_val): New function.
(elf_backend_plt_sym_val): Define.
* elf64-x86-64.c (elf64_x86_64_plt_sym_val): New function.
(elf_backend_plt_sym_val): Define.
* elf32-s390.c (elf_s390_plt_sym_val): New function.
(elf_backend_plt_sym_val): Define.
* elf64-s390.c (elf_s390_plt_sym_val): New function.
(elf_backend_plt_sym_val): Define.
* elf32-sparc (elf32_sparc_plt_sym_val): New function.
(elf_backend_plt_sym_val): Define.
* elf64-sparc.c (sparc64_elf_plt_sym_val): New function.
(elf_backend_plt_sym_val): Define.
* elf32-ppc.c (ppc_elf_plt_sym_val): New function.
(elf_backend_plt_sym_val): Define.
* aout-target.h (MY_get_synthetic_symtab): Define.
* aout-tic30.c (MY_get_synthetic_symtab): Define.
* coff-rs6000.c (rs6000coff_vec): Add
_bfd_nodynamic_get_synthetic_symtab.
(pmac_xcoff_vec): Likewise.
* coff64-rs6000.c (rs6000coff64_vec): Add
_bfd_nodynamic_get_synthetic_symtab.
(aix5coff64_vec): Likewise.
* sunos.c (MY_get_synthetic_symtab): Define.
* vms.c (vms_get_synthetic_symtab): Define.
binutils/
* objdump.c (synthsyms, synthcount): New variables.
(disassemble_data): Use dynsyms for stripped binaries or libraries.
Add synthetized symbols.
(dump_bfd): For disassemble, initialize dynsyms always and
also synthsyms. Free synthsyms and clear {sym,dynsym,synth}count
before returning.
Diffstat (limited to 'bfd/elf64-sparc.c')
-rw-r--r-- | bfd/elf64-sparc.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/bfd/elf64-sparc.c b/bfd/elf64-sparc.c index 4f28325..886cb4d 100644 --- a/bfd/elf64-sparc.c +++ b/bfd/elf64-sparc.c @@ -3107,6 +3107,24 @@ sparc64_elf_object_p (abfd) return bfd_default_set_arch_mach (abfd, bfd_arch_sparc, mach); } +/* Return address for Ith PLT stub in section PLT, for relocation REL + or (bfd_vma) -1 if it should not be included. */ + +static bfd_vma +sparc64_elf_plt_sym_val (bfd_vma i, const asection *plt, + const arelent *rel) +{ + bfd_vma j; + + i += PLT_HEADER_SIZE / PLT_ENTRY_SIZE; + if (i < LARGE_PLT_THRESHOLD) + return plt->vma + i * PLT_ENTRY_SIZE; + + j = (i - LARGE_PLT_THRESHOLD) % 160; + i -= j; + return plt->vma + i * PLT_ENTRY_SIZE + j * 4 * 6; +} + /* Relocations in the 64 bit SPARC ELF ABI are more complex than in standard ELF, because R_SPARC_OLO10 has secondary addend in ELF64_R_TYPE_DATA field. This structure is used to redirect the @@ -3206,6 +3224,8 @@ const struct elf_size_info sparc64_elf_size_info = sparc64_elf_merge_private_bfd_data #define elf_backend_fake_sections \ sparc64_elf_fake_sections +#define elf_backend_plt_sym_val \ + sparc64_elf_plt_sym_val #define elf_backend_size_info \ sparc64_elf_size_info |