mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
* elf-bfd.h (struct elf_backend_data): Add want_dynbss.
* elflink.c (_bfd_elf_create_dynamic_sections): Only create .dynbss and .rel[a].bss if want_dynbss. * elfxx-target.h (elf_backend_want_dynbss): Provide default.
This commit is contained in:
parent
30b30c2181
commit
3018b44153
@ -1,7 +1,16 @@
|
|||||||
|
1999-07-13 Richard Henderson <rth@cygnus.com>
|
||||||
|
|
||||||
|
* elf-bfd.h (struct elf_backend_data): Add want_dynbss.
|
||||||
|
* elflink.c (_bfd_elf_create_dynamic_sections): Only create
|
||||||
|
.dynbss and .rel[a].bss if want_dynbss.
|
||||||
|
* elfxx-target.h (elf_backend_want_dynbss): Provide default.
|
||||||
|
|
||||||
1999-07-13 Richard Henderson <rth@cygnus.com>
|
1999-07-13 Richard Henderson <rth@cygnus.com>
|
||||||
|
|
||||||
* elf.c (assign_file_positions_for_segments): Don't overwrite p_flags.
|
* elf.c (assign_file_positions_for_segments): Don't overwrite p_flags.
|
||||||
|
|
||||||
|
1999-07-13 Richard Henderson <rth@cygnus.com>
|
||||||
|
|
||||||
* elf-bfd.h (struct elf_link_local_dynamic_entry): New.
|
* elf-bfd.h (struct elf_link_local_dynamic_entry): New.
|
||||||
(struct elf_link_hash_table): Add dynlocal.
|
(struct elf_link_hash_table): Add dynlocal.
|
||||||
(_bfd_elf_link_lookup_local_dynindx): Prototype.
|
(_bfd_elf_link_lookup_local_dynindx): Prototype.
|
||||||
|
@ -623,6 +623,7 @@ struct elf_backend_data
|
|||||||
unsigned plt_not_loaded : 1;
|
unsigned plt_not_loaded : 1;
|
||||||
unsigned plt_alignment : 4;
|
unsigned plt_alignment : 4;
|
||||||
unsigned can_gc_sections : 1;
|
unsigned can_gc_sections : 1;
|
||||||
|
unsigned want_dynbss : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Information stored for each BFD section in an ELF file. This
|
/* Information stored for each BFD section in an ELF file. This
|
||||||
|
@ -157,18 +157,20 @@ _bfd_elf_create_dynamic_sections (abfd, info)
|
|||||||
if (! _bfd_elf_create_got_section (abfd, info))
|
if (! _bfd_elf_create_got_section (abfd, info))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* The .dynbss section is a place to put symbols which are defined
|
if (bed->want_dynbss)
|
||||||
by dynamic objects, are referenced by regular objects, and are
|
{
|
||||||
not functions. We must allocate space for them in the process
|
/* The .dynbss section is a place to put symbols which are defined
|
||||||
image and use a R_*_COPY reloc to tell the dynamic linker to
|
by dynamic objects, are referenced by regular objects, and are
|
||||||
initialize them at run time. The linker script puts the .dynbss
|
not functions. We must allocate space for them in the process
|
||||||
section into the .bss section of the final image. */
|
image and use a R_*_COPY reloc to tell the dynamic linker to
|
||||||
s = bfd_make_section (abfd, ".dynbss");
|
initialize them at run time. The linker script puts the .dynbss
|
||||||
if (s == NULL
|
section into the .bss section of the final image. */
|
||||||
|| ! bfd_set_section_flags (abfd, s, SEC_ALLOC))
|
s = bfd_make_section (abfd, ".dynbss");
|
||||||
return false;
|
if (s == NULL
|
||||||
|
|| ! bfd_set_section_flags (abfd, s, SEC_ALLOC))
|
||||||
|
return false;
|
||||||
|
|
||||||
/* The .rel[a].bss section holds copy relocs. This section is not
|
/* The .rel[a].bss section holds copy relocs. This section is not
|
||||||
normally needed. We need to create it here, though, so that the
|
normally needed. We need to create it here, though, so that the
|
||||||
linker will map it to an output section. We can't just create it
|
linker will map it to an output section. We can't just create it
|
||||||
only if we need it, because we will not know whether we need it
|
only if we need it, because we will not know whether we need it
|
||||||
@ -179,15 +181,16 @@ _bfd_elf_create_dynamic_sections (abfd, info)
|
|||||||
be needed, we can discard it later. We will never need this
|
be needed, we can discard it later. We will never need this
|
||||||
section when generating a shared object, since they do not use
|
section when generating a shared object, since they do not use
|
||||||
copy relocs. */
|
copy relocs. */
|
||||||
if (! info->shared)
|
if (! info->shared)
|
||||||
{
|
{
|
||||||
s = bfd_make_section (abfd,
|
s = bfd_make_section (abfd,
|
||||||
(bed->default_use_rela_p
|
(bed->default_use_rela_p
|
||||||
? ".rela.bss" : ".rel.bss"));
|
? ".rela.bss" : ".rel.bss"));
|
||||||
if (s == NULL
|
if (s == NULL
|
||||||
|| ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
|
|| ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
|
||||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -80,6 +80,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|||||||
#ifndef elf_backend_plt_alignment
|
#ifndef elf_backend_plt_alignment
|
||||||
#define elf_backend_plt_alignment 2
|
#define elf_backend_plt_alignment 2
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef elf_backend_want_dynbss
|
||||||
|
#define elf_backend_want_dynbss 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#define bfd_elfNN_bfd_debug_info_start bfd_void
|
#define bfd_elfNN_bfd_debug_info_start bfd_void
|
||||||
#define bfd_elfNN_bfd_debug_info_end bfd_void
|
#define bfd_elfNN_bfd_debug_info_end bfd_void
|
||||||
|
Loading…
Reference in New Issue
Block a user