mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 09:58:19 +08:00
Sync libiberty/ & include/ with GCC
Note this brings in the interface files for libcc1/G++ as well, which we will be needing in GDB soon anyway. That commit renamed a method in the C interface and that required a small update to GDB's compile/ code, which I've included that in this patch to keep the tree building. include/ChangeLog: 2017-09-15 Pedro Alves <palves@redhat.com> * ansidecl.h (DISABLE_COPY_AND_ASSIGN): New macro. 2017-09-12 Jiong Wang <jiong.wang@arm.com> * dwarf2.def (DW_CFA_AARCH64_negate_ra_state): New DW_CFA_DUP. * dwarf2.h (DW_CFA_DUP): New define. 2017-08-21 Richard Biener <rguenther@suse.de> * simple-object.h (simple_object_copy_lto_debug_sections): New function. 2017-05-18 Martin Liska <mliska@suse.cz> * ansidecl.h: Define CONSTEXPR macro. 2017-05-24 Nathan Sidwell <nathan@acm.org> * libiberty.h (ASTRDUP): Adjust cast to avoid warning. 2017-01-30 Alexandre Oliva <aoliva@redhat.com> Introduce C++ support in libcc1. * gcc-c-fe.def (int_type_v0): Rename from... (int_type): ... this. Introduce new version. (float_type_v0): Rename from... (float_type): ... this. Introduce new version. (char_type): New. * gcc-c-interface.h (gcc_c_api_version): Add GCC_C_FE_VERSION_1. (gcc_type_array): Move... * gcc-interface.h: ... here. * gcc-cp-fe.def: New. * gcc-cp-interface.h: New. 2016-04-29 Oleg Endo <olegendo@gcc.gnu.org> * longlong.h (umul_ppmm): Remove SHMEDIA checks. (__umulsidi3, count_leading_zeros): Remove SHMEDIA implementations. 2017-09-15 Yao Qi <yao.qi@linaro.org> Pedro Alves <palves@redhat.com> * ansidecl.h (DISABLE_COPY_AND_ASSIGN): New macro. 2017-09-12 Jiong Wang <jiong.wang@arm.com> * dwarf2.def (DW_CFA_AARCH64_negate_ra_state): New DW_CFA_DUP. * dwarf2.h (DW_CFA_DUP): New define. 2017-08-21 Richard Biener <rguenther@suse.de> * simple-object.h (simple_object_copy_lto_debug_sections): New function. 2017-05-18 Martin Liska <mliska@suse.cz> * ansidecl.h: Define CONSTEXPR macro. 2017-05-24 Nathan Sidwell <nathan@acm.org> * libiberty.h (ASTRDUP): Adjust cast to avoid warning. 2017-01-30 Alexandre Oliva <aoliva@redhat.com> Introduce C++ support in libcc1. * gcc-c-fe.def (int_type_v0): Rename from... (int_type): ... this. Introduce new version. (float_type_v0): Rename from... (float_type): ... this. Introduce new version. (char_type): New. * gcc-c-interface.h (gcc_c_api_version): Add GCC_C_FE_VERSION_1. (gcc_type_array): Move... * gcc-interface.h: ... here. * gcc-cp-fe.def: New. * gcc-cp-interface.h: New. 2016-04-29 Oleg Endo <olegendo@gcc.gnu.org> * longlong.h (umul_ppmm): Remove SHMEDIA checks. (__umulsidi3, count_leading_zeros): Remove SHMEDIA implementations. libiberty/ChangeLog: 2017-09-15 Nathan Sidwell <nathan@acm.org> PR demangler/82195 * cp-demangle.c (d_name): Add 'toplevel' parm. Pass to ... (d_local_name): ... here. Parse trailing function args on nested local_name. (d_encoding, d_special_name, d_class_enum_type): Adjust d_name calls. * testsuite/demangle-expected: Add tests. 2017-09-15 Richard Biener <rguenther@suse.de> PR lto/81968 * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections): Iterate marking dependent sections necessary. 2017-09-15 Nathan Sidwell <nathan@acm.org> * cp-demangle.c (is_fnqual_component_type): Reimplement using FNQUAL_COMPONENT_CASE. (d_encoding): Hold bare_function_type in local var. (d_local_name): Build name in both cases and build result once. Collapse switch-if to single conditional. (d_local_name): * testsuite/demangle-expected: Realign blank lines with tests. 2017-09-12 Jiong Wang <jiong.wang@arm.com> * dwarfnames.c (DW_CFA_DUP): New define. gdb/ChangeLog: 2017-09-15 Pedro Alves <palves@redhat.com> * compile/compile-c-types.c (convert_enum, convert_int) (convert_float): Adjust to refer to int_type_v0 and float_type_v0.
This commit is contained in:
@ -1158,70 +1158,84 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj,
|
||||
|
||||
/* Mark sections as preserved that are required by to be preserved
|
||||
sections. */
|
||||
for (i = 1; i < shnum; ++i)
|
||||
int changed;
|
||||
do
|
||||
{
|
||||
unsigned char *shdr;
|
||||
unsigned int sh_type, sh_info, sh_link;
|
||||
off_t offset;
|
||||
off_t length;
|
||||
changed = 0;
|
||||
for (i = 1; i < shnum; ++i)
|
||||
{
|
||||
unsigned char *shdr;
|
||||
unsigned int sh_type, sh_info, sh_link;
|
||||
off_t offset;
|
||||
off_t length;
|
||||
|
||||
shdr = shdrs + (i - 1) * shdr_size;
|
||||
sh_type = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
|
||||
shdr, sh_type, Elf_Word);
|
||||
sh_info = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
|
||||
shdr, sh_info, Elf_Word);
|
||||
sh_link = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
|
||||
shdr, sh_link, Elf_Word);
|
||||
if (sh_type == SHT_GROUP)
|
||||
{
|
||||
/* Mark groups containing copied sections. */
|
||||
unsigned entsize = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
|
||||
shdr, sh_entsize, Elf_Addr);
|
||||
unsigned char *ent, *buf;
|
||||
int keep = 0;
|
||||
offset = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
|
||||
shdr, sh_offset, Elf_Addr);
|
||||
length = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
|
||||
shdr, sh_size, Elf_Addr);
|
||||
buf = XNEWVEC (unsigned char, length);
|
||||
if (!simple_object_internal_read (sobj->descriptor,
|
||||
sobj->offset + offset, buf,
|
||||
(size_t) length, &errmsg, err))
|
||||
shdr = shdrs + (i - 1) * shdr_size;
|
||||
sh_type = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
|
||||
shdr, sh_type, Elf_Word);
|
||||
sh_info = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
|
||||
shdr, sh_info, Elf_Word);
|
||||
sh_link = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
|
||||
shdr, sh_link, Elf_Word);
|
||||
if (sh_type == SHT_GROUP)
|
||||
{
|
||||
XDELETEVEC (buf);
|
||||
XDELETEVEC (names);
|
||||
XDELETEVEC (shdrs);
|
||||
return errmsg;
|
||||
/* Mark groups containing copied sections. */
|
||||
unsigned entsize = ELF_FETCH_FIELD (type_functions, ei_class,
|
||||
Shdr, shdr, sh_entsize,
|
||||
Elf_Addr);
|
||||
unsigned char *ent, *buf;
|
||||
int keep = 0;
|
||||
offset = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
|
||||
shdr, sh_offset, Elf_Addr);
|
||||
length = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
|
||||
shdr, sh_size, Elf_Addr);
|
||||
buf = XNEWVEC (unsigned char, length);
|
||||
if (!simple_object_internal_read (sobj->descriptor,
|
||||
sobj->offset + offset, buf,
|
||||
(size_t) length, &errmsg, err))
|
||||
{
|
||||
XDELETEVEC (buf);
|
||||
XDELETEVEC (names);
|
||||
XDELETEVEC (shdrs);
|
||||
return errmsg;
|
||||
}
|
||||
for (ent = buf + entsize; ent < buf + length; ent += entsize)
|
||||
{
|
||||
unsigned sec = type_functions->fetch_Elf_Word (ent);
|
||||
if (pfnret[sec - 1] == 0)
|
||||
keep = 1;
|
||||
}
|
||||
if (keep)
|
||||
{
|
||||
changed |= (pfnret[sh_link - 1] == -1
|
||||
|| pfnret[i - 1] == -1);
|
||||
pfnret[sh_link - 1] = 0;
|
||||
pfnret[i - 1] = 0;
|
||||
}
|
||||
}
|
||||
for (ent = buf + entsize; ent < buf + length; ent += entsize)
|
||||
if (sh_type == SHT_RELA
|
||||
|| sh_type == SHT_REL)
|
||||
{
|
||||
unsigned sec = type_functions->fetch_Elf_Word (ent);
|
||||
if (pfnret[sec - 1] == 0)
|
||||
keep = 1;
|
||||
/* Mark relocation sections and symtab of copied sections. */
|
||||
if (pfnret[sh_info - 1] == 0)
|
||||
{
|
||||
changed |= (pfnret[sh_link - 1] == -1
|
||||
|| pfnret[i - 1] == -1);
|
||||
pfnret[sh_link - 1] = 0;
|
||||
pfnret[i - 1] = 0;
|
||||
}
|
||||
}
|
||||
if (keep)
|
||||
if (sh_type == SHT_SYMTAB)
|
||||
{
|
||||
pfnret[sh_link - 1] = 0;
|
||||
pfnret[i - 1] = 0;
|
||||
/* Mark strings sections of copied symtabs. */
|
||||
if (pfnret[i - 1] == 0)
|
||||
{
|
||||
changed |= pfnret[sh_link - 1] == -1;
|
||||
pfnret[sh_link - 1] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sh_type == SHT_RELA
|
||||
|| sh_type == SHT_REL)
|
||||
{
|
||||
/* Mark relocation sections and symtab of copied sections. */
|
||||
if (pfnret[sh_info - 1] == 0)
|
||||
{
|
||||
pfnret[sh_link - 1] = 0;
|
||||
pfnret[i - 1] = 0;
|
||||
}
|
||||
}
|
||||
if (sh_type == SHT_SYMTAB)
|
||||
{
|
||||
/* Mark strings sections of copied symtabs. */
|
||||
if (pfnret[i - 1] == 0)
|
||||
pfnret[sh_link - 1] = 0;
|
||||
}
|
||||
}
|
||||
while (changed);
|
||||
|
||||
/* Then perform the actual copying. */
|
||||
for (i = 1; i < shnum; ++i)
|
||||
|
Reference in New Issue
Block a user