Fix: define old_sigaction as compat_old_sigaction in x86-32 compat
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 9 Nov 2022 22:20:06 +0000 (17:20 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 17 Nov 2022 18:57:03 +0000 (13:57 -0500)
In a follow-up patch which updates the instrumentation for x86-32, the
instrumentation of the old_sigaction() syscall would fail to build when
targeting a 64-bit kernel.

In that context, old_sigaction becomes compat_old_sigaction which is a
syscall that can be disabled (it was superseded by rt_sigaction a long
time ago).

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I633c80e03947a81d1b5c93f8f95a61feb7c34884

include/instrumentation/syscalls/headers/x86-32-syscalls_pointers_override.h

index e93213f68d63007dedfa1fb3f15e45224b3d4fed..5689bda412950ed68ea8284c82e4224a2a7f4a03 100644 (file)
 #  define OVERRIDE_32_chown16
 # endif
 
+#ifdef CONFIG_X86_64
+#if CONFIG_COMPAT_OLD_SIGACTION
+/*
+ * From the point of view of the 64-bit ABI, old_sigaction
+ * becomes compat_old_sigaction.
+ */
+#define old_sigaction compat_old_sigaction
+#else /* CONFIG_COMPAT_OLD_SIGACTION */
+/*
+ * The target 64-bit kernel does not enable the support for
+ * the 32-bit compat version of OLD_SIGACTION. Defining
+ * OVERRIDE_32_sigaction ensures we don't build a tracepoint
+ * for this syscall.
+ */
+#define OVERRIDE_32_sigaction
+#endif /* CONFIG_COMPAT_OLD_SIGACTION */
+#endif
+
 #define OVERRIDE_32_pipe
 #define OVERRIDE_64_pipe
 SC_LTTNG_TRACEPOINT_EVENT(pipe,
This page took 0.025959 seconds and 4 git commands to generate.