2005-03-20 H.J. Lu <hongjiu.lu@intel.com>
* elf-bfd.h (elf_backend_data): Add int to elf_backend_section_from_shdr. (bfd_elf_section_data): Update comment for this_idx. (_bfd_elf_make_section_from_shdr): Add int. * elfxx-mips.h (_bfd_mips_elf_section_from_shdr): Likewise. * elf.c (_bfd_elf_make_section_from_shdr): Take section index and use it to set this_idx in bfd_elf_section_data. (bfd_section_from_shdr): Pass shindex to _bfd_elf_make_section_from_shdr. (_bfd_elf_section_from_bfd_section): Use this_idx in bfd_elf_section_data to find section index. * elf32-arm.c (elf32_arm_section_from_shdr): Take section index and pass it to _bfd_elf_make_section_from_shdr. * elf32-i370.c(i370_elf_section_from_shdr): Likewise. * elf32-ppc.c (ppc_elf_section_from_shdr): Likewise. * elf32-sh64.c (sh64_backend_section_from_shdr): Likewise. * elf32-v850.c (v850_elf_section_from_shdr): Likewise. * elf64-alpha.c (elf64_alpha_section_from_shdr): Likewise. * elf64-hppa.c (elf64_hppa_section_from_shdr): Likewise. * elf64-x86-64.c (elf64_x86_64_section_from_shdr): Likewise. * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Likewise. * elfxx-mips.c (_bfd_mips_elf_section_from_shdr): Likewise.
This commit is contained in:
parent
a4cd38bc61
commit
6dc132d920
@ -1,3 +1,30 @@
|
||||
2005-03-20 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf-bfd.h (elf_backend_data): Add int to
|
||||
elf_backend_section_from_shdr.
|
||||
(bfd_elf_section_data): Update comment for this_idx.
|
||||
(_bfd_elf_make_section_from_shdr): Add int.
|
||||
* elfxx-mips.h (_bfd_mips_elf_section_from_shdr): Likewise.
|
||||
|
||||
* elf.c (_bfd_elf_make_section_from_shdr): Take section index
|
||||
and use it to set this_idx in bfd_elf_section_data.
|
||||
(bfd_section_from_shdr): Pass shindex to
|
||||
_bfd_elf_make_section_from_shdr.
|
||||
(_bfd_elf_section_from_bfd_section): Use this_idx in
|
||||
bfd_elf_section_data to find section index.
|
||||
|
||||
* elf32-arm.c (elf32_arm_section_from_shdr): Take section
|
||||
index and pass it to _bfd_elf_make_section_from_shdr.
|
||||
* elf32-i370.c(i370_elf_section_from_shdr): Likewise.
|
||||
* elf32-ppc.c (ppc_elf_section_from_shdr): Likewise.
|
||||
* elf32-sh64.c (sh64_backend_section_from_shdr): Likewise.
|
||||
* elf32-v850.c (v850_elf_section_from_shdr): Likewise.
|
||||
* elf64-alpha.c (elf64_alpha_section_from_shdr): Likewise.
|
||||
* elf64-hppa.c (elf64_hppa_section_from_shdr): Likewise.
|
||||
* elf64-x86-64.c (elf64_x86_64_section_from_shdr): Likewise.
|
||||
* elfxx-ia64.c (elfNN_ia64_section_from_shdr): Likewise.
|
||||
* elfxx-mips.c (_bfd_mips_elf_section_from_shdr): Likewise.
|
||||
|
||||
2005-03-19 Danny Smith <dannysmith@users.sourceforge.net>
|
||||
Ross Ridge <rridge@csclub.uwaterloo.ca>
|
||||
|
||||
|
@ -629,7 +629,7 @@ struct elf_backend_data
|
||||
/* A function to handle unusual section types when creating BFD
|
||||
sections from ELF sections. */
|
||||
bfd_boolean (*elf_backend_section_from_shdr)
|
||||
(bfd *, Elf_Internal_Shdr *, const char *);
|
||||
(bfd *, Elf_Internal_Shdr *, const char *, int);
|
||||
|
||||
/* A function to convert machine dependent section header flags to
|
||||
BFD internal section header flags. */
|
||||
@ -1059,8 +1059,7 @@ struct bfd_elf_section_data
|
||||
/* The number of relocations currently assigned to REL_HDR2. */
|
||||
unsigned int rel_count2;
|
||||
|
||||
/* The ELF section number of this section. Only used for an output
|
||||
file. */
|
||||
/* The ELF section number of this section. */
|
||||
int this_idx;
|
||||
|
||||
/* The ELF section number of the reloc section indicated by
|
||||
@ -1416,7 +1415,7 @@ extern bfd_boolean bfd_elf_mkcorefile
|
||||
extern Elf_Internal_Shdr *bfd_elf_find_section
|
||||
(bfd *, char *);
|
||||
extern bfd_boolean _bfd_elf_make_section_from_shdr
|
||||
(bfd *, Elf_Internal_Shdr *, const char *);
|
||||
(bfd *, Elf_Internal_Shdr *, const char *, int);
|
||||
extern bfd_boolean _bfd_elf_make_section_from_phdr
|
||||
(bfd *, Elf_Internal_Phdr *, int, const char *);
|
||||
extern struct bfd_hash_entry *_bfd_elf_link_hash_newfunc
|
||||
|
49
bfd/elf.c
49
bfd/elf.c
@ -673,7 +673,8 @@ bfd_elf_is_group_section (bfd *abfd ATTRIBUTE_UNUSED, const asection *sec)
|
||||
bfd_boolean
|
||||
_bfd_elf_make_section_from_shdr (bfd *abfd,
|
||||
Elf_Internal_Shdr *hdr,
|
||||
const char *name)
|
||||
const char *name,
|
||||
int shindex)
|
||||
{
|
||||
asection *newsect;
|
||||
flagword flags;
|
||||
@ -692,6 +693,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
|
||||
|
||||
hdr->bfd_section = newsect;
|
||||
elf_section_data (newsect)->this_hdr = *hdr;
|
||||
elf_section_data (newsect)->this_idx = shindex;
|
||||
|
||||
/* Always use the real type/flags. */
|
||||
elf_section_type (newsect) = hdr->sh_type;
|
||||
@ -1728,10 +1730,10 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
|
||||
case SHT_FINI_ARRAY: /* .fini_array section. */
|
||||
case SHT_PREINIT_ARRAY: /* .preinit_array section. */
|
||||
case SHT_GNU_LIBLIST: /* .gnu.liblist section. */
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name);
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
|
||||
|
||||
case SHT_DYNAMIC: /* Dynamic linking information. */
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
if (elf_elfsections (abfd)[hdr->sh_link]->sh_type != SHT_STRTAB)
|
||||
{
|
||||
@ -1782,7 +1784,8 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
|
||||
linker. */
|
||||
if ((hdr->sh_flags & SHF_ALLOC) != 0
|
||||
&& (abfd->flags & DYNAMIC) != 0
|
||||
&& ! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
&& ! _bfd_elf_make_section_from_shdr (abfd, hdr, name,
|
||||
shindex))
|
||||
return FALSE;
|
||||
|
||||
/* Go looking for SHT_SYMTAB_SHNDX too, since if there is one we
|
||||
@ -1826,7 +1829,7 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
|
||||
|
||||
/* Besides being a symbol table, we also treat this as a regular
|
||||
section, so that objcopy can handle it. */
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name);
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
|
||||
|
||||
case SHT_SYMTAB_SHNDX: /* Symbol section indices when >64k sections */
|
||||
if (elf_symtab_shndx (abfd) == shindex)
|
||||
@ -1862,7 +1865,8 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
|
||||
elf_elfsections (abfd)[shindex] = hdr;
|
||||
/* We also treat this as a regular section, so that objcopy
|
||||
can handle it. */
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name);
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name,
|
||||
shindex);
|
||||
}
|
||||
|
||||
/* If the string table isn't one of the above, then treat it as a
|
||||
@ -1887,7 +1891,7 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
|
||||
}
|
||||
}
|
||||
}
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name);
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
|
||||
|
||||
case SHT_REL:
|
||||
case SHT_RELA:
|
||||
@ -1904,7 +1908,8 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
|
||||
((*_bfd_error_handler)
|
||||
(_("%B: invalid link %lu for reloc section %s (index %u)"),
|
||||
abfd, hdr->sh_link, name, shindex));
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name);
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name,
|
||||
shindex);
|
||||
}
|
||||
|
||||
/* For some incomprehensible reason Oracle distributes
|
||||
@ -1951,7 +1956,8 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
|
||||
can't use it as a reloc section if it points to the null
|
||||
section. */
|
||||
if (hdr->sh_link != elf_onesymtab (abfd) || hdr->sh_info == SHN_UNDEF)
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name);
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name,
|
||||
shindex);
|
||||
|
||||
if (! bfd_section_from_shdr (abfd, hdr->sh_info))
|
||||
return FALSE;
|
||||
@ -1988,19 +1994,19 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
|
||||
case SHT_GNU_verdef:
|
||||
elf_dynverdef (abfd) = shindex;
|
||||
elf_tdata (abfd)->dynverdef_hdr = *hdr;
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name);
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
|
||||
break;
|
||||
|
||||
case SHT_GNU_versym:
|
||||
elf_dynversym (abfd) = shindex;
|
||||
elf_tdata (abfd)->dynversym_hdr = *hdr;
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name);
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
|
||||
break;
|
||||
|
||||
case SHT_GNU_verneed:
|
||||
elf_dynverref (abfd) = shindex;
|
||||
elf_tdata (abfd)->dynverref_hdr = *hdr;
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name);
|
||||
return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
|
||||
break;
|
||||
|
||||
case SHT_SHLIB:
|
||||
@ -2013,7 +2019,7 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
|
||||
name = group_signature (abfd, hdr);
|
||||
if (name == NULL)
|
||||
return FALSE;
|
||||
if (!_bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (!_bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
if (hdr->contents != NULL)
|
||||
{
|
||||
@ -2039,7 +2045,8 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
|
||||
|
||||
default:
|
||||
/* Check for any processor-specific section types. */
|
||||
return bed->elf_backend_section_from_shdr (abfd, hdr, name);
|
||||
return bed->elf_backend_section_from_shdr (abfd, hdr, name,
|
||||
shindex);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@ -4781,19 +4788,7 @@ _bfd_elf_section_from_bfd_section (bfd *abfd, struct bfd_section *asect)
|
||||
else if (bfd_is_und_section (asect))
|
||||
index = SHN_UNDEF;
|
||||
else
|
||||
{
|
||||
Elf_Internal_Shdr **i_shdrp = elf_elfsections (abfd);
|
||||
int maxindex = elf_numsections (abfd);
|
||||
|
||||
for (index = 1; index < maxindex; index++)
|
||||
{
|
||||
Elf_Internal_Shdr *hdr = i_shdrp[index];
|
||||
|
||||
if (hdr != NULL && hdr->bfd_section == asect)
|
||||
return index;
|
||||
}
|
||||
index = -1;
|
||||
}
|
||||
index = -1;
|
||||
|
||||
bed = get_elf_backend_data (abfd);
|
||||
if (bed->elf_backend_section_from_bfd_section)
|
||||
|
@ -5486,13 +5486,15 @@ elf32_arm_fake_sections (bfd * abfd, Elf_Internal_Shdr * hdr, asection * sec)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Handle an ARM specific section when reading an object file.
|
||||
This is called when elf.c finds a section with an unknown type. */
|
||||
/* Handle an ARM specific section when reading an object file. This is
|
||||
called when bfd_section_from_shdr finds a section with an unknown
|
||||
type. */
|
||||
|
||||
static bfd_boolean
|
||||
elf32_arm_section_from_shdr (bfd *abfd,
|
||||
Elf_Internal_Shdr * hdr,
|
||||
const char *name)
|
||||
const char *name,
|
||||
int shindex)
|
||||
{
|
||||
/* There ought to be a place to keep ELF backend specific flags, but
|
||||
at the moment there isn't one. We just keep track of the
|
||||
@ -5508,7 +5510,7 @@ elf32_arm_section_from_shdr (bfd *abfd,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
|
@ -286,8 +286,6 @@ static void i370_elf_post_process_headers
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
static bfd_boolean i370_elf_create_dynamic_sections
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
static bfd_boolean i370_elf_section_from_shdr
|
||||
PARAMS ((bfd *, Elf_Internal_Shdr *, const char *));
|
||||
static bfd_boolean i370_elf_fake_sections
|
||||
PARAMS ((bfd *, Elf_Internal_Shdr *, asection *));
|
||||
static bfd_boolean i370_elf_check_relocs
|
||||
@ -385,15 +383,15 @@ i370_elf_merge_private_bfd_data (ibfd, obfd)
|
||||
*/
|
||||
|
||||
static bfd_boolean
|
||||
i370_elf_section_from_shdr (abfd, hdr, name)
|
||||
bfd *abfd;
|
||||
Elf_Internal_Shdr *hdr;
|
||||
const char *name;
|
||||
i370_elf_section_from_shdr (bfd *abfd,
|
||||
Elf_Internal_Shdr *hdr,
|
||||
const char *name,
|
||||
int shindex)
|
||||
{
|
||||
asection *newsect;
|
||||
flagword flags;
|
||||
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
|
||||
newsect = hdr->bfd_section;
|
||||
|
@ -1760,15 +1760,19 @@ ppc_elf_plt_sym_val (bfd_vma i ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
/* Handle a PowerPC specific section when reading an object file. This
|
||||
is called when elfcode.h finds a section with an unknown type. */
|
||||
is called when bfd_section_from_shdr finds a section with an unknown
|
||||
type. */
|
||||
|
||||
static bfd_boolean
|
||||
ppc_elf_section_from_shdr (bfd *abfd, Elf_Internal_Shdr *hdr, const char *name)
|
||||
ppc_elf_section_from_shdr (bfd *abfd,
|
||||
Elf_Internal_Shdr *hdr,
|
||||
const char *name,
|
||||
int shindex)
|
||||
{
|
||||
asection *newsect;
|
||||
flagword flags;
|
||||
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
|
||||
newsect = hdr->bfd_section;
|
||||
|
@ -63,7 +63,7 @@ static bfd_boolean sh64_elf_link_output_symbol_hook
|
||||
(struct bfd_link_info *, const char *, Elf_Internal_Sym *, asection *,
|
||||
struct elf_link_hash_entry *);
|
||||
static bfd_boolean sh64_backend_section_from_shdr
|
||||
(bfd *, Elf_Internal_Shdr *, const char *);
|
||||
(bfd *, Elf_Internal_Shdr *, const char *, int);
|
||||
static void sh64_elf_final_write_processing
|
||||
(bfd *, bfd_boolean);
|
||||
static bfd_boolean sh64_bfd_elf_copy_private_section_data
|
||||
@ -253,13 +253,14 @@ sh64_elf_merge_private_data (bfd *ibfd, bfd *obfd)
|
||||
}
|
||||
|
||||
/* Handle a SH64-specific section when reading an object file. This
|
||||
is called when elfcode.h finds a section with an unknown type.
|
||||
is called when bfd_section_from_shdr finds a section with an unknown
|
||||
type.
|
||||
|
||||
We only recognize SHT_SH5_CR_SORTED, on the .cranges section. */
|
||||
|
||||
bfd_boolean
|
||||
sh64_backend_section_from_shdr (bfd *abfd, Elf_Internal_Shdr *hdr,
|
||||
const char *name)
|
||||
const char *name, int shindex)
|
||||
{
|
||||
flagword flags = 0;
|
||||
|
||||
@ -284,7 +285,7 @@ sh64_backend_section_from_shdr (bfd *abfd, Elf_Internal_Shdr *hdr,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
|
||||
if (flags
|
||||
|
@ -78,8 +78,6 @@ static bfd_boolean v850_elf_add_symbol_hook
|
||||
static bfd_boolean v850_elf_link_output_symbol_hook
|
||||
PARAMS ((struct bfd_link_info *, const char *, Elf_Internal_Sym *,
|
||||
asection *, struct elf_link_hash_entry *));
|
||||
static bfd_boolean v850_elf_section_from_shdr
|
||||
PARAMS ((bfd *, Elf_Internal_Shdr *, const char *));
|
||||
static bfd_boolean v850_elf_gc_sweep_hook
|
||||
PARAMS ((bfd *, struct bfd_link_info *, asection *,
|
||||
const Elf_Internal_Rela *));
|
||||
@ -2210,16 +2208,16 @@ v850_elf_link_output_symbol_hook (info, name, sym, input_sec, h)
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
v850_elf_section_from_shdr (abfd, hdr, name)
|
||||
bfd *abfd;
|
||||
Elf_Internal_Shdr *hdr;
|
||||
const char *name;
|
||||
v850_elf_section_from_shdr (bfd *abfd,
|
||||
Elf_Internal_Shdr *hdr,
|
||||
const char *name,
|
||||
int shindex)
|
||||
{
|
||||
/* There ought to be a place to keep ELF backend specific flags, but
|
||||
at the moment there isn't one. We just keep track of the
|
||||
sections by their name, instead. */
|
||||
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
|
||||
switch (hdr->sh_type)
|
||||
|
@ -72,8 +72,6 @@ static bfd_boolean elf64_alpha_mkobject
|
||||
PARAMS ((bfd *));
|
||||
static bfd_boolean elf64_alpha_object_p
|
||||
PARAMS ((bfd *));
|
||||
static bfd_boolean elf64_alpha_section_from_shdr
|
||||
PARAMS ((bfd *, Elf_Internal_Shdr *, const char *));
|
||||
static bfd_boolean elf64_alpha_section_flags
|
||||
PARAMS ((flagword *, const Elf_Internal_Shdr *));
|
||||
static bfd_boolean elf64_alpha_fake_sections
|
||||
@ -2260,15 +2258,16 @@ elf64_alpha_relax_section (abfd, sec, link_info, again)
|
||||
#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so"
|
||||
|
||||
/* Handle an Alpha specific section when reading an object file. This
|
||||
is called when elfcode.h finds a section with an unknown type.
|
||||
is called when bfd_section_from_shdr finds a section with an unknown
|
||||
type.
|
||||
FIXME: We need to handle the SHF_ALPHA_GPREL flag, but I'm not sure
|
||||
how to. */
|
||||
|
||||
static bfd_boolean
|
||||
elf64_alpha_section_from_shdr (abfd, hdr, name)
|
||||
bfd *abfd;
|
||||
Elf_Internal_Shdr *hdr;
|
||||
const char *name;
|
||||
elf64_alpha_section_from_shdr (bfd *abfd,
|
||||
Elf_Internal_Shdr *hdr,
|
||||
const char *name,
|
||||
int shindex)
|
||||
{
|
||||
asection *newsect;
|
||||
|
||||
@ -2287,7 +2286,7 @@ elf64_alpha_section_from_shdr (abfd, hdr, name)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
newsect = hdr->bfd_section;
|
||||
|
||||
|
@ -184,9 +184,6 @@ static const char *get_dyn_name
|
||||
static bfd_boolean elf64_hppa_object_p
|
||||
PARAMS ((bfd *));
|
||||
|
||||
static bfd_boolean elf64_hppa_section_from_shdr
|
||||
PARAMS ((bfd *, Elf_Internal_Shdr *, const char *));
|
||||
|
||||
static void elf64_hppa_post_process_headers
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
|
||||
@ -413,10 +410,10 @@ elf64_hppa_object_p (abfd)
|
||||
/* Given section type (hdr->sh_type), return a boolean indicating
|
||||
whether or not the section is an elf64-hppa specific section. */
|
||||
static bfd_boolean
|
||||
elf64_hppa_section_from_shdr (abfd, hdr, name)
|
||||
bfd *abfd;
|
||||
Elf_Internal_Shdr *hdr;
|
||||
const char *name;
|
||||
elf64_hppa_section_from_shdr (bfd *abfd,
|
||||
Elf_Internal_Shdr *hdr,
|
||||
const char *name,
|
||||
int shindex)
|
||||
{
|
||||
asection *newsect;
|
||||
|
||||
@ -436,7 +433,7 @@ elf64_hppa_section_from_shdr (abfd, hdr, name)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
newsect = hdr->bfd_section;
|
||||
|
||||
|
@ -2822,12 +2822,15 @@ elf64_x86_64_plt_sym_val (bfd_vma i, const asection *plt,
|
||||
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)
|
||||
elf64_x86_64_section_from_shdr (bfd *abfd,
|
||||
Elf_Internal_Shdr *hdr,
|
||||
const char *name,
|
||||
int shindex)
|
||||
{
|
||||
if (hdr->sh_type != SHT_X86_64_UNWIND)
|
||||
return FALSE;
|
||||
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
|
@ -183,8 +183,6 @@ static void elfNN_ia64_relax_ldxmov
|
||||
PARAMS((bfd_byte *contents, bfd_vma off));
|
||||
static bfd_boolean is_unwind_section_name
|
||||
PARAMS ((bfd *abfd, const char *));
|
||||
static bfd_boolean elfNN_ia64_section_from_shdr
|
||||
PARAMS ((bfd *, Elf_Internal_Shdr *, const char *));
|
||||
static bfd_boolean elfNN_ia64_section_flags
|
||||
PARAMS ((flagword *, const Elf_Internal_Shdr *));
|
||||
static bfd_boolean elfNN_ia64_fake_sections
|
||||
@ -1261,13 +1259,14 @@ is_unwind_section_name (abfd, name)
|
||||
}
|
||||
|
||||
/* Handle an IA-64 specific section when reading an object file. This
|
||||
is called when elfcode.h finds a section with an unknown type. */
|
||||
is called when bfd_section_from_shdr finds a section with an unknown
|
||||
type. */
|
||||
|
||||
static bfd_boolean
|
||||
elfNN_ia64_section_from_shdr (abfd, hdr, name)
|
||||
bfd *abfd;
|
||||
Elf_Internal_Shdr *hdr;
|
||||
const char *name;
|
||||
elfNN_ia64_section_from_shdr (bfd *abfd,
|
||||
Elf_Internal_Shdr *hdr,
|
||||
const char *name,
|
||||
int shindex)
|
||||
{
|
||||
asection *newsect;
|
||||
|
||||
@ -1291,7 +1290,7 @@ elfNN_ia64_section_from_shdr (abfd, hdr, name)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
newsect = hdr->bfd_section;
|
||||
|
||||
|
@ -5068,8 +5068,10 @@ _bfd_mips_elf_section_processing (bfd *abfd, Elf_Internal_Shdr *hdr)
|
||||
how to. */
|
||||
|
||||
bfd_boolean
|
||||
_bfd_mips_elf_section_from_shdr (bfd *abfd, Elf_Internal_Shdr *hdr,
|
||||
const char *name)
|
||||
_bfd_mips_elf_section_from_shdr (bfd *abfd,
|
||||
Elf_Internal_Shdr *hdr,
|
||||
const char *name,
|
||||
int shindex)
|
||||
{
|
||||
flagword flags = 0;
|
||||
|
||||
@ -5141,7 +5143,7 @@ _bfd_mips_elf_section_from_shdr (bfd *abfd, Elf_Internal_Shdr *hdr,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
|
||||
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
|
||||
return FALSE;
|
||||
|
||||
if (flags)
|
||||
|
@ -31,7 +31,7 @@ extern bfd_boolean _bfd_mips_elf_name_local_section_symbols
|
||||
extern bfd_boolean _bfd_mips_elf_section_processing
|
||||
(bfd *, Elf_Internal_Shdr *);
|
||||
extern bfd_boolean _bfd_mips_elf_section_from_shdr
|
||||
(bfd *, Elf_Internal_Shdr *, const char *);
|
||||
(bfd *, Elf_Internal_Shdr *, const char *, int);
|
||||
extern bfd_boolean _bfd_mips_elf_fake_sections
|
||||
(bfd *, Elf_Internal_Shdr *, asection *);
|
||||
extern bfd_boolean _bfd_mips_elf_section_from_bfd_section
|
||||
|
Loading…
Reference in New Issue
Block a user