NativeThreadLinux: remove translation of some Linux signals to gdb signals.

I copied this originally based on what debugserver was doing.  This appears to
be incorrect and unncessary for Linux.  The LinuxSignals on the lldb side
don't look for these and therefore they get handled incorrectly.

Leaving the hook in place since I think darwin will continue to need to
translate those signal numbers.

llvm-svn: 216564
This commit is contained in:
Todd Fiala 2014-08-27 17:11:56 +00:00
parent 0611d01419
commit 22972a7c59
1 changed files with 14 additions and 26 deletions

View File

@ -96,7 +96,6 @@ NativeThreadLinux::GetStopReason (ThreadStopInfo &stop_info)
case eStateRunning:
case eStateStepping:
case eStateDetached:
default:
if (log)
{
log->Printf ("NativeThreadLinux::%s tid %" PRIu64 " in state %s cannot answer stop reason",
@ -324,39 +323,28 @@ NativeThreadLinux::MaybeLogStateChange (lldb::StateType new_state)
log->Printf ("NativeThreadLinux: thread (pid=%" PRIu64 ", tid=%" PRIu64 ") changing from state %s to %s", pid, GetID (), StateAsCString (old_state), StateAsCString (new_state));
}
static
uint32_t MaybeTranslateHostSignoToGdbSigno (uint32_t host_signo)
{
switch (host_signo)
{
case SIGSEGV: return eGdbSignalBadAccess;
case SIGILL: return eGdbSignalBadInstruction;
case SIGFPE: return eGdbSignalArithmetic;
// NOTE: debugserver sends SIGTRAP through unmodified. Do the same here.
// case SIGTRAP: return eGdbSignalBreakpoint;
// Nothing for eGdbSignalSoftware (0x95).
// Nothing for eGdbSignalEmulation (0x94).
default:
// No translations.
return host_signo;
}
}
uint32_t
NativeThreadLinux::TranslateStopInfoToGdbSignal (const ThreadStopInfo &stop_info) const
{
switch (stop_info.reason)
{
case eStopReasonSignal:
return MaybeTranslateHostSignoToGdbSigno (stop_info.details.signal.signo);
break;
// No translation.
return stop_info.details.signal.signo;
case eStopReasonException:
// FIXME verify how we handle exception type.
return MaybeTranslateHostSignoToGdbSigno (static_cast<uint32_t> (stop_info.details.exception.type));
break;
{
Log *log (GetLogIfAllCategoriesSet (LIBLLDB_LOG_THREAD));
// FIXME I think the eStopReasonException is a xnu/Mach exception, which we
// shouldn't see on Linux.
// No translation.
if (log)
log->Printf ("NativeThreadLinux::%s saw an exception stop type (signo %"
PRIu64 "), not expecting to see exceptions on Linux",
__FUNCTION__,
stop_info.details.exception.type);
return static_cast<uint32_t> (stop_info.details.exception.type);
}
default:
assert (0 && "unexpected stop_info.reason found");