* elf.c (elf_fake_sections): Fix up .tbss sh_size and sh_type.

* ldlang.c (lang_add_section): Don't turn .tbss into normal sections
	for relocatable link.
	(lang_size_sections_1): Don't make .tbss zero size for relocatable
	link.
This commit is contained in:
Jakub Jelinek 2002-07-30 14:28:55 +00:00
parent 5f8a318830
commit 704afa601f
4 changed files with 28 additions and 3 deletions

View File

@ -1,3 +1,7 @@
2002-07-30 Jakub Jelinek <jakub@redhat.com>
* elf.c (elf_fake_sections): Fix up .tbss sh_size and sh_type.
2002-07-30 Alan Modra <amodra@bigpond.net.au>
* aoutx.h (some_aout_object_p): Clean up tdata properly on error.

View File

@ -2443,7 +2443,20 @@ elf_fake_sections (abfd, asect, failedptrarg)
if ((asect->flags & SEC_GROUP) == 0 && elf_group_name (asect) != NULL)
this_hdr->sh_flags |= SHF_GROUP;
if ((asect->flags & SEC_THREAD_LOCAL) != 0)
this_hdr->sh_flags |= SHF_TLS;
{
this_hdr->sh_flags |= SHF_TLS;
if (asect->_raw_size == 0 && (asect->flags & SEC_HAS_CONTENTS) == 0)
{
struct bfd_link_order *o;
this_hdr->sh_size = 0;
for (o = asect->link_order_head; o != NULL; o = o->next)
if (this_hdr->sh_size < o->offset + o->size)
this_hdr->sh_size = o->offset + o->size;
if (this_hdr->sh_size)
this_hdr->sh_type = SHT_NOBITS;
}
}
/* Check for processor-specific section types. */
if (bed->elf_backend_fake_sections

View File

@ -1,3 +1,10 @@
2002-07-30 Jakub Jelinek <jakub@redhat.com>
* ldlang.c (lang_add_section): Don't turn .tbss into normal sections
for relocatable link.
(lang_size_sections_1): Don't make .tbss zero size for relocatable
link.
2002-07-26 Bernd Schmidt <bernds@redhat.com>
* emulparams/elf32frv.sh (OTHER_RELOCATING_SECTIONS): Delete.

View File

@ -1218,7 +1218,7 @@ lang_add_section (ptr, section, output, file)
}
/* For now make .tbss normal section. */
if (flags & SEC_THREAD_LOCAL)
if ((flags & SEC_THREAD_LOCAL) && ! link_info.relocateable)
flags |= SEC_LOAD;
section->output_section->flags |= flags;
@ -3055,7 +3055,8 @@ lang_size_sections_1 (s, output_section_statement, prev, fill, dot, relax)
if (bfd_is_abs_section (os->bfd_section))
ASSERT (after == os->bfd_section->vma);
else if ((os->bfd_section->flags & SEC_HAS_CONTENTS) == 0
&& (os->bfd_section->flags & SEC_THREAD_LOCAL))
&& (os->bfd_section->flags & SEC_THREAD_LOCAL)
&& ! link_info.relocateable)
os->bfd_section->_raw_size = 0;
else
os->bfd_section->_raw_size =