diff options
author | Indu Bhagat <indu.bhagat@oracle.com> | 2025-07-11 09:39:24 -0700 |
---|---|---|
committer | Indu Bhagat <indu.bhagat@oracle.com> | 2025-07-11 10:29:54 -0700 |
commit | 5a23093ab47658443adefe077a2708e136aaff1c (patch) | |
tree | 28bdd1feb898b5499b44552ec53dd8160add367c | |
parent | 608c50d50f4dbcf7cbf9b9098a374b37223278b4 (diff) | |
download | binutils-5a23093ab47658443adefe077a2708e136aaff1c.zip binutils-5a23093ab47658443adefe077a2708e136aaff1c.tar.gz binutils-5a23093ab47658443adefe077a2708e136aaff1c.tar.bz2 |
libsframe: testsuite: fix PR libsframe/33140
Commit 0d4d5a2633f missed some necessary adjustments to the testcase
after rebase. SFrame FDE function start address data is now an offset
in PCREL encoding; reflect with a new flag SFRAME_F_FDE_START_ADDR_PCREL
in the header.
Adjust the newly added testcase.
PR libsframe/33140 SFrame test failures on x86-64
libsframe/testsuite/
* libsframe.find/plt-findfre-2.c: Adjust for the new FDE func
start addr encoding.
-rw-r--r-- | libsframe/testsuite/libsframe.find/plt-findfre-2.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libsframe/testsuite/libsframe.find/plt-findfre-2.c b/libsframe/testsuite/libsframe.find/plt-findfre-2.c index 195a05b..00a5b2a 100644 --- a/libsframe/testsuite/libsframe.find/plt-findfre-2.c +++ b/libsframe/testsuite/libsframe.find/plt-findfre-2.c @@ -48,7 +48,11 @@ add_plt0_fde (sframe_encoder_ctx *ectx, uint32_t plt_vaddr, unsigned char finfo = sframe_fde_create_func_info (SFRAME_FRE_TYPE_ADDR1, SFRAME_FDE_TYPE_PCINC); - int32_t func_start_addr = plt_vaddr - sframe_vaddr; + uint32_t offsetof_fde_in_sec + = sframe_encoder_get_offsetof_fde_start_addr (ectx, idx, NULL); + + int32_t func_start_addr = (plt_vaddr + - (sframe_vaddr + offsetof_fde_in_sec)); /* 1 PCINC-type FDE for 1 plt0 entry of 32 bytes. */ int err = sframe_encoder_add_funcdesc_v2 (ectx, func_start_addr, @@ -77,7 +81,11 @@ add_pltn_fde (sframe_encoder_ctx *ectx, uint32_t plt_vaddr, unsigned char finfo = sframe_fde_create_func_info (SFRAME_FRE_TYPE_ADDR1, SFRAME_FDE_TYPE_PCMASK); - int32_t func_start_addr = plt_vaddr - sframe_vaddr; + uint32_t offsetof_fde_in_sec + = sframe_encoder_get_offsetof_fde_start_addr (ectx, idx, NULL); + + int32_t func_start_addr = (plt_vaddr + - (sframe_vaddr + offsetof_fde_in_sec)); /* 1 PCMASK-type FDE for 5 pltN entries of 32 bytes each. */ int err = sframe_encoder_add_funcdesc_v2 (ectx, func_start_addr, @@ -117,7 +125,8 @@ void test_plt_findfre (const char suffix, const uint32_t plt_vaddr, } \ while (0) - ectx = sframe_encode (SFRAME_VERSION, 0, SFRAME_ABI_S390X_ENDIAN_BIG, + ectx = sframe_encode (SFRAME_VERSION, SFRAME_F_FDE_FUNC_START_PCREL, + SFRAME_ABI_S390X_ENDIAN_BIG, SFRAME_CFA_FIXED_FP_INVALID, SFRAME_CFA_FIXED_RA_INVALID, &err); |