]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
elf: Check SFrame on tst-dl_find_object.c
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 22 Jul 2025 15:55:52 +0000 (12:55 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 24 Jul 2025 18:51:58 +0000 (15:51 -0300)
If SFrame is enable check if DLFO_FLAG_SFRAME is set (since sframe
support is added by default) and if dlfo_sframe has the expected
value.

Checked on aarch64-linux-gnu and x86_64-linux-gnu.

Reviewed-by: Sam James <sam@gentoo.org>
elf/tst-dl_find_object.c

index 96ec591f26b7ace5602223684adff5ba5ab9c24a..d85eb21382b3f340325ea1e9e811caa56caede6f 100644 (file)
@@ -122,6 +122,14 @@ check (void *address,
               address, actual.dlfo_eh_count, expected->dlfo_eh_count);
     }
 #endif
+  if (actual.dlfo_flags & DLFO_FLAG_SFRAME
+      && actual.dlfo_sframe != expected->dlfo_sframe)
+    {
+      support_record_failure ();
+      printf ("%s:%d: error: %p: sframe is %p, expected %p\n",
+              __FILE__, line,
+              address, actual.dlfo_sframe, expected->dlfo_sframe);
+    }
 }
 
 /* Check that unwind data for the main executable and the dynamic
@@ -180,6 +188,12 @@ do_test (void)
             dlfo.dlfo_eh_frame, ret);
     TEST_COMPARE (ret, 0);
     TEST_VERIFY (dlfo.dlfo_eh_frame != NULL);
+#if ENABLE_SFRAME
+    TEST_VERIFY ((dlfo.dlfo_flags & DLFO_FLAG_SFRAME) == DLFO_FLAG_SFRAME);
+    TEST_VERIFY (dlfo.dlfo_sframe != NULL);
+#else
+    TEST_VERIFY ((dlfo.dlfo_flags & DLFO_FLAG_SFRAME) != DLFO_FLAG_SFRAME);
+#endif
   }
 
   check_initial ();