[HWASan] [16k] do not instrument getauxval
To support page agnostic systems, we call getauxval before HWASan is fully set up. Bug: 315511637 Change-Id: I0b760943a23bd3a4d83bcc2182696a827dcbd446
This commit is contained in:
parent
e78370e5f8
commit
d8328a931b
1 changed files with 6 additions and 2 deletions
|
@ -37,7 +37,9 @@
|
||||||
|
|
||||||
// This function needs to be safe to call before TLS is set up, so it can't
|
// This function needs to be safe to call before TLS is set up, so it can't
|
||||||
// access errno or the stack protector.
|
// access errno or the stack protector.
|
||||||
__LIBC_HIDDEN__ unsigned long __bionic_getauxval(unsigned long type, bool* exists) {
|
// Cannot use HWASan, as this is called during setup of the HWASan runtime to
|
||||||
|
// determine the page size.
|
||||||
|
__LIBC_HIDDEN__ unsigned long __bionic_getauxval(unsigned long type, bool* exists) __attribute__((no_sanitize("hwaddress"))) {
|
||||||
for (ElfW(auxv_t)* v = __libc_shared_globals()->auxv; v->a_type != AT_NULL; ++v) {
|
for (ElfW(auxv_t)* v = __libc_shared_globals()->auxv; v->a_type != AT_NULL; ++v) {
|
||||||
if (v->a_type == type) {
|
if (v->a_type == type) {
|
||||||
*exists = true;
|
*exists = true;
|
||||||
|
@ -48,7 +50,9 @@ __LIBC_HIDDEN__ unsigned long __bionic_getauxval(unsigned long type, bool* exist
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" unsigned long getauxval(unsigned long type) {
|
// Cannot use HWASan, as this is called during setup of the HWASan runtime to
|
||||||
|
// determine the page size.
|
||||||
|
extern "C" unsigned long getauxval(unsigned long type) __attribute__((no_sanitize("hwaddress"))) {
|
||||||
bool exists;
|
bool exists;
|
||||||
unsigned long result = __bionic_getauxval(type, &exists);
|
unsigned long result = __bionic_getauxval(type, &exists);
|
||||||
if (!exists) errno = ENOENT;
|
if (!exists) errno = ENOENT;
|
||||||
|
|
Loading…
Reference in a new issue