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'
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)
endif
endif

View File

@ -32,9 +32,9 @@ Example::
- If the program is tested using cmdline, you may need to execute the
"stty echo" command when an error occurs.
ASan is aware of DPDK memory allocations, thanks to added instrumentation.
This is enabled on x86_64 and arm64 at the moment.
Other architectures may have to define ASAN_SHADOW_OFFSET.
ASan is aware of DPDK memory allocations, thanks to added instrumentation, and
is enabled on all 64 bit architectures for Linux. Other architectures may have
to define ASAN_SHADOW_OFFSET.
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
#elif defined(RTE_ARCH_ARM64)
#define ASAN_SHADOW_OFFSET 0x001000000000
#elif defined(RTE_ARCH_PPC_64)
#define ASAN_SHADOW_OFFSET 0x020000000000
#endif
#define ASAN_SHADOW_GRAIN_SIZE 8