lkml.org 
[lkml]   [2019]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v2 09/14] powerpc: prefer __section and __printf from compiler_attributes.h
    From
    GCC unescapes escaped string section names while Clang does not. Because
    __section uses the `#` stringification operator for the section name, it
    doesn't need to be escaped.

    Instead, we should:
    1. Prefer __section(.section_name_no_quotes).
    2. Only use __attribute__((__section(".section"))) when creating the
    section name via C preprocessor (see the definition of __define_initcall
    in arch/um/include/shared/init.h).

    This antipattern was found with:
    $ grep -e __section\(\" -e __section__\(\" -r

    See the discussions in:
    Link: https://bugs.llvm.org/show_bug.cgi?id=42950
    Link: https://marc.info/?l=linux-netdev&m=156412960619946&w=2
    Reported-by: Sedat Dilek <sedat.dilek@gmail.com>
    Suggested-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    ---
    arch/powerpc/boot/main.c | 3 +--
    arch/powerpc/boot/ps3.c | 6 ++----
    arch/powerpc/include/asm/cache.h | 2 +-
    arch/powerpc/kernel/btext.c | 2 +-
    4 files changed, 5 insertions(+), 8 deletions(-)

    diff --git a/arch/powerpc/boot/main.c b/arch/powerpc/boot/main.c
    index 102cc546444d..3ccc84e06fc4 100644
    --- a/arch/powerpc/boot/main.c
    +++ b/arch/powerpc/boot/main.c
    @@ -150,8 +150,7 @@ static struct addr_range prep_initrd(struct addr_range vmlinux, void *chosen,
    * edit the command line passed to vmlinux (by setting /chosen/bootargs).
    * The buffer is put in it's own section so that tools may locate it easier.
    */
    -static char cmdline[BOOT_COMMAND_LINE_SIZE]
    - __attribute__((__section__("__builtin_cmdline")));
    +static char cmdline[BOOT_COMMAND_LINE_SIZE] __section(__builtin_cmdline);

    static void prep_cmdline(void *chosen)
    {
    diff --git a/arch/powerpc/boot/ps3.c b/arch/powerpc/boot/ps3.c
    index c52552a681c5..70b2ed82d2de 100644
    --- a/arch/powerpc/boot/ps3.c
    +++ b/arch/powerpc/boot/ps3.c
    @@ -24,8 +24,7 @@ extern int lv1_get_repository_node_value(u64 in_1, u64 in_2, u64 in_3,
    #ifdef DEBUG
    #define DBG(fmt...) printf(fmt)
    #else
    -static inline int __attribute__ ((format (printf, 1, 2))) DBG(
    - const char *fmt, ...) {return 0;}
    +static inline int __printf(1, 2) DBG(const char *fmt, ...) { return 0; }
    #endif

    BSS_STACK(4096);
    @@ -35,8 +34,7 @@ BSS_STACK(4096);
    * The buffer is put in it's own section so that tools may locate it easier.
    */

    -static char cmdline[BOOT_COMMAND_LINE_SIZE]
    - __attribute__((__section__("__builtin_cmdline")));
    +static char cmdline[BOOT_COMMAND_LINE_SIZE] __section(__builtin_cmdline);

    static void prep_cmdline(void *chosen)
    {
    diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h
    index 45e3137ccd71..9114495855eb 100644
    --- a/arch/powerpc/include/asm/cache.h
    +++ b/arch/powerpc/include/asm/cache.h
    @@ -91,7 +91,7 @@ static inline u32 l1_cache_bytes(void)
    isync

    #else
    -#define __read_mostly __attribute__((__section__(".data..read_mostly")))
    +#define __read_mostly __section(.data..read_mostly)

    #ifdef CONFIG_PPC_BOOK3S_32
    extern long _get_L2CR(void);
    diff --git a/arch/powerpc/kernel/btext.c b/arch/powerpc/kernel/btext.c
    index 6dfceaa820e4..f57712a55815 100644
    --- a/arch/powerpc/kernel/btext.c
    +++ b/arch/powerpc/kernel/btext.c
    @@ -26,7 +26,7 @@
    static void scrollscreen(void);
    #endif

    -#define __force_data __attribute__((__section__(".data")))
    +#define __force_data __section(.data)

    static int g_loc_X __force_data;
    static int g_loc_Y __force_data;
    --
    2.23.0.187.g17f5b7556c-goog
    \
     
     \ /
      Last update: 2019-08-27 22:41    [W:4.109 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site