mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-25 00:37:38 +00:00
include: sframe: doc: define new flag SFRAME_F_FDE_FUNC_START_PCREL
Add a new flag SFRAME_F_FDE_FUNC_START_PCREL to SFrame stack trace
format. If set, this flag indicates that the function start address
field (sfde_func_start_address) is the offset to the function start
address from the SFrame FDE function start address field itself.
Such an encoding is friendlier to the exisitng PC-REL relocations
available in the ABIs supported in SFrame: AMD64 (R_X86_64_PC32) and
AArch64 (R_AARCH64_PREL32). In subsequent patches, we will make the
implementation in gas and ld to both:
- emit the values in the same (above-mentioned) encoding uniformly.
- set the flag SFRAME_F_FDE_FUNC_START_PCREL in the SFrame header
for consumers to be able to distinguish.
Define SFRAME_V2_F_ALL_FLAGS in sframe.h to help keep the implementation
less error-prone by keeping a set of all defined flags at a central
place. Adjust the check in sframe_header_sanity_check_p () to use the
SFRAME_V2_F_ALL_FLAGS instead.
Add documentation for SFRAME_F_FDE_FUNC_START_PCREL. Update the
documentation about the encoding of the sfde_func_start_address field.
Also, update the section "Changes from Version 1 to Version 2" to
include the specification of the new flag SFRAME_F_FDE_FUNC_START_PCREL
as an erratum to the SFrame Version 2 specification.
include/
* sframe.h (SFRAME_F_FDE_FUNC_START_PCREL): New definition.
(SFRAME_V2_F_ALL_FLAGS): Likewise.
libsframe/
* sframe-dump.c (dump_sframe_header_flags): Update to include
the new flag SFRAME_F_FDE_FUNC_START_PCREL.
* sframe.c (sframe_header_sanity_check_p): Use
SFRAME_V2_F_ALL_FLAGS.
libsframe/doc/
* sframe-spec.texi: Add details about the new flag. Also update
the defails about the sfde_func_start_address encoding.
This commit is contained in:
@@ -82,9 +82,20 @@ extern "C"
|
||||
/* Various flags for SFrame. */
|
||||
|
||||
/* Function Descriptor Entries are sorted on PC. */
|
||||
#define SFRAME_F_FDE_SORTED 0x1
|
||||
#define SFRAME_F_FDE_SORTED 0x1
|
||||
/* Functions preserve frame pointer. */
|
||||
#define SFRAME_F_FRAME_POINTER 0x2
|
||||
#define SFRAME_F_FRAME_POINTER 0x2
|
||||
/* Function start address in SFrame FDE is encoded as the distance from the
|
||||
location of the sfde_func_start_address to the start PC of the function.
|
||||
If absent, the function start address in SFrame FDE is encoded as the
|
||||
distance from the start of the SFrame FDE section to the start PC of the
|
||||
function. */
|
||||
#define SFRAME_F_FDE_FUNC_START_PCREL 0x4
|
||||
|
||||
/* Set of all defined flags in SFrame V2. */
|
||||
#define SFRAME_V2_F_ALL_FLAGS \
|
||||
(SFRAME_F_FDE_SORTED | SFRAME_F_FRAME_POINTER \
|
||||
| SFRAME_F_FDE_FUNC_START_PCREL)
|
||||
|
||||
#define SFRAME_CFA_FIXED_FP_INVALID 0
|
||||
#define SFRAME_CFA_FIXED_RA_INVALID 0
|
||||
|
||||
Reference in New Issue
Block a user