mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 10:35:12 +08:00
* elfcode.h (NAME(bfd_elf,size_dynamic_sections)): Add sinterpptr
argument, and set it to the .interp section. * bfd-in.h (bfd_elf32_size_dynamic_sections): Update prototype. (bfd_elf64_size_dynamic_sections): Likewise. * bfd-in2.h: Rebuilt.
This commit is contained in:
parent
f1d42c0476
commit
7c726b6625
@ -1,5 +1,11 @@
|
|||||||
Wed Jun 15 01:34:07 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
Wed Jun 15 01:34:07 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||||
|
|
||||||
|
* elfcode.h (NAME(bfd_elf,size_dynamic_sections)): Add sinterpptr
|
||||||
|
argument, and set it to the .interp section.
|
||||||
|
* bfd-in.h (bfd_elf32_size_dynamic_sections): Update prototype.
|
||||||
|
(bfd_elf64_size_dynamic_sections): Likewise.
|
||||||
|
* bfd-in2.h: Rebuilt.
|
||||||
|
|
||||||
* coff-sparc.c (SWAP_OUT_RELOC_EXTRA): Define to clear the r_spare
|
* coff-sparc.c (SWAP_OUT_RELOC_EXTRA): Define to clear the r_spare
|
||||||
field of the reloc rather than letting it be garbage.
|
field of the reloc rather than letting it be garbage.
|
||||||
|
|
||||||
|
@ -532,9 +532,9 @@ extern boolean bfd_elf32_record_link_assignment
|
|||||||
extern boolean bfd_elf64_record_link_assignment
|
extern boolean bfd_elf64_record_link_assignment
|
||||||
PARAMS ((bfd *, struct bfd_link_info *, const char *));
|
PARAMS ((bfd *, struct bfd_link_info *, const char *));
|
||||||
extern boolean bfd_elf32_size_dynamic_sections
|
extern boolean bfd_elf32_size_dynamic_sections
|
||||||
PARAMS ((bfd *, struct bfd_link_info *));
|
PARAMS ((bfd *, struct bfd_link_info *, struct sec **));
|
||||||
extern boolean bfd_elf64_size_dynamic_sections
|
extern boolean bfd_elf64_size_dynamic_sections
|
||||||
PARAMS ((bfd *, struct bfd_link_info *));
|
PARAMS ((bfd *, struct bfd_link_info *, struct sec **));
|
||||||
|
|
||||||
/* SunOS shared library support routines for the linker. */
|
/* SunOS shared library support routines for the linker. */
|
||||||
|
|
||||||
|
@ -532,9 +532,9 @@ extern boolean bfd_elf32_record_link_assignment
|
|||||||
extern boolean bfd_elf64_record_link_assignment
|
extern boolean bfd_elf64_record_link_assignment
|
||||||
PARAMS ((bfd *, struct bfd_link_info *, const char *));
|
PARAMS ((bfd *, struct bfd_link_info *, const char *));
|
||||||
extern boolean bfd_elf32_size_dynamic_sections
|
extern boolean bfd_elf32_size_dynamic_sections
|
||||||
PARAMS ((bfd *, struct bfd_link_info *));
|
PARAMS ((bfd *, struct bfd_link_info *, struct sec **));
|
||||||
extern boolean bfd_elf64_size_dynamic_sections
|
extern boolean bfd_elf64_size_dynamic_sections
|
||||||
PARAMS ((bfd *, struct bfd_link_info *));
|
PARAMS ((bfd *, struct bfd_link_info *, struct sec **));
|
||||||
|
|
||||||
/* SunOS shared library support routines for the linker. */
|
/* SunOS shared library support routines for the linker. */
|
||||||
|
|
||||||
|
@ -1278,17 +1278,6 @@ assign_section_numbers (abfd)
|
|||||||
|
|
||||||
section_number = 1;
|
section_number = 1;
|
||||||
|
|
||||||
t->shstrtab_section = section_number++;
|
|
||||||
elf_elfheader (abfd)->e_shstrndx = t->shstrtab_section;
|
|
||||||
t->shstrtab_hdr.sh_size = elf_shstrtab (abfd)->length;
|
|
||||||
t->shstrtab_hdr.contents = (PTR) elf_shstrtab (abfd)->tab;
|
|
||||||
|
|
||||||
if (abfd->symcount > 0)
|
|
||||||
{
|
|
||||||
t->symtab_section = section_number++;
|
|
||||||
t->strtab_section = section_number++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (sec = abfd->sections; sec; sec = sec->next)
|
for (sec = abfd->sections; sec; sec = sec->next)
|
||||||
{
|
{
|
||||||
struct bfd_elf_section_data *d = elf_section_data (sec);
|
struct bfd_elf_section_data *d = elf_section_data (sec);
|
||||||
@ -1300,6 +1289,17 @@ assign_section_numbers (abfd)
|
|||||||
d->rel_idx = section_number++;
|
d->rel_idx = section_number++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t->shstrtab_section = section_number++;
|
||||||
|
elf_elfheader (abfd)->e_shstrndx = t->shstrtab_section;
|
||||||
|
t->shstrtab_hdr.sh_size = elf_shstrtab (abfd)->length;
|
||||||
|
t->shstrtab_hdr.contents = (PTR) elf_shstrtab (abfd)->tab;
|
||||||
|
|
||||||
|
if (abfd->symcount > 0)
|
||||||
|
{
|
||||||
|
t->symtab_section = section_number++;
|
||||||
|
t->strtab_section = section_number++;
|
||||||
|
}
|
||||||
|
|
||||||
elf_elfheader (abfd)->e_shnum = section_number;
|
elf_elfheader (abfd)->e_shnum = section_number;
|
||||||
|
|
||||||
/* Set up the list of section header pointers, in agreement with the
|
/* Set up the list of section header pointers, in agreement with the
|
||||||
@ -4735,9 +4735,10 @@ static const size_t elf_buckets[] =
|
|||||||
addresses of the various sections. */
|
addresses of the various sections. */
|
||||||
|
|
||||||
boolean
|
boolean
|
||||||
NAME(bfd_elf,size_dynamic_sections) (output_bfd, info)
|
NAME(bfd_elf,size_dynamic_sections) (output_bfd, info, sinterpptr)
|
||||||
bfd *output_bfd;
|
bfd *output_bfd;
|
||||||
struct bfd_link_info *info;
|
struct bfd_link_info *info;
|
||||||
|
asection **sinterpptr;
|
||||||
{
|
{
|
||||||
bfd *dynobj;
|
bfd *dynobj;
|
||||||
size_t dynsymcount;
|
size_t dynsymcount;
|
||||||
@ -4747,6 +4748,8 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, info)
|
|||||||
size_t bucketcount;
|
size_t bucketcount;
|
||||||
struct elf_backend_data *bed;
|
struct elf_backend_data *bed;
|
||||||
|
|
||||||
|
*sinterpptr = NULL;
|
||||||
|
|
||||||
dynobj = elf_hash_table (info)->dynobj;
|
dynobj = elf_hash_table (info)->dynobj;
|
||||||
dynsymcount = elf_hash_table (info)->dynsymcount;
|
dynsymcount = elf_hash_table (info)->dynsymcount;
|
||||||
|
|
||||||
@ -4755,6 +4758,9 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, info)
|
|||||||
if (dynobj == NULL)
|
if (dynobj == NULL)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
*sinterpptr = bfd_get_section_by_name (dynobj, ".interp");
|
||||||
|
BFD_ASSERT (*sinterpptr != NULL);
|
||||||
|
|
||||||
/* Set the size of the .dynsym and .hash sections. We counted the
|
/* Set the size of the .dynsym and .hash sections. We counted the
|
||||||
number of dynamic symbols in elf_link_add_object_symbols. We
|
number of dynamic symbols in elf_link_add_object_symbols. We
|
||||||
will build the contents of .dynsym and .hash when we build the
|
will build the contents of .dynsym and .hash when we build the
|
||||||
|
Loading…
Reference in New Issue
Block a user