mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-16 14:45:06 +08:00
sframe: fix the defined SFRAME_FRE_TYPE_*_LIMIT constants
An earlier commit 3f107464 defined the SFRAME_FRE_TYPE_*_LIMIT constants. These constants are used (by gas and libsframe) to pick an SFrame FRE type based on the function size. Those constants, however, were buggy, causing the generated SFrame sections to be bloated as SFRAME_FRE_TYPE_ADDR2/SFRAME_FRE_TYPE_ADDR4 got chosen more often than necessary. gas/ * sframe-opt.c (sframe_estimate_size_before_relax): Use typecast. (sframe_convert_frag): Likewise. libsframe/ * sframe.c (sframe_calc_fre_type): Use a more appropriate type for argument. Adjust the check for SFRAME_FRE_TYPE_ADDR4_LIMIT to keep it warning-free but meaningful. include/ * sframe-api.h (sframe_calc_fre_type): Use a more appropriate type for the argument. * sframe.h (SFRAME_FRE_TYPE_ADDR1_LIMIT): Correct the constant. (SFRAME_FRE_TYPE_ADDR2_LIMIT): Likewise. (SFRAME_FRE_TYPE_ADDR4_LIMIT): Likewise.
This commit is contained in:
@ -304,7 +304,8 @@ typedef struct sframe_frame_row_entry_addr1
|
||||
|
||||
/* Upper limit of start address in sframe_frame_row_entry_addr1
|
||||
is 0x100 (not inclusive). */
|
||||
#define SFRAME_FRE_TYPE_ADDR1_LIMIT ((SFRAME_FRE_TYPE_ADDR1 + 1) * 8)
|
||||
#define SFRAME_FRE_TYPE_ADDR1_LIMIT \
|
||||
(1ULL << ((SFRAME_FRE_TYPE_ADDR1 + 1) * 8))
|
||||
|
||||
/* Used when SFRAME_FRE_TYPE_ADDR2 is specified as FRE type. */
|
||||
typedef struct sframe_frame_row_entry_addr2
|
||||
@ -317,7 +318,8 @@ typedef struct sframe_frame_row_entry_addr2
|
||||
|
||||
/* Upper limit of start address in sframe_frame_row_entry_addr2
|
||||
is 0x10000 (not inclusive). */
|
||||
#define SFRAME_FRE_TYPE_ADDR2_LIMIT ((SFRAME_FRE_TYPE_ADDR2 * 2) * 8)
|
||||
#define SFRAME_FRE_TYPE_ADDR2_LIMIT \
|
||||
(1ULL << ((SFRAME_FRE_TYPE_ADDR2 * 2) * 8))
|
||||
|
||||
/* Used when SFRAME_FRE_TYPE_ADDR4 is specified as FRE type. */
|
||||
typedef struct sframe_frame_row_entry_addr4
|
||||
@ -330,7 +332,8 @@ typedef struct sframe_frame_row_entry_addr4
|
||||
|
||||
/* Upper limit of start address in sframe_frame_row_entry_addr2
|
||||
is 0x100000000 (not inclusive). */
|
||||
#define SFRAME_FRE_TYPE_ADDR4_LIMIT ((SFRAME_FRE_TYPE_ADDR4 * 2) * 8)
|
||||
#define SFRAME_FRE_TYPE_ADDR4_LIMIT \
|
||||
(1ULL << ((SFRAME_FRE_TYPE_ADDR4 * 2) * 8))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
Reference in New Issue
Block a user