Skip to content

Commit

Permalink
Merge pull request #1247 from microsoft/main
Browse files Browse the repository at this point in the history
Merge 'main' into 'release_mdd'
  • Loading branch information
gc46 authored Dec 7, 2021
2 parents b8b0eae + 6ea5929 commit d930c7a
Show file tree
Hide file tree
Showing 25 changed files with 759 additions and 116 deletions.
55 changes: 54 additions & 1 deletion .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,65 @@ jobs:
update: true
install: >-
mingw-w64-x86_64-toolchain
# As of Nov 8, 2021, mingw-w64-x86_64-toolchain-11.1.x
# causes GDB to return "During startup program exited with code 0xc0000139"
# Downgrade to working toolchain (04-May-2021)
# TODO: Remove this task when there is a newer version of toolchain than 11.1.x
- shell: msys2 {0}
name: Downgrade toolchain to 10.x
run: |
# Download GDB
DOWNLOAD_DOWNGRADED_GDB_PATH='${{ github.workspace }}/mingw-w64-x86_64-gdb-10.2-2-any.pkg.tar.zst'
DOWNLOAD_DOWNGRADED_GDB_PATH=${DOWNLOAD_DOWNGRADED_GDB_PATH//\\//}
wget -O ${DOWNLOAD_DOWNGRADED_GDB_PATH} http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gdb-10.2-2-any.pkg.tar.zst
# Download GCC
DOWNLOAD_DOWNGRADED_GCC_PATH='${{ github.workspace }}/mingw-w64-x86_64-gcc-10.3.0-8-any.pkg.tar.zst'
DOWNLOAD_DOWNGRADED_GCC_PATH=${DOWNLOAD_DOWNGRADED_GCC_PATH//\\//}
wget -O ${DOWNLOAD_DOWNGRADED_GCC_PATH} http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-10.3.0-8-any.pkg.tar.zst
# Download GCC Lib
DOWNLOAD_DOWNGRADED_GCCLIB_PATH='${{ github.workspace }}/mingw-w64-x86_64-gcc-libs-10.3.0-8-any.pkg.tar.zst'
DOWNLOAD_DOWNGRADED_GCCLIB_PATH=${DOWNLOAD_DOWNGRADED_GCCLIB_PATH//\\//}
wget -O ${DOWNLOAD_DOWNGRADED_GCCLIB_PATH} http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-libs-10.3.0-8-any.pkg.tar.zst
# Download GCC Ada
DOWNLOAD_DOWNGRADED_ADA_PATH='${{ github.workspace }}/mingw-w64-x86_64-gcc-ada-10.3.0-8-any.pkg.tar.zst'
DOWNLOAD_DOWNGRADED_ADA_PATH=${DOWNLOAD_DOWNGRADED_ADA_PATH//\\//}
wget -O ${DOWNLOAD_DOWNGRADED_ADA_PATH} http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-ada-10.3.0-8-any.pkg.tar.zst
# Download GCC Fortran
DOWNLOAD_DOWNGRADED_FORTRAN_PATH='${{ github.workspace }}/mingw-w64-x86_64-gcc-fortran-10.3.0-8-any.pkg.tar.zst'
DOWNLOAD_DOWNGRADED_FORTRAN_PATH=${DOWNLOAD_DOWNGRADED_FORTRAN_PATH//\\//}
wget -O ${DOWNLOAD_DOWNGRADED_FORTRAN_PATH} http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-fortran-10.3.0-8-any.pkg.tar.zst
# Download GCC Libfortran
DOWNLOAD_DOWNGRADED_LIBFORTRAN_PATH='${{ github.workspace }}/mingw-w64-x86_64-gcc-libgfortran-10.3.0-8-any.pkg.tar.zst'
DOWNLOAD_DOWNGRADED_LIBFORTRAN_PATH=${DOWNLOAD_DOWNGRADED_LIBFORTRAN_PATH//\\//}
wget -O ${DOWNLOAD_DOWNGRADED_LIBFORTRAN_PATH} http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-libgfortran-10.3.0-8-any.pkg.tar.zst
# Download GCC Obj-C
DOWNLOAD_DOWNGRADED_OBJC_PATH='${{ github.workspace }}/mingw-w64-x86_64-gcc-objc-10.3.0-8-any.pkg.tar.zst'
DOWNLOAD_DOWNGRADED_OBJC_PATH=${DOWNLOAD_DOWNGRADED_OBJC_PATH//\\//}
wget -O ${DOWNLOAD_DOWNGRADED_OBJC_PATH} http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-objc-10.3.0-8-any.pkg.tar.zst
# Download GCC libgccjit
DOWNLOAD_DOWNGRADED_LIBGCCJIT_PATH='${{ github.workspace }}/mingw-w64-x86_64-libgccjit-10.3.0-8-any.pkg.tar.zst'
DOWNLOAD_DOWNGRADED_LIBGCCJIT_PATH=${DOWNLOAD_DOWNGRADED_LIBGCCJIT_PATH//\\//}
wget -O ${DOWNLOAD_DOWNGRADED_LIBGCCJIT_PATH} http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libgccjit-10.3.0-8-any.pkg.tar.zst
# Install
pacman -U --noconfirm $DOWNLOAD_DOWNGRADED_GDB_PATH $DOWNLOAD_DOWNGRADED_GCC_PATH $DOWNLOAD_DOWNGRADED_GCCLIB_PATH $DOWNLOAD_DOWNGRADED_ADA_PATH $DOWNLOAD_DOWNGRADED_FORTRAN_PATH $DOWNLOAD_DOWNGRADED_LIBFORTRAN_PATH $DOWNLOAD_DOWNGRADED_OBJC_PATH $DOWNLOAD_DOWNGRADED_LIBGCCJIT_PATH
- shell: msys2 {0}
name: Gather c++ toolchain paths
run: |
cygpath -w $(which g++)
cygpath -w $(which g++)
g++ --version
cygpath -w $(which gdb)
gdb --version
- run: >
Expand Down
20 changes: 19 additions & 1 deletion loc/lcl/CHS/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/CHT/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/CSY/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/DEU/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/ESN/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/FRA/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/ITA/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/JPN/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/KOR/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/PLK/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/PTB/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/RUS/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

20 changes: 19 additions & 1 deletion loc/lcl/TRK/Microsoft.SSHDebugPS.dll.lcl

Large diffs are not rendered by default.

57 changes: 57 additions & 0 deletions src/MICore/CommandFactories/gdb.cs
Original file line number Diff line number Diff line change
Expand Up @@ -295,5 +295,62 @@ public override async Task<string[]> AutoComplete(string command, int threadId,

return matchlist?.AsStrings;
}

public override IEnumerable<Guid> GetSupportedExceptionCategories()
{
const string CppExceptionCategoryString = "{3A12D0B7-C26C-11D0-B442-00A0244A1DD2}";
return new Guid[] { new Guid(CppExceptionCategoryString) };
}

public override async Task<IEnumerable<ulong>> SetExceptionBreakpoints(Guid exceptionCategory, IEnumerable<string> exceptionNames, ExceptionBreakpointStates exceptionBreakpointStates)
{
string command;
Results result;
List<ulong> breakpointNumbers = new List<ulong>();

if (exceptionNames == null) // set breakpoint for all exceptions in exceptionCategory
{
command = "-catch-throw";
result = await _debugger.CmdAsync(command, ResultClass.None);
switch (result.ResultClass)
{
case ResultClass.done:
var breakpointNumber = result.Find("bkpt").FindUint("number");
breakpointNumbers.Add(breakpointNumber);
break;
case ResultClass.error:
default:
throw new NotSupportedException();
}
}
else // set breakpoint for each exceptionName in exceptionNames
{
command = "-catch-throw -r \\b";
foreach (string exceptionName in exceptionNames)
{
result = await _debugger.CmdAsync(command + exceptionName + "\\b", ResultClass.None);
switch (result.ResultClass)
{
case ResultClass.done:
var breakpointNumber = result.Find("bkpt").FindUint("number");
breakpointNumbers.Add(breakpointNumber);
break;
case ResultClass.error:
default:
throw new NotSupportedException();
}
}
}

return breakpointNumbers;
}

public override async Task RemoveExceptionBreakpoint(Guid exceptionCategory, IEnumerable<ulong> exceptionBreakpoints)
{
foreach (ulong breakpointNumber in exceptionBreakpoints)
{
await BreakDelete(breakpointNumber.ToString(CultureInfo.InvariantCulture));
}
}
}
}
6 changes: 5 additions & 1 deletion src/MIDebugEngine/Engine.Impl/DebuggedProcess.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1189,6 +1189,10 @@ private async Task HandleBreakModeEvent(ResultEventArgs results, BreakRequest br
bplist.AddRange(bkpt);
_callback.OnBreakpoint(thread, bplist.AsReadOnly());
}
else if (ExceptionManager.TryGetExceptionBreakpoint(bkptno, out string exceptionName, out Guid exceptionCategoryGuid)) // exception breakpoint hit
{
_callback.OnException(thread, exceptionName, "", 0, exceptionCategoryGuid, ExceptionBreakpointStates.BreakThrown);
}
else if (!this.EntrypointHit)
{
this.EntrypointHit = true;
Expand Down Expand Up @@ -1255,7 +1259,7 @@ private async Task HandleBreakModeEvent(ResultEventArgs results, BreakRequest br
if (!string.IsNullOrEmpty(resultVar))
{
ReturnValue = new VariableInformation("$ReturnValue", resultVar, cxt, Engine, (AD7Thread)thread.Client, isParameter: false);
await ReturnValue.Eval();
await ReturnValue.Eval(radix: 0);
}
_callback.OnStepComplete(thread);
}
Expand Down
Loading

0 comments on commit d930c7a

Please sign in to comment.