PR 4479
* elf.c (elf_fake_sections): Don't allow backend to change SHT_NOBITS if called for strip/objcopy --only-keep-debug. * elfxx-mips.c (_bfd_mips_elf_fake_sections): Remove similar fix from here.
This commit is contained in:
parent
b8b6abe0f8
commit
0414f35b82
@ -1,3 +1,11 @@
|
|||||||
|
2007-05-15 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
PR 4479
|
||||||
|
* elf.c (elf_fake_sections): Don't allow backend to change
|
||||||
|
SHT_NOBITS if called for strip/objcopy --only-keep-debug.
|
||||||
|
* elfxx-mips.c (_bfd_mips_elf_fake_sections): Remove similar
|
||||||
|
fix from here.
|
||||||
|
|
||||||
2007-05-14 Alan Modra <amodra@bigpond.net.au>
|
2007-05-14 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* elf.c (bfd_elf_string_from_elf_section): Return NULL on
|
* elf.c (bfd_elf_string_from_elf_section): Return NULL on
|
||||||
|
10
bfd/elf.c
10
bfd/elf.c
@ -2744,6 +2744,7 @@ elf_fake_sections (bfd *abfd, asection *asect, void *failedptrarg)
|
|||||||
const struct elf_backend_data *bed = get_elf_backend_data (abfd);
|
const struct elf_backend_data *bed = get_elf_backend_data (abfd);
|
||||||
bfd_boolean *failedptr = failedptrarg;
|
bfd_boolean *failedptr = failedptrarg;
|
||||||
Elf_Internal_Shdr *this_hdr;
|
Elf_Internal_Shdr *this_hdr;
|
||||||
|
unsigned int sh_type;
|
||||||
|
|
||||||
if (*failedptr)
|
if (*failedptr)
|
||||||
{
|
{
|
||||||
@ -2901,10 +2902,19 @@ elf_fake_sections (bfd *abfd, asection *asect, void *failedptrarg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check for processor-specific section types. */
|
/* Check for processor-specific section types. */
|
||||||
|
sh_type = this_hdr->sh_type;
|
||||||
if (bed->elf_backend_fake_sections
|
if (bed->elf_backend_fake_sections
|
||||||
&& !(*bed->elf_backend_fake_sections) (abfd, this_hdr, asect))
|
&& !(*bed->elf_backend_fake_sections) (abfd, this_hdr, asect))
|
||||||
*failedptr = TRUE;
|
*failedptr = TRUE;
|
||||||
|
|
||||||
|
if (sh_type == SHT_NOBITS
|
||||||
|
&& elf_elfheader (abfd)->e_phnum == 0)
|
||||||
|
{
|
||||||
|
/* Don't change the header type from NOBITS if we are being
|
||||||
|
called for strip/objcopy --only-keep-debug. */
|
||||||
|
this_hdr->sh_type = sh_type;
|
||||||
|
}
|
||||||
|
|
||||||
/* If the section has relocs, set up a section header for the
|
/* If the section has relocs, set up a section header for the
|
||||||
SHT_REL[A] section. If two relocation sections are required for
|
SHT_REL[A] section. If two relocation sections are required for
|
||||||
this section, it is up to the processor-specific back-end to
|
this section, it is up to the processor-specific back-end to
|
||||||
|
@ -5593,11 +5593,7 @@ _bfd_mips_elf_section_from_shdr (bfd *abfd,
|
|||||||
bfd_boolean
|
bfd_boolean
|
||||||
_bfd_mips_elf_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec)
|
_bfd_mips_elf_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec)
|
||||||
{
|
{
|
||||||
register const char *name;
|
const char *name = bfd_get_section_name (abfd, sec);
|
||||||
unsigned int sh_type;
|
|
||||||
|
|
||||||
name = bfd_get_section_name (abfd, sec);
|
|
||||||
sh_type = hdr->sh_type;
|
|
||||||
|
|
||||||
if (strcmp (name, ".liblist") == 0)
|
if (strcmp (name, ".liblist") == 0)
|
||||||
{
|
{
|
||||||
@ -5698,12 +5694,6 @@ _bfd_mips_elf_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec)
|
|||||||
hdr->sh_entsize = 8;
|
hdr->sh_entsize = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* In the unlikely event a special section is empty it has to lose its
|
|
||||||
special meaning. This may happen e.g. when using `strip' with the
|
|
||||||
"--only-keep-debug" option. */
|
|
||||||
if (sec->size > 0 && !(sec->flags & SEC_HAS_CONTENTS))
|
|
||||||
hdr->sh_type = sh_type;
|
|
||||||
|
|
||||||
/* The generic elf_fake_sections will set up REL_HDR using the default
|
/* The generic elf_fake_sections will set up REL_HDR using the default
|
||||||
kind of relocations. We used to set up a second header for the
|
kind of relocations. We used to set up a second header for the
|
||||||
non-default kind of relocations here, but only NewABI would use
|
non-default kind of relocations here, but only NewABI would use
|
||||||
|
Loading…
Reference in New Issue
Block a user