aboutsummaryrefslogtreecommitdiff
path: root/libsanitizer/sanitizer_common/sanitizer_internal_defs.h
diff options
context:
space:
mode:
Diffstat (limited to 'libsanitizer/sanitizer_common/sanitizer_internal_defs.h')
-rw-r--r--libsanitizer/sanitizer_common/sanitizer_internal_defs.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/libsanitizer/sanitizer_common/sanitizer_internal_defs.h b/libsanitizer/sanitizer_common/sanitizer_internal_defs.h
index b9c9066..676ade1 100644
--- a/libsanitizer/sanitizer_common/sanitizer_internal_defs.h
+++ b/libsanitizer/sanitizer_common/sanitizer_internal_defs.h
@@ -287,7 +287,12 @@ void NORETURN CheckFailed(const char *file, int line, const char *cond,
enum LinkerInitialized { LINKER_INITIALIZED = 0 };
#if !defined(_MSC_VER) || defined(__clang__)
-# define GET_CALLER_PC() (uptr)__builtin_return_address(0)
+# if SANITIZER_S390_31
+# define GET_CALLER_PC() \
+ (uptr)__builtin_extract_return_addr(__builtin_return_address(0))
+# else
+# define GET_CALLER_PC() (uptr)__builtin_return_address(0)
+# endif
# define GET_CURRENT_FRAME() (uptr)__builtin_frame_address(0)
inline void Trap() {
__builtin_trap();