lkml.org 
[lkml]   [2014]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 02/12] kasan: Add support for upcoming GCC 5.0 asan ABI changes
    Date
    GCC 5.0 will have some changes in asan ABI.
    New function (__asan_load*_noabort()/__asan_store*_noabort)
    will be introduced.
    By default, for -fsanitize=kernel-address GCC 5.0 will
    generate __asan_load*_noabort() functions instead of __asan_load*()

    Details in this thread: https://gcc.gnu.org/ml/gcc-patches/2014-10/msg02510.html

    We still need __asan_load*() for GCC 4.9.2, so this patch just adds aliases.

    Note: Patch for GCC hasn't been upstreamed yet.
    I'm adding this patch in advance, to avoid breaking KASan
    in future GCC update.

    Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com>
    ---
    mm/kasan/kasan.c | 38 ++++++++++++++++++++++++++++++++++++++
    1 file changed, 38 insertions(+)

    diff --git a/mm/kasan/kasan.c b/mm/kasan/kasan.c
    index 8ce738e..11fa3f8 100644
    --- a/mm/kasan/kasan.c
    +++ b/mm/kasan/kasan.c
    @@ -334,3 +334,41 @@ EXPORT_SYMBOL(__asan_storeN);
    /* to shut up compiler complaints */
    void __asan_handle_no_return(void) {}
    EXPORT_SYMBOL(__asan_handle_no_return);
    +
    +
    +/* GCC 5.0 has different function names by default */
    +void __asan_load1_noabort(unsigned long) __attribute__((alias("__asan_load1")));
    +EXPORT_SYMBOL(__asan_load1_noabort);
    +
    +void __asan_load2_noabort(unsigned long) __attribute__((alias("__asan_load2")));
    +EXPORT_SYMBOL(__asan_load2_noabort);
    +
    +void __asan_load4_noabort(unsigned long) __attribute__((alias("__asan_load4")));
    +EXPORT_SYMBOL(__asan_load4_noabort);
    +
    +void __asan_load8_noabort(unsigned long) __attribute__((alias("__asan_load8")));
    +EXPORT_SYMBOL(__asan_load8_noabort);
    +
    +void __asan_load16_noabort(unsigned long) __attribute__((alias("__asan_load16")));
    +EXPORT_SYMBOL(__asan_load16_noabort);
    +
    +void __asan_loadN_noabort(unsigned long) __attribute__((alias("__asan_loadN")));
    +EXPORT_SYMBOL(__asan_loadN_noabort);
    +
    +void __asan_store1_noabort(unsigned long) __attribute__((alias("__asan_store1")));
    +EXPORT_SYMBOL(__asan_store1_noabort);
    +
    +void __asan_store2_noabort(unsigned long) __attribute__((alias("__asan_store2")));
    +EXPORT_SYMBOL(__asan_store2_noabort);
    +
    +void __asan_store4_noabort(unsigned long) __attribute__((alias("__asan_store4")));
    +EXPORT_SYMBOL(__asan_store4_noabort);
    +
    +void __asan_store8_noabort(unsigned long) __attribute__((alias("__asan_store8")));
    +EXPORT_SYMBOL(__asan_store8_noabort);
    +
    +void __asan_store16_noabort(unsigned long) __attribute__((alias("__asan_store16")));
    +EXPORT_SYMBOL(__asan_store16_noabort);
    +
    +void __asan_storeN_noabort(unsigned long) __attribute__((alias("__asan_storeN")));
    +EXPORT_SYMBOL(__asan_storeN_noabort);
    --
    2.1.2


    \
     
     \ /
      Last update: 2014-10-27 18:21    [W:3.127 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site