| From | Andrey Ryabinin <> | Subject | [PATCH v5 02/12] kasan: Add support for upcoming GCC 5.0 asan ABI changes | Date | Mon, 27 Oct 2014 19:46:49 +0300 |
| |
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
|