Port address sanitizer to RISCV architecture
This change allows using ASAN on RISCV architecture. The majority of existing
tests are passing. With few exceptions (see below). Tests we run on qemu and
on "HiFive Unleashed" board.
Tests run:
Asan-riscv64-inline-Test - pass Asan-riscv64-inline-Noinst-Test - pass Asan-riscv64-calls-Noinst-Test - pass Asan-riscv64-calls-Test - pass
Lit tests:
RISCV64LinuxConfig (282 supported, few failures) RISCV64LinuxDynamicConfig (289 supported, few failures)
Lit failures:
asan_and_llvm_coverage_test.cpp - missing libclang_rt.profile-riscv64.a deep_stack_uaf.cpp - asan works, but backtrace misses some calls malloc_context_size.cpp - asan works, but backtrace misses some calls malloc_delete_mismatch.cpp - asan works, but backtrace misses some calls plugin_wrong_frame_number_bug.cpp - asan works, but backtrace misses some calls stack-trace-dlclose.cpp - asan works, but backtrace misses some calls strndup_oob_test.cpp - asan works, but backtrace misses some calls static_tls.cpp - "Can't guess glibc version" (under debugging)
These failures are under debugging currently and shall be addressed in a
subsequent commits
clang-tidy: error: unknown type name 'uptr' [clang-diagnostic-error]
not useful
clang-tidy: error: unknown type name 'u64' [clang-diagnostic-error]
not useful