@@ -248,7 +248,6 @@ void RegisterContextUnwind::InitializeZerothFrame() {
248
248
active_row =
249
249
m_full_unwind_plan_sp->GetRowForFunctionOffset (m_current_offset);
250
250
row_register_kind = m_full_unwind_plan_sp->GetRegisterKind ();
251
- PropagateTrapHandlerFlagFromUnwindPlan (m_full_unwind_plan_sp);
252
251
if (active_row && log) {
253
252
StreamString active_row_strm;
254
253
active_row->Dump (active_row_strm, m_full_unwind_plan_sp.get (), &m_thread,
@@ -1376,7 +1375,6 @@ RegisterContextUnwind::SavedLocationForRegister(
1376
1375
}
1377
1376
}
1378
1377
1379
- // Check if the active_row has a register location listed.
1380
1378
if (regnum.IsValid () && active_row &&
1381
1379
active_row->GetRegisterInfo (regnum.GetAsKind (unwindplan_registerkind),
1382
1380
unwindplan_regloc)) {
@@ -1390,10 +1388,11 @@ RegisterContextUnwind::SavedLocationForRegister(
1390
1388
// This is frame 0 and we're retrieving the PC and it's saved in a Return
1391
1389
// Address register and it hasn't been saved anywhere yet -- that is,
1392
1390
// it's still live in the actual register. Handle this specially.
1391
+
1393
1392
if (!have_unwindplan_regloc && return_address_reg.IsValid () &&
1394
- return_address_reg. GetAsKind (eRegisterKindLLDB) !=
1395
- LLDB_INVALID_REGNUM) {
1396
- if ( IsFrameZero () ) {
1393
+ IsFrameZero ()) {
1394
+ if (return_address_reg. GetAsKind (eRegisterKindLLDB) !=
1395
+ LLDB_INVALID_REGNUM ) {
1397
1396
lldb_private::UnwindLLDB::ConcreteRegisterLocation new_regloc;
1398
1397
new_regloc.type = UnwindLLDB::ConcreteRegisterLocation::
1399
1398
eRegisterInLiveRegisterContext;
@@ -1407,17 +1406,6 @@ RegisterContextUnwind::SavedLocationForRegister(
1407
1406
return_address_reg.GetAsKind (eRegisterKindLLDB),
1408
1407
return_address_reg.GetAsKind (eRegisterKindLLDB));
1409
1408
return UnwindLLDB::RegisterSearchResult::eRegisterFound;
1410
- } else if (BehavesLikeZerothFrame ()) {
1411
- // This function was interrupted asynchronously -- it faulted,
1412
- // an async interrupt, a timer fired, a debugger expression etc.
1413
- // The caller's pc is in the Return Address register, but the
1414
- // UnwindPlan for this function may have no location rule for
1415
- // the RA reg.
1416
- // This means that the caller's return address is in the RA reg
1417
- // when the function was interrupted--descend down one stack frame
1418
- // to retrieve it from the trap handler's saved context.
1419
- unwindplan_regloc.SetSame ();
1420
- have_unwindplan_regloc = true ;
1421
1409
}
1422
1410
}
1423
1411
@@ -1934,7 +1922,6 @@ void RegisterContextUnwind::PropagateTrapHandlerFlagFromUnwindPlan(
1934
1922
}
1935
1923
1936
1924
m_frame_type = eTrapHandlerFrame;
1937
- UnwindLogMsg (" This frame is marked as a trap handler via its UnwindPlan" );
1938
1925
1939
1926
if (m_current_offset_backed_up_one != m_current_offset) {
1940
1927
// We backed up the pc by 1 to compute the symbol context, but
0 commit comments