aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf64-x86-64.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2004-10-08 13:55:11 +0000
committerDaniel Jacobowitz <drow@false.org>2004-10-08 13:55:11 +0000
commitd2b2c203e1ff2daf8cfeab0906084f9389e66246 (patch)
treeb26661436e0599afd2ba5bd7f05a8e346fec61bb /bfd/elf64-x86-64.c
parentd67a454c81bb8395692342d517d935e8bcaa882e (diff)
downloadgdb-d2b2c203e1ff2daf8cfeab0906084f9389e66246.zip
gdb-d2b2c203e1ff2daf8cfeab0906084f9389e66246.tar.gz
gdb-d2b2c203e1ff2daf8cfeab0906084f9389e66246.tar.bz2
bfd/
* config.bfd: Include 64-bit support for i[3-7]86-*-solaris2*. * elf64-x86-64.c (elf64_x86_64_section_from_shdr): New function. (elf_backend_section_from_shdr): Define. binutils/ * readelf.c (get_x86_64_section_type_name): New function. (get_section_type_name): Use it. gas/ * config/tc-i386.c: Include "elf/x86-64.h". (i386_elf_section_type): New function. * config/tc-i386.h (md_elf_section_type): Define. (i386_elf_section_type): New prototype. gas/testsuite/ * gas/i386/i386.exp: Don't run divide test for targets where '/' is a comment. Run x86-64-unwind for 64-bit ELF targets. * gas/i386/x86-64-unwind.d, gas/i386/x86-64-unwind.s: New. include/ * elf/common.h (PT_SUNW_EH_FRAME): Define. * elf/x86-64.h (SHT_X86_64_UNWIND): Define. ld/ * configure.tgt: Include elf_x86_64 for i[3-7]86-*-solaris2*.
Diffstat (limited to 'bfd/elf64-x86-64.c')
-rw-r--r--bfd/elf64-x86-64.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 8737f23..f039fa7 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -2782,6 +2782,21 @@ elf64_x86_64_plt_sym_val (bfd_vma i, const asection *plt,
return plt->vma + (i + 1) * PLT_ENTRY_SIZE;
}
+/* Handle an x86-64 specific section when reading an object file. This
+ is called when elfcode.h finds a section with an unknown type. */
+
+static bfd_boolean
+elf64_x86_64_section_from_shdr (bfd *abfd, Elf_Internal_Shdr *hdr, const char *name)
+{
+ if (hdr->sh_type != SHT_X86_64_UNWIND)
+ return FALSE;
+
+ if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
+ return FALSE;
+
+ return TRUE;
+}
+
#define TARGET_LITTLE_SYM bfd_elf64_x86_64_vec
#define TARGET_LITTLE_NAME "elf64-x86-64"
#define ELF_ARCH bfd_arch_i386
@@ -2819,4 +2834,7 @@ elf64_x86_64_plt_sym_val (bfd_vma i, const asection *plt,
#define elf_backend_object_p elf64_x86_64_elf_object_p
#define bfd_elf64_mkobject elf64_x86_64_mkobject
+#define elf_backend_section_from_shdr \
+ elf64_x86_64_section_from_shdr
+
#include "elf64-target.h"