projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't attach linker created section to --just-syms bfd
[deliverable/binutils-gdb.git]
/
bfd
/
elflink.c
diff --git
a/bfd/elflink.c
b/bfd/elflink.c
index e35ec630a24008c57e4e90a49ed9438d4288e409..471e8adf5fa7ec5ff8fd47b2e188ab116d86864d 100644
(file)
--- a/
bfd/elflink.c
+++ b/
bfd/elflink.c
@@
-218,9
+218,13
@@
_bfd_elf_link_create_dynstrtab (bfd *abfd, struct bfd_link_info *info)
if ((abfd->flags & (DYNAMIC | BFD_PLUGIN)) != 0)
{
bfd *ibfd;
if ((abfd->flags & (DYNAMIC | BFD_PLUGIN)) != 0)
{
bfd *ibfd;
+ asection *s;
for (ibfd = info->input_bfds; ibfd; ibfd = ibfd->link.next)
if ((ibfd->flags
for (ibfd = info->input_bfds; ibfd; ibfd = ibfd->link.next)
if ((ibfd->flags
- & (DYNAMIC | BFD_LINKER_CREATED | BFD_PLUGIN)) == 0)
+ & (DYNAMIC | BFD_LINKER_CREATED | BFD_PLUGIN)) == 0
+ && bfd_get_flavour (ibfd) == bfd_target_elf_flavour
+ && !((s = ibfd->sections) != NULL
+ && s->sec_info_type == SEC_INFO_TYPE_JUST_SYMS))
{
abfd = ibfd;
break;
{
abfd = ibfd;
break;
@@
-5861,9
+5865,12
@@
bfd_boolean
_bfd_elf_size_group_sections (struct bfd_link_info *info)
{
bfd *ibfd;
_bfd_elf_size_group_sections (struct bfd_link_info *info)
{
bfd *ibfd;
+ asection *s;
for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
if (bfd_get_flavour (ibfd) == bfd_target_elf_flavour
for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
if (bfd_get_flavour (ibfd) == bfd_target_elf_flavour
+ && (s = ibfd->sections) != NULL
+ && s->sec_info_type != SEC_INFO_TYPE_JUST_SYMS
&& !_bfd_elf_fixup_group_sections (ibfd, bfd_abs_section_ptr))
return FALSE;
return TRUE;
&& !_bfd_elf_fixup_group_sections (ibfd, bfd_abs_section_ptr))
return FALSE;
return TRUE;
@@
-6511,6
+6518,10
@@
bfd_elf_size_dynamic_sections (bfd *output_bfd,
if (inputobj->flags
& (DYNAMIC | EXEC_P | BFD_PLUGIN | BFD_LINKER_CREATED))
continue;
if (inputobj->flags
& (DYNAMIC | EXEC_P | BFD_PLUGIN | BFD_LINKER_CREATED))
continue;
+ s = inputobj->sections;
+ if (s == NULL || s->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
+ continue;
+
s = bfd_get_section_by_name (inputobj, ".note.GNU-stack");
if (s)
{
s = bfd_get_section_by_name (inputobj, ".note.GNU-stack");
if (s)
{
@@
-6660,9
+6671,10
@@
bfd_elf_size_dynamic_sections (bfd *output_bfd,
bfd *sub;
asection *o;
bfd *sub;
asection *o;
- for (sub = info->input_bfds; sub != NULL;
- sub = sub->link.next)
- if (bfd_get_flavour (sub) == bfd_target_elf_flavour)
+ for (sub = info->input_bfds; sub != NULL; sub = sub->link.next)
+ if (bfd_get_flavour (sub) == bfd_target_elf_flavour
+ && (o = sub->sections) != NULL
+ && o->sec_info_type != SEC_INFO_TYPE_JUST_SYMS)
for (o = sub->sections; o != NULL; o = o->next)
if (elf_section_data (o)->this_hdr.sh_type
== SHT_PREINIT_ARRAY)
for (o = sub->sections; o != NULL; o = o->next)
if (elf_section_data (o)->this_hdr.sh_type
== SHT_PREINIT_ARRAY)
@@
-12911,6
+12923,9
@@
_bfd_elf_gc_mark_extra_sections (struct bfd_link_info *info,
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
continue;
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
continue;
+ isec = ibfd->sections;
+ if (isec == NULL || isec->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
+ continue;
/* Ensure all linker created sections are kept,
see if any other section is already marked,
/* Ensure all linker created sections are kept,
see if any other section is already marked,
@@
-13016,6
+13031,9
@@
elf_gc_sweep (bfd *abfd, struct bfd_link_info *info)
if (bfd_get_flavour (sub) != bfd_target_elf_flavour
|| !(*bed->relocs_compatible) (sub->xvec, abfd->xvec))
continue;
if (bfd_get_flavour (sub) != bfd_target_elf_flavour
|| !(*bed->relocs_compatible) (sub->xvec, abfd->xvec))
continue;
+ o = sub->sections;
+ if (o == NULL || o->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
+ continue;
for (o = sub->sections; o != NULL; o = o->next)
{
for (o = sub->sections; o != NULL; o = o->next)
{
@@
-13253,6
+13271,9
@@
bfd_elf_parse_eh_frame_entries (bfd *abfd ATTRIBUTE_UNUSED,
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
continue;
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
continue;
+ sec = ibfd->sections;
+ if (sec == NULL || sec->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
+ continue;
if (!init_reloc_cookie (&cookie, info, ibfd))
return FALSE;
if (!init_reloc_cookie (&cookie, info, ibfd))
return FALSE;
@@
-13300,6
+13321,9
@@
bfd_elf_gc_sections (bfd *abfd, struct bfd_link_info *info)
asection *sec;
struct elf_reloc_cookie cookie;
asection *sec;
struct elf_reloc_cookie cookie;
+ sec = sub->sections;
+ if (sec == NULL || sec->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
+ continue;
sec = bfd_get_section_by_name (sub, ".eh_frame");
while (sec && init_reloc_cookie_for_section (&cookie, info, sec))
{
sec = bfd_get_section_by_name (sub, ".eh_frame");
while (sec && init_reloc_cookie_for_section (&cookie, info, sec))
{
@@
-13336,6
+13360,10
@@
bfd_elf_gc_sections (bfd *abfd, struct bfd_link_info *info)
|| !(*bed->relocs_compatible) (sub->xvec, abfd->xvec))
continue;
|| !(*bed->relocs_compatible) (sub->xvec, abfd->xvec))
continue;
+ o = sub->sections;
+ if (o == NULL || o->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
+ continue;
+
/* Start at sections marked with SEC_KEEP (ref _bfd_elf_gc_keep).
Also treat note sections as a root, if the section is not part
of a group. */
/* Start at sections marked with SEC_KEEP (ref _bfd_elf_gc_keep).
Also treat note sections as a root, if the section is not part
of a group. */
@@
-13840,9
+13868,13
@@
bfd_elf_discard_info (bfd *output_bfd, struct bfd_link_info *info)
for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link.next)
{
const struct elf_backend_data *bed;
for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link.next)
{
const struct elf_backend_data *bed;
+ asection *s;
if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
continue;
if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
continue;
+ s = abfd->sections;
+ if (s == NULL || s->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
+ continue;
bed = get_elf_backend_data (abfd);
bed = get_elf_backend_data (abfd);
This page took
0.026777 seconds
and
4
git commands to generate.