projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
exceptions.c:print_flush: Remove obsolete check
[deliverable/binutils-gdb.git]
/
bfd
/
elf32-i386.c
diff --git
a/bfd/elf32-i386.c
b/bfd/elf32-i386.c
index 49797dcbfaffd335a326e50a068dd456b74ad78d..2f994bf969e286486416cc1d04d594176925e3ae 100644
(file)
--- a/
bfd/elf32-i386.c
+++ b/
bfd/elf32-i386.c
@@
-1,5
+1,5
@@
/* Intel 80386/80486-specific support for 32-bit ELF
/* Intel 80386/80486-specific support for 32-bit ELF
- Copyright (C) 1993-20
18
Free Software Foundation, Inc.
+ Copyright (C) 1993-20
20
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
This file is part of BFD, the Binary File Descriptor library.
@@
-370,7
+370,7
@@
elf_i386_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
}
static reloc_howto_type *
}
static reloc_howto_type *
-elf_i386_rtype_to_howto (
bfd *abfd ATTRIBUTE_UNUSED,
unsigned r_type)
+elf_i386_rtype_to_howto (unsigned r_type)
{
unsigned int indx;
{
unsigned int indx;
@@
-395,7
+395,7
@@
elf_i386_info_to_howto_rel (bfd *abfd,
{
unsigned int r_type = ELF32_R_TYPE (dst->r_info);
{
unsigned int r_type = ELF32_R_TYPE (dst->r_info);
- if ((cache_ptr->howto = elf_i386_rtype_to_howto (
abfd,
r_type)) == NULL)
+ if ((cache_ptr->howto = elf_i386_rtype_to_howto (r_type)) == NULL)
{
/* xgettext:c-format */
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
{
/* xgettext:c-format */
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
@@
-1151,8
+1151,8
@@
elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd,
reloc_howto_type *from, *to;
const char *name;
reloc_howto_type *from, *to;
const char *name;
- from = elf_i386_rtype_to_howto (
abfd,
from_type);
- to = elf_i386_rtype_to_howto (
abfd,
to_type);
+ from = elf_i386_rtype_to_howto (from_type);
+ to = elf_i386_rtype_to_howto (to_type);
if (h)
name = h->root.root.string;
if (h)
name = h->root.root.string;
@@
-1343,8
+1343,8
@@
convert_branch:
}
else
{
}
else
{
- nop =
link_info
->call_nop_byte;
- if (
link_info
->call_nop_as_suffix)
+ nop =
htab->params
->call_nop_byte;
+ if (
htab->params
->call_nop_as_suffix)
{
nop_offset = roff + 3;
irel->r_offset -= 1;
{
nop_offset = roff + 3;
irel->r_offset -= 1;
@@
-1575,10
+1575,6
@@
elf_i386_check_relocs (bfd *abfd,
/* It is referenced by a non-shared object. */
h->ref_regular = 1;
/* It is referenced by a non-shared object. */
h->ref_regular = 1;
-
- if (h->type == STT_GNU_IFUNC)
- elf_tdata (info->output_bfd)->has_gnu_symbols
- |= elf_gnu_symbol_ifunc;
}
if (r_type == R_386_GOT32X
}
if (r_type == R_386_GOT32X
@@
-1908,9
+1904,7
@@
do_size:
/* This relocation describes which C++ vtable entries are actually
used. Record for later use during GC. */
case R_386_GNU_VTENTRY:
/* This relocation describes which C++ vtable entries are actually
used. Record for later use during GC. */
case R_386_GNU_VTENTRY:
- BFD_ASSERT (h != NULL);
- if (h != NULL
- && !bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
+ if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
goto error_return;
break;
goto error_return;
break;
@@
-1954,7
+1948,7
@@
elf_i386_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
{
const char *name;
{
const char *name;
- name = bfd_
get_section_name (abfd,
sec);
+ name = bfd_
section_name (
sec);
/* This is an ugly, but unfortunately necessary hack that is
needed when producing EFI binaries on x86. It tells
/* This is an ugly, but unfortunately necessary hack that is
needed when producing EFI binaries on x86. It tells
@@
-2028,7
+2022,11
@@
elf_i386_relocate_section (bfd *output_bfd,
if (htab == NULL)
return FALSE;
if (htab == NULL)
return FALSE;
- BFD_ASSERT (is_x86_elf (input_bfd, htab));
+ if (!is_x86_elf (input_bfd, htab))
+ {
+ bfd_set_error (bfd_error_wrong_format);
+ return FALSE;
+ }
symtab_hdr = &elf_symtab_hdr (input_bfd);
sym_hashes = elf_sym_hashes (input_bfd);
symtab_hdr = &elf_symtab_hdr (input_bfd);
sym_hashes = elf_sym_hashes (input_bfd);
@@
-2076,15
+2074,10
@@
elf_i386_relocate_section (bfd *output_bfd,
continue;
}
continue;
}
- if ((indx = r_type) >= R_386_standard
- && ((indx = r_type - R_386_ext_offset) - R_386_standard
- >= R_386_ext - R_386_standard)
- && ((indx = r_type - R_386_tls_offset) - R_386_ext
- >= R_386_ext2 - R_386_ext))
+ howto = elf_i386_rtype_to_howto (r_type);
+ if (howto == NULL)
return _bfd_unrecognized_reloc (input_bfd, input_section, r_type);
return _bfd_unrecognized_reloc (input_bfd, input_section, r_type);
- howto = elf_howto_table + indx;
-
r_symndx = ELF32_R_SYM (rel->r_info);
h = NULL;
sym = NULL;
r_symndx = ELF32_R_SYM (rel->r_info);
h = NULL;
sym = NULL;
@@
-2197,7
+2190,7
@@
elf_i386_relocate_section (bfd *output_bfd,
if (sec != NULL && discarded_section (sec))
{
_bfd_clear_contents (howto, input_bfd, input_section,
if (sec != NULL && discarded_section (sec))
{
_bfd_clear_contents (howto, input_bfd, input_section,
- contents
+
rel->r_offset);
+ contents
,
rel->r_offset);
wrel->r_offset = rel->r_offset;
wrel->r_info = 0;
wrel->r_addend = 0;
wrel->r_offset = rel->r_offset;
wrel->r_info = 0;
wrel->r_addend = 0;
@@
-3436,7
+3429,7
@@
check_relocation_error:
if (name == NULL)
return FALSE;
if (*name == '\0')
if (name == NULL)
return FALSE;
if (*name == '\0')
- name = bfd_section_name (
input_bfd,
sec);
+ name = bfd_section_name (sec);
}
if (r == bfd_reloc_overflow)
}
if (r == bfd_reloc_overflow)
@@
-4407,10
+4400,11
@@
elf_i386_link_setup_gnu_properties (struct bfd_link_info *info)
"FreeBSD" label in the ELF header. So we put this label on all
executables and (for simplicity) also all other object files. */
"FreeBSD" label in the ELF header. So we put this label on all
executables and (for simplicity) also all other object files. */
-static
void
-elf_i386_fbsd_
post_process_headers
(bfd *abfd, struct bfd_link_info *info)
+static
bfd_boolean
+elf_i386_fbsd_
init_file_header
(bfd *abfd, struct bfd_link_info *info)
{
{
- _bfd_elf_post_process_headers (abfd, info);
+ if (!_bfd_elf_init_file_header (abfd, info))
+ return FALSE;
#ifdef OLD_FREEBSD_ABI_LABEL
{
#ifdef OLD_FREEBSD_ABI_LABEL
{
@@
-4419,10
+4413,11
@@
elf_i386_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
memcpy (&i_ehdrp->e_ident[EI_ABIVERSION], "FreeBSD", 8);
}
#endif
memcpy (&i_ehdrp->e_ident[EI_ABIVERSION], "FreeBSD", 8);
}
#endif
+ return TRUE;
}
}
-#undef elf_backend_
post_process_headers
-#define elf_backend_
post_process_headers elf_i386_fbsd_post_process_headers
+#undef elf_backend_
init_file_header
+#define elf_backend_
init_file_header elf_i386_fbsd_init_file_header
#undef elf32_bed
#define elf32_bed elf32_i386_fbsd_bed
#undef elf32_bed
#define elf32_bed elf32_i386_fbsd_bed
@@
-4430,6
+4425,8
@@
elf_i386_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
#include "elf32-target.h"
#include "elf32-target.h"
+#undef elf_backend_init_file_header
+
/* Solaris 2. */
#undef TARGET_LITTLE_SYM
/* Solaris 2. */
#undef TARGET_LITTLE_SYM
@@
-4445,8
+4442,6
@@
static const struct elf_x86_backend_data elf_i386_solaris_arch_bed =
#undef elf_backend_arch_data
#define elf_backend_arch_data &elf_i386_solaris_arch_bed
#undef elf_backend_arch_data
#define elf_backend_arch_data &elf_i386_solaris_arch_bed
-#undef elf_backend_post_process_headers
-
/* Restore default: we cannot use ELFOSABI_SOLARIS, otherwise ELFOSABI_NONE
objects won't be recognized. */
#undef ELF_OSABI
/* Restore default: we cannot use ELFOSABI_SOLARIS, otherwise ELFOSABI_NONE
objects won't be recognized. */
#undef ELF_OSABI
@@
-4614,7
+4609,6
@@
elf32_iamcu_elf_object_p (bfd *abfd)
#undef ELF_OSABI
#undef elf_backend_want_plt_sym
#define elf_backend_want_plt_sym 0
#undef ELF_OSABI
#undef elf_backend_want_plt_sym
#define elf_backend_want_plt_sym 0
-#undef elf_backend_post_process_headers
#undef elf_backend_static_tls_alignment
/* NaCl uses substantially different PLT entries for the same effects. */
#undef elf_backend_static_tls_alignment
/* NaCl uses substantially different PLT entries for the same effects. */
@@
-4781,8
+4775,8
@@
elf32_i386_nacl_elf_object_p (bfd *abfd)
#define elf_backend_object_p elf32_i386_nacl_elf_object_p
#undef elf_backend_modify_segment_map
#define elf_backend_modify_segment_map nacl_modify_segment_map
#define elf_backend_object_p elf32_i386_nacl_elf_object_p
#undef elf_backend_modify_segment_map
#define elf_backend_modify_segment_map nacl_modify_segment_map
-#undef elf_backend_modify_
program_
headers
-#define elf_backend_modify_
program_headers nacl_modify_program
_headers
+#undef elf_backend_modify_headers
+#define elf_backend_modify_
headers nacl_modify
_headers
#undef elf_backend_final_write_processing
#define elf_backend_final_write_processing nacl_final_write_processing
#undef elf_backend_final_write_processing
#define elf_backend_final_write_processing nacl_final_write_processing
@@
-4791,7
+4785,7
@@
elf32_i386_nacl_elf_object_p (bfd *abfd)
/* Restore defaults. */
#undef elf_backend_object_p
#undef elf_backend_modify_segment_map
/* Restore defaults. */
#undef elf_backend_object_p
#undef elf_backend_modify_segment_map
-#undef elf_backend_modify_
program_
headers
+#undef elf_backend_modify_headers
#undef elf_backend_final_write_processing
/* VxWorks support. */
#undef elf_backend_final_write_processing
/* VxWorks support. */
This page took
0.028409 seconds
and
4
git commands to generate.