]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Bug 496370 - Illumos: signal handling is broken
authorPaul Floyd <pjfloyd@wanadoo.fr>
Fri, 14 Feb 2025 19:45:02 +0000 (20:45 +0100)
committerPaul Floyd <pjfloyd@wanadoo.fr>
Fri, 14 Feb 2025 19:45:02 +0000 (20:45 +0100)
This isn't a great fix, it just turns off optimization for
a couple of signal frame functions. If ever I have time I'll try
to find out out which part of -O1 is responsible, and maybe from
that also exactly what part of the code.

NEWS
coregrind/m_syswrap/syswrap-solaris.c

diff --git a/NEWS b/NEWS
index 1c627c7744f08cf2b75c5ce4e072f2ef31fbabc4..fb7642bb1921931ceb2726c50bdd6582476d3b94 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -40,6 +40,7 @@ are not entered into bugzilla tend to get forgotten about or ignored.
 494327  Crash when running Helgrind built with #define TRACE_PTH_FNS 1
 494337  All threaded applications cause still holding lock errors
 495488  Add FreeBSD getrlimitusage syscall wrapper
+496370  Illumos: signal handling is broken
 496571  False positive for null key passed to bpf_map_get_next_key syscall.
 469782  Valgrind does not support zstd-compressed debug sections
 497130  Recognize new DWARF5 DW_LANG constants
@@ -53,6 +54,7 @@ are not entered into bugzilla tend to get forgotten about or ignored.
 499183  FreeBSD: differences in avx-vmovq output
 499212  mmap() with MAP_ALIGNED() returns unaligned pointer
 
+
 To see details of a given bug, visit
   https://bugs.kde.org/show_bug.cgi?id=XXXXXX
 where XXXXXX is the bug number as listed above.
index 9abeb85001779e91651a525288ba266598398a84..faeea15f54d694f5de97a3b769ced8128e8d2138 100644 (file)
@@ -511,6 +511,9 @@ ULong ML_(fletcher64)(UInt *buf, SizeT blocks)
    return (sum2 << 32) | sum1;
 }
 
+#pragma GCC push_options
+#pragma GCC optimize ("O0")
+
 /* Save a complete context (VCPU state, sigmask) of a given client thread
    into the vki_ucontext_t structure.  This structure is supposed to be
    allocated in the client memory, a caller must make sure that the memory can
@@ -666,6 +669,8 @@ void VG_(restore_context)(ThreadId tid, vki_ucontext_t *uc, CorePart part,
    }
 }
 
+#pragma GCC pop_options
+
 /* Set a client stack associated with a given thread id according to values
    passed in the vki_stack_t structure. */
 static void set_stack(ThreadId tid, vki_stack_t *st)