blob: a0d0d976766a68cbfa389231cce9bd1f911a0c4e [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <asm.h>
#include "sancov-stubs.h"
// See the end of dynlink.c for what this is about.
.macro sancov_stub name
.pushsection .text._dynlink_sancov_\name,"ax",%progbits
.weak __sanitizer_cov_\name
ENTRY(_dynlink_sancov_\name)
#ifdef __x86_64__
jmp *__sanitizer_cov_\name@GOTPCREL(%rip)
#elif defined(__aarch64__)
adrp x16, :got:__sanitizer_cov_\name
ldr x16, [x16, #:got_lo12:__sanitizer_cov_\name]
br x16
#else
# error unsupported architecture
#endif
END(_dynlink_sancov_\name)
.hidden _dynlink_sancov_\name
.popsection
.endm
#define SANCOV_STUB(name) sancov_stub name;
SANCOV_STUBS