mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-09-10 05:52:21 +08:00
bfd/
* hash.c (bfd_hash_hash): Extract from.. (bfd_hash_lookup): ..here. (bfd_hash_rename): New function. * section.c (bfd_rename_section): New function. * bfd-in.h (bfd_hash_rename): Declare. * bfd-in2.h: Regenerate. * elf.c (_bfd_elf_make_section_from_shdr): Rename input sections when compressing or decompressing. Don't assert name match. * elf64-hppa.c (get_reloc_section): Don't assert name match. * elfxx-ia64.c (get_reloc_section): Likewise. binutils/ * objcopy.c (copy_main): No need to rename sections when compressing or decompressing. binutils/testsuite/ * binutils-all/objdump.W: Adjust expected result for debug section rename.
This commit is contained in:
31
bfd/elf.c
31
bfd/elf.c
@ -822,11 +822,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
|
||||
const struct elf_backend_data *bed;
|
||||
|
||||
if (hdr->bfd_section != NULL)
|
||||
{
|
||||
BFD_ASSERT (strcmp (name,
|
||||
bfd_get_section_name (abfd, hdr->bfd_section)) == 0);
|
||||
return TRUE;
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
newsect = bfd_make_section_anyway (abfd, name);
|
||||
if (newsect == NULL)
|
||||
@ -1016,6 +1012,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
|
||||
|| (name[1] == 'z' && name[7] == '_')))
|
||||
{
|
||||
enum { nothing, compress, decompress } action = nothing;
|
||||
char *new_name;
|
||||
|
||||
if (bfd_is_section_compressed (abfd, newsect))
|
||||
{
|
||||
@ -1030,6 +1027,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
|
||||
action = compress;
|
||||
}
|
||||
|
||||
new_name = NULL;
|
||||
switch (action)
|
||||
{
|
||||
case nothing:
|
||||
@ -1042,6 +1040,17 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
|
||||
abfd, name);
|
||||
return FALSE;
|
||||
}
|
||||
if (name[1] != 'z')
|
||||
{
|
||||
unsigned int len = strlen (name);
|
||||
|
||||
new_name = bfd_alloc (abfd, len + 2);
|
||||
if (new_name == NULL)
|
||||
return FALSE;
|
||||
new_name[0] = '.';
|
||||
new_name[1] = 'z';
|
||||
memcpy (new_name + 2, name + 1, len);
|
||||
}
|
||||
break;
|
||||
case decompress:
|
||||
if (!bfd_init_section_decompress_status (abfd, newsect))
|
||||
@ -1051,8 +1060,20 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
|
||||
abfd, name);
|
||||
return FALSE;
|
||||
}
|
||||
if (name[1] == 'z')
|
||||
{
|
||||
unsigned int len = strlen (name);
|
||||
|
||||
new_name = bfd_alloc (abfd, len);
|
||||
if (new_name == NULL)
|
||||
return FALSE;
|
||||
new_name[0] = '.';
|
||||
memcpy (new_name + 1, name + 2, len - 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (new_name != NULL)
|
||||
bfd_rename_section (abfd, newsect, new_name);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
Reference in New Issue
Block a user