eal/ppc: support ASan

Add support for Address Sanitizer (ASan) for PPC/POWER architecture.

Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
This commit is contained in:
David Christensen 2021-11-15 13:38:47 -08:00 committed by David Marchand
parent fc812a2140
commit f2a66612ee
3 changed files with 6 additions and 4 deletions

View File

@ -433,7 +433,7 @@ if get_option('b_sanitize') == 'address' or get_option('b_sanitize') == 'address
dpdk_extra_ldflags += '-lasan' dpdk_extra_ldflags += '-lasan'
endif endif
if is_linux and arch_subdir in ['x86', 'arm'] and dpdk_conf.get('RTE_ARCH_64') if is_linux and dpdk_conf.get('RTE_ARCH_64')
dpdk_conf.set10('RTE_MALLOC_ASAN', true) dpdk_conf.set10('RTE_MALLOC_ASAN', true)
endif endif
endif endif

View File

@ -32,9 +32,9 @@ Example::
- If the program is tested using cmdline, you may need to execute the - If the program is tested using cmdline, you may need to execute the
"stty echo" command when an error occurs. "stty echo" command when an error occurs.
ASan is aware of DPDK memory allocations, thanks to added instrumentation. ASan is aware of DPDK memory allocations, thanks to added instrumentation, and
This is enabled on x86_64 and arm64 at the moment. is enabled on all 64 bit architectures for Linux. Other architectures may have
Other architectures may have to define ASAN_SHADOW_OFFSET. to define ASAN_SHADOW_OFFSET.
Example heap-buffer-overflow error Example heap-buffer-overflow error
---------------------------------- ----------------------------------

View File

@ -112,6 +112,8 @@ malloc_elem_cookies_ok(const struct malloc_elem *elem)
#define ASAN_SHADOW_OFFSET 0x00007fff8000 #define ASAN_SHADOW_OFFSET 0x00007fff8000
#elif defined(RTE_ARCH_ARM64) #elif defined(RTE_ARCH_ARM64)
#define ASAN_SHADOW_OFFSET 0x001000000000 #define ASAN_SHADOW_OFFSET 0x001000000000
#elif defined(RTE_ARCH_PPC_64)
#define ASAN_SHADOW_OFFSET 0x020000000000
#endif #endif
#define ASAN_SHADOW_GRAIN_SIZE 8 #define ASAN_SHADOW_GRAIN_SIZE 8