mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 02:50:08 +08:00
bfd: use "stack trace" instead of "unwind" for SFrame
SFrame format is meant for generating stack traces only. bfd/ * elf-bfd.h: Replace the use of "unwind" with "stack trace". * elf-sframe.c: Likewise. * elf64-x86-64.c: Likewise. * elfxx-x86.c: Likewise. include/ * elf/common.h: Likewise.
This commit is contained in:
@ -702,7 +702,7 @@ struct elf_link_hash_table
|
|||||||
/* Used by eh_frame code when editing .eh_frame. */
|
/* Used by eh_frame code when editing .eh_frame. */
|
||||||
struct eh_frame_hdr_info eh_info;
|
struct eh_frame_hdr_info eh_info;
|
||||||
|
|
||||||
/* Used to link unwind data in .sframe sections. */
|
/* Used to link stack trace info in .sframe sections. */
|
||||||
struct sframe_enc_info sfe_info;
|
struct sframe_enc_info sfe_info;
|
||||||
|
|
||||||
/* A linked list of local symbols to be added to .dynsym. */
|
/* A linked list of local symbols to be added to .dynsym. */
|
||||||
|
@ -206,7 +206,7 @@ _bfd_elf_parse_sframe (bfd *abfd,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read the SFrame unwind information from abfd. */
|
/* Read the SFrame stack trace information from abfd. */
|
||||||
if (!bfd_malloc_and_get_section (abfd, sec, &sfbuf))
|
if (!bfd_malloc_and_get_section (abfd, sec, &sfbuf))
|
||||||
goto fail_no_free;
|
goto fail_no_free;
|
||||||
|
|
||||||
@ -438,10 +438,11 @@ _bfd_elf_merge_section_sframe (bfd *abfd,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Expected to land here for SFrame unwind info as created
|
/* Expected to land here when SFrame stack trace info is
|
||||||
for the .plt* sections. These sections can have upto two
|
created dynamically for the .plt* sections. These
|
||||||
FDE entries. Although the code should work for > 2,
|
sections are expected to have upto two SFrame FDE entries.
|
||||||
leaving this assert here for safety. */
|
Although the code should work for > 2, leaving this
|
||||||
|
assert here for safety. */
|
||||||
BFD_ASSERT (num_fidx <= 2);
|
BFD_ASSERT (num_fidx <= 2);
|
||||||
/* For the first entry, we know the offset of the SFrame FDE's
|
/* For the first entry, we know the offset of the SFrame FDE's
|
||||||
sfde_func_start_address. Side note: see how the value
|
sfde_func_start_address. Side note: see how the value
|
||||||
|
@ -895,7 +895,7 @@ static const struct elf_x86_sframe_plt elf_x86_64_sframe_plt =
|
|||||||
{ &elf_x86_64_sframe_pltn_fre1, &elf_x86_64_sframe_pltn_fre2 },
|
{ &elf_x86_64_sframe_pltn_fre1, &elf_x86_64_sframe_pltn_fre2 },
|
||||||
NON_LAZY_PLT_ENTRY_SIZE,
|
NON_LAZY_PLT_ENTRY_SIZE,
|
||||||
1, /* Number of FREs for PLTn for second PLT. */
|
1, /* Number of FREs for PLTn for second PLT. */
|
||||||
/* FREs for second plt ( unwind info for .plt.got is
|
/* FREs for second plt (stack trace info for .plt.got is
|
||||||
identical). Used when IBT or non-lazy PLT is in effect. */
|
identical). Used when IBT or non-lazy PLT is in effect. */
|
||||||
{ &elf_x86_64_sframe_sec_pltn_fre1 }
|
{ &elf_x86_64_sframe_sec_pltn_fre1 }
|
||||||
};
|
};
|
||||||
|
@ -1804,7 +1804,7 @@ enum dynobj_sframe_plt_type
|
|||||||
SFRAME_PLT_SEC = 2
|
SFRAME_PLT_SEC = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Create SFrame unwind info for the plt entries in the .plt section
|
/* Create SFrame stack trace info for the plt entries in the .plt section
|
||||||
of type PLT_SEC_TYPE. */
|
of type PLT_SEC_TYPE. */
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
@ -1819,7 +1819,7 @@ _bfd_x86_elf_create_sframe_plt (bfd *output_bfd,
|
|||||||
unsigned int plt0_entry_size;
|
unsigned int plt0_entry_size;
|
||||||
unsigned char func_info;
|
unsigned char func_info;
|
||||||
unsigned int fre_type;
|
unsigned int fre_type;
|
||||||
/* The dynamic plt section for which .sframe unwind information is being
|
/* The dynamic plt section for which .sframe stack trace information is being
|
||||||
created. */
|
created. */
|
||||||
asection *dpltsec;
|
asection *dpltsec;
|
||||||
|
|
||||||
@ -1832,7 +1832,7 @@ _bfd_x86_elf_create_sframe_plt (bfd *output_bfd,
|
|||||||
|
|
||||||
bed = get_elf_backend_data (output_bfd);
|
bed = get_elf_backend_data (output_bfd);
|
||||||
htab = elf_x86_hash_table (info, bed->target_id);
|
htab = elf_x86_hash_table (info, bed->target_id);
|
||||||
/* Whether SFrame unwind info for plt0 is to be generated. */
|
/* Whether SFrame stack trace info for plt0 is to be generated. */
|
||||||
plt0_generated_p = htab->plt.has_plt0;
|
plt0_generated_p = htab->plt.has_plt0;
|
||||||
plt0_entry_size
|
plt0_entry_size
|
||||||
= (plt0_generated_p) ? htab->sframe_plt->plt0_entry_size : 0;
|
= (plt0_generated_p) ? htab->sframe_plt->plt0_entry_size : 0;
|
||||||
@ -1906,7 +1906,7 @@ _bfd_x86_elf_create_sframe_plt (bfd *output_bfd,
|
|||||||
/* pltn entries use an SFrame FDE of type
|
/* pltn entries use an SFrame FDE of type
|
||||||
SFRAME_FDE_TYPE_PCMASK to exploit the repetitive
|
SFRAME_FDE_TYPE_PCMASK to exploit the repetitive
|
||||||
pattern of the instructions in these entries. Using this SFrame FDE
|
pattern of the instructions in these entries. Using this SFrame FDE
|
||||||
type helps in keeping the unwind information for pltn entries
|
type helps in keeping the SFrame stack trace info for pltn entries
|
||||||
compact. */
|
compact. */
|
||||||
func_info = sframe_fde_create_func_info (fre_type,
|
func_info = sframe_fde_create_func_info (fre_type,
|
||||||
SFRAME_FDE_TYPE_PCMASK);
|
SFRAME_FDE_TYPE_PCMASK);
|
||||||
|
@ -489,7 +489,7 @@
|
|||||||
#define PT_GNU_STACK (PT_LOOS + 0x474e551) /* Stack flags */
|
#define PT_GNU_STACK (PT_LOOS + 0x474e551) /* Stack flags */
|
||||||
#define PT_GNU_RELRO (PT_LOOS + 0x474e552) /* Read-only after relocation */
|
#define PT_GNU_RELRO (PT_LOOS + 0x474e552) /* Read-only after relocation */
|
||||||
#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553) /* GNU property */
|
#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553) /* GNU property */
|
||||||
#define PT_GNU_SFRAME (PT_LOOS + 0x474e554) /* SFrame unwind information */
|
#define PT_GNU_SFRAME (PT_LOOS + 0x474e554) /* SFrame stack trace information */
|
||||||
|
|
||||||
/* OpenBSD segment types. */
|
/* OpenBSD segment types. */
|
||||||
#define PT_OPENBSD_RANDOMIZE (PT_LOOS + 0x5a3dbe6) /* Fill with random data. */
|
#define PT_OPENBSD_RANDOMIZE (PT_LOOS + 0x5a3dbe6) /* Fill with random data. */
|
||||||
|
Reference in New Issue
Block a user