summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/ubsan/ubsan_diag.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt/lib/ubsan/ubsan_diag.cc')
-rw-r--r--compiler-rt/lib/ubsan/ubsan_diag.cc8
1 files changed, 3 insertions, 5 deletions
diff --git a/compiler-rt/lib/ubsan/ubsan_diag.cc b/compiler-rt/lib/ubsan/ubsan_diag.cc
index 517ce6b68b3..a726f4b55d9 100644
--- a/compiler-rt/lib/ubsan/ubsan_diag.cc
+++ b/compiler-rt/lib/ubsan/ubsan_diag.cc
@@ -24,13 +24,11 @@ Location __ubsan::getCallerLocation(uptr CallerLoc) {
if (!CallerLoc)
return Location();
- // Adjust to find the call instruction.
- // FIXME: This is not portable.
- --CallerLoc;
+ uptr Loc = StackTrace::GetPreviousInstructionPc(CallerLoc);
AddressInfo Info;
- if (!SymbolizeCode(CallerLoc, &Info, 1) || !Info.module || !*Info.module)
- return Location(CallerLoc);
+ if (!SymbolizeCode(Loc, &Info, 1) || !Info.module || !*Info.module)
+ return Location(Loc);
if (!Info.function)
return ModuleLocation(Info.module, Info.module_offset);
OpenPOWER on IntegriCloud