diff options
author | Jakub Jelinek <jakub@redhat.com> | 2002-07-30 14:28:55 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2002-07-30 14:28:55 +0000 |
commit | 704afa601f9abdd212d000ff61b1c6a32e085a0b (patch) | |
tree | 7bd1dd4a4ba0fdc51bd2c21594e2e97a733fcee3 | |
parent | 5f8a3188304fc1456111158ae5e51889b3142801 (diff) | |
download | gdb-704afa601f9abdd212d000ff61b1c6a32e085a0b.zip gdb-704afa601f9abdd212d000ff61b1c6a32e085a0b.tar.gz gdb-704afa601f9abdd212d000ff61b1c6a32e085a0b.tar.bz2 |
* 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.
-rw-r--r-- | bfd/ChangeLog | 4 | ||||
-rw-r--r-- | bfd/elf.c | 15 | ||||
-rw-r--r-- | ld/ChangeLog | 7 | ||||
-rw-r--r-- | ld/ldlang.c | 5 |
4 files changed, 28 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 63a7b83..764b361 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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. @@ -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 diff --git a/ld/ChangeLog b/ld/ChangeLog index 6b9b887..5b530ad 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -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. diff --git a/ld/ldlang.c b/ld/ldlang.c index ba14c63..c260829 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -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 = |