[binutils-gdb] libsframe: testsuite: fix PR libsframe/33140

Indu Bhagat ibhagat@sourceware.org
Fri Jul 11 17:35:01 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5a23093ab47658443adefe077a2708e136aaff1c

commit 5a23093ab47658443adefe077a2708e136aaff1c
Author: Indu Bhagat <indu.bhagat@oracle.com>
Date:   Fri Jul 11 09:39:24 2025 -0700

    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.

Diff:
---
 libsframe/testsuite/libsframe.find/plt-findfre-2.c | 15 ++++++++++++---
 1 file 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 195a05b24bd..00a5b2ab076 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);


More information about the Binutils-cvs mailing list