[all-commits] [llvm/llvm-project] 24f510: [Support] On Windows, ensure abort() can be catche...

Alexandre Ganea via All-commits all-commits at lists.llvm.org
Thu Sep 24 05:22:07 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 24f510570fedf2ac6ea421478c7500d777c8c3c6
      https://github.com/llvm/llvm-project/commit/24f510570fedf2ac6ea421478c7500d777c8c3c6
  Author: Alexandre Ganea <alexandre.ganea at ubisoft.com>
  Date:   2020-09-24 (Thu, 24 Sep 2020)

  Changed paths:
    M llvm/include/llvm/Support/CrashRecoveryContext.h
    M llvm/lib/Support/CrashRecoveryContext.cpp
    M llvm/unittests/Support/CrashRecoveryTest.cpp

  Log Message:
  -----------
  [Support] On Windows, ensure abort() can be catched several times in a row with CrashRecoveryContext

Before this patch, the CrashRecoveryContext would only catch the first abort(). Any further calls to abort() inside subsquent CrashRecoveryContexts would not be catched. This is because the Windows CRT removes the abort() handler before calling it.

This is part of https://reviews.llvm.org/D70378


  Commit: b3418cb4eb1456c41606f4621dcfa362fe54183c
      https://github.com/llvm/llvm-project/commit/b3418cb4eb1456c41606f4621dcfa362fe54183c
  Author: Zachary Turner <zturner at roblox.com>
  Date:   2020-09-24 (Thu, 24 Sep 2020)

  Changed paths:
    M llvm/utils/lit/lit/llvm/config.py

  Log Message:
  -----------
  [lit] Support running tests on Windows without GnuWin32

Historically, we have told contributors that GnuWin32 is a pre-requisite
because our tests depend on utilities such as sed, grep, diff, and more.
However, Git on Windows includes versions of these utilities in its
installation.  Furthermore, GnuWin32 has not been updated in many years.
For these reasons, it makes sense to have the ability to run llvm tests
in a way that is both:
  a) Easier on the user (less stuff to install)
  b) More up-to-date (The verions that ship with git are at least as
     new, if not newer, than the versions in GnuWin32.

We add support for this here by attempting to detect where Git is
installed using the Windows registry, confirming the existence of
several common Unix tools, and then adding this location to lit's PATH
environment.

Differential Revision: https://reviews.llvm.org/D84380


  Commit: f5314d15af4f4514103ea12c74cb208538b8bef5
      https://github.com/llvm/llvm-project/commit/f5314d15af4f4514103ea12c74cb208538b8bef5
  Author: Alexandre Ganea <alexandre.ganea at ubisoft.com>
  Date:   2020-09-24 (Thu, 24 Sep 2020)

  Changed paths:
    M clang/tools/driver/driver.cpp
    M llvm/include/llvm/Support/Signals.h
    M llvm/lib/Support/CrashRecoveryContext.cpp
    M llvm/lib/Support/Unix/Signals.inc
    M llvm/lib/Support/Windows/Signals.inc
    M llvm/unittests/Support/CrashRecoveryTest.cpp

  Log Message:
  -----------
  [Support] On Unix, let the CrashRecoveryContext return the signal code

Before this patch, the CrashRecoveryContext was returning -2 upon a signal, like ExecuteAndWait does. This didn't match the behavior on Windows, where the the exception code was returned.

We now return the signal's code, which optionally allows for re-throwing the signal later. Doing so requires all custom handlers to be removed first, through llvm::sys::unregisterHandlers() which we made a public API.

This is part of https://reviews.llvm.org/D70378


Compare: https://github.com/llvm/llvm-project/compare/4da6927de470...f5314d15af4f


More information about the All-commits mailing list