fix: kallsyms wrapper on ppc64el
authorMichael Jeanson <mjeanson@efficios.com>
Thu, 24 Nov 2022 19:25:33 +0000 (14:25 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 24 Nov 2022 20:25:29 +0000 (15:25 -0500)
The 'PPC64_ELF_ABI_v2' macro in 'asm/types.h' was removed in v5.19 and
replaced by a config option 'CONFIG_PPC64_ELF_ABI_V2'.

See upstream commit :

  commit 5b89492c03e5c0a2c259b97d7d4c1bb9b02860aa
  Author: Christophe Leroy <christophe.leroy@csgroup.eu>
  Date:   Mon May 9 07:36:08 2022 +0200

    powerpc: Finalise cleanup around ABI use

    Now that we have CONFIG_PPC64_ELF_ABI_V1 and CONFIG_PPC64_ELF_ABI_V2,
    get rid of all indirect detection of ABI version.

Link: https://lore.kernel.org/r/709d9d69523c14c8a9fba4486395dca0f2d675b1.1652074503.git.christophe.leroy@csgroup.eu
Change-Id: Ibd00e35cab5516a6224bdfa5a6b540119b42dc55
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
include/wrapper/kallsyms.h
src/wrapper/kallsyms.c

index 6a3e27e986e0b72d0e2c843f2b9f854e9ed940cd..0aac5a2d64ca28c19bc9abf2778413c4b04d370f 100644 (file)
 #include <linux/kallsyms.h>
 #include <lttng/kernel-version.h>
 
+/* CONFIG_PPC64_ELF_ABI_V1/V2 were introduced in v5.19 */
+#if defined(CONFIG_PPC64_ELF_ABI_V2) || (defined(CONFIG_PPC64) && defined(CONFIG_CPU_LITTLE_ENDIAN))
+#define LTTNG_CONFIG_PPC64_ELF_ABI_V2
+#endif
+#if defined(CONFIG_PPC64_ELF_ABI_V1) || (defined(CONFIG_PPC64) && defined(CONFIG_CPU_BIG_ENDIAN))
+#define LTTNG_CONFIG_PPC64_ELF_ABI_V1
+#endif
+
 /*
  * PowerPC ABIv1 needs KALLSYMS_ALL to get the function descriptor,
  * which is needed to perform the function call.
  */
-#if defined(CONFIG_PPC64) && (!defined(_CALL_ELF) || _CALL_ELF < 2)
+#ifdef LTTNG_CONFIG_PPC64_ELF_ABI_V1
 # ifndef CONFIG_KALLSYMS_ALL
 #  error "LTTng-modules requires CONFIG_KALLSYMS_ALL on PowerPC ABIv1"
 # endif
index 93017adc87a6ab40cec47989df3659e56a92b2f1..061224dee26876ca88f2651298b6ce5ee0552f37 100644 (file)
@@ -39,7 +39,7 @@ unsigned long do_get_kallsyms(void)
        memset(&probe, 0, sizeof(probe));
        probe.pre_handler = dummy_kprobe_handler;
        probe.symbol_name = "kallsyms_lookup_name";
-#ifdef PPC64_ELF_ABI_v2
+#ifdef LTTNG_CONFIG_PPC64_ELF_ABI_V2
        /*
         * With powerpc64 ABIv2, we need the global entry point of
         * kallsyms_lookup_name to call it later, while kprobe_register would
@@ -53,7 +53,7 @@ unsigned long do_get_kallsyms(void)
        ret = register_kprobe(&probe);
        if (ret)
                return 0;
-#ifdef PPC64_ELF_ABI_v2
+#ifdef LTTNG_CONFIG_PPC64_ELF_ABI_V2
        /* Substract 4 bytes to get what we originally want */
        addr = (unsigned long)(((char *)probe.addr) - 4);
 #else
This page took 0.025932 seconds and 4 git commands to generate.