diff options
Diffstat (limited to 'compiler-rt/lib/ubsan/ubsan_diag.cc')
| -rw-r--r-- | compiler-rt/lib/ubsan/ubsan_diag.cc | 8 |
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); |

