lkml.org 
[lkml]   [2020]   [Apr]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 131/146] powerpc: Make setjmp/longjmp signature standard
    Date
    From: Clement Courbet <courbet@google.com>

    commit c17eb4dca5a353a9dbbb8ad6934fe57af7165e91 upstream.

    Declaring setjmp()/longjmp() as taking longs makes the signature
    non-standard, and makes clang complain. In the past, this has been
    worked around by adding -ffreestanding to the compile flags.

    The implementation looks like it only ever propagates the value
    (in longjmp) or sets it to 1 (in setjmp), and we only call longjmp
    with integer parameters.

    This allows removing -ffreestanding from the compilation flags.

    Fixes: c9029ef9c957 ("powerpc: Avoid clang warnings around setjmp and longjmp")
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Clement Courbet <courbet@google.com>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200330080400.124803-1-courbet@google.com
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/powerpc/include/asm/setjmp.h | 6 ++++--
    arch/powerpc/kernel/Makefile | 3 ---
    arch/powerpc/xmon/Makefile | 3 ---
    3 files changed, 4 insertions(+), 8 deletions(-)

    --- a/arch/powerpc/include/asm/setjmp.h
    +++ b/arch/powerpc/include/asm/setjmp.h
    @@ -12,7 +12,9 @@

    #define JMP_BUF_LEN 23

    -extern long setjmp(long *) __attribute__((returns_twice));
    -extern void longjmp(long *, long) __attribute__((noreturn));
    +typedef long jmp_buf[JMP_BUF_LEN];
    +
    +extern int setjmp(jmp_buf env) __attribute__((returns_twice));
    +extern void longjmp(jmp_buf env, int val) __attribute__((noreturn));

    #endif /* _ASM_POWERPC_SETJMP_H */
    --- a/arch/powerpc/kernel/Makefile
    +++ b/arch/powerpc/kernel/Makefile
    @@ -5,9 +5,6 @@

    CFLAGS_ptrace.o += -DUTS_MACHINE='"$(UTS_MACHINE)"'

    -# Avoid clang warnings around longjmp/setjmp declarations
    -CFLAGS_crash.o += -ffreestanding
    -
    subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror

    ifdef CONFIG_PPC64
    --- a/arch/powerpc/xmon/Makefile
    +++ b/arch/powerpc/xmon/Makefile
    @@ -1,9 +1,6 @@
    # SPDX-License-Identifier: GPL-2.0
    # Makefile for xmon

    -# Avoid clang warnings around longjmp/setjmp declarations
    -subdir-ccflags-y := -ffreestanding
    -
    subdir-ccflags-$(CONFIG_PPC_WERROR) += -Werror

    GCOV_PROFILE := n

    \
     
     \ /
      Last update: 2020-04-16 15:39    [W:4.103 / U:1.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site