[all-commits] [llvm/llvm-project] 55abde: [libunwind] Increase the external value of _LIBUNW...

Martin Storsjö via All-commits all-commits at lists.llvm.org
Mon Apr 10 14:03:48 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 55abdef3dac681866503ab286c3be6b4e8be3a9a
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-04-11 (Tue, 11 Apr 2023)

  Changed paths:
    M libunwind/include/__libunwind_config.h

  Log Message:
  [libunwind] Increase the external value of _LIBUNWIND_CURSOR_SIZE for SEH/x86_64

For x86_64 Windows targets (that use SEH), _LIBUNWIND_CURSOR_SIZE
is 204; this fixes corruption in test cases that include libunwind.h
without manually defining _LIBUNWIND_IS_NATIVE_ONLY.

If the libunwind.h header is included without defining
_LIBUNWIND_IS_NATIVE_ONLY (like in the libunwind test cases), the
sizes are set to accommodate the maximum possible cursors and

(Alternatively, __libunwind_config.h should be changed to default
to native unwinding unless cross unwinding has been requested.
Cross unwinding isn't implemented as far as I know anyway.)

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

  Commit: 87ca04033c1bf79f4de964505dd8818cbbc2bdf4
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-04-11 (Tue, 11 Apr 2023)

  Changed paths:
    M libunwind/src/UnwindCursor.hpp

  Log Message:
  [libunwind] [SEH] Sync LSDA and handler between unw_proc_info_t and DISPATCHER_CONTEXT

For normal C++ unwinding, we get _dispContext initialized by the
prepopulated DISPATCHER_CONTEXT in _GCC_specific_handler, which
we set with __unw_seh_set_disp_ctx.

When doing force unwinding, we step and populate the unw_proc_info_t
struct _info with getInfoFromSEH, but when we execute the handler
via the __libunwind_seh_personality wrapper function, we execute
the handler set in DISPATCHER_CONTEXT.

Whenever updating these fields in either _info or _dispContext,
sync them to the other one too.

This fixes one aspect of the libcxxabi force_unwind*.pass.cpp tests on

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

  Commit: 66632e8798148b351ba2971a0a380a47352afc8d
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-04-11 (Tue, 11 Apr 2023)

  Changed paths:
    M libunwind/src/Unwind-seh.cpp

  Log Message:
  [libunwind] [SEH] Handle ExceptionContinueExecution in forced unwinding

This fixes the libcxxabi test force_unwind3.pass.cpp when run on native

When unwinding past the main thread function into the system functions
that brought up the thread, we can hit functions whose personality
functions return ExceptionContinueExecution (instead of the regular
ExceptionContinueSearch). Interpret this as a signal to stop the

Curiously, in this case, it does return ExceptionContinueSearch if
running within a debugger.

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

  Commit: 11ed806e7fdb1df74bba727165e68d675bbaa5e1
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-04-11 (Tue, 11 Apr 2023)

  Changed paths:
    M libunwind/test/signal_frame.pass.cpp

  Log Message:
  [libunwind] [test] Mark the signal_frame test as unsupported on Windows

Mark it as unsupported on x86_64, arm and aarch64. On i686, DWARF
is used as the default unwinding format, and there, the CFI
directives are supported.

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

  Commit: 7f00b2aa75f0f090c37bf9d5ccb55fca15c35538
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-04-11 (Tue, 11 Apr 2023)

  Changed paths:
    M libcxxabi/test/thread_local_destruction_order.pass.cpp

  Log Message:
  [libcxxabi] [test] Mark thread_local_destruction_order.pass.cpp unsupported for mingw targets

With current versions of mingw-w64, TLS destructors that are registered
while executing TLS destructors are lost and leaked.

The root cause does get fixed further upstream in mingw-w64 in
though, but mark the test as unsupported for now. The marking can be
removed later when the version used in the CI runner has been updated
to include the fix.

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

  Commit: dd75c50934c29afc861cfef2471592cd342a16a5
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-04-11 (Tue, 11 Apr 2023)

  Changed paths:
    M compiler-rt/lib/builtins/CMakeLists.txt

  Log Message:
  [compiler-rt] [builtins] Don't use assembly floatundi*f on x86_64 mingw

The x86 assembly is entirely skipped for MSVC build configurations,
since the assembly uses GAS syntax (which MSVC proper can't
assemble, but clang-cl can). But for mingw configurations, the
assembly is used.

On x86_64 Windows, the general calling convention is entirely different
than on other platforms (passing arguments in different registers),
so we can't use this assembly for mingw targets (unless adapted to
handle that calling convention). Thus skip these few assembly routines
for Windows targets. (For i386, we can keep using the assembly

This fixes the builtins tests that test these routines. They aren't
used in practice though, as LLVM expands code inline for doing such
conversions anyway.

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

  Commit: 2ce71b2c18301ce14e113f42af00982ac7002ed5
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-04-11 (Tue, 11 Apr 2023)

  Changed paths:
    M compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-arithmetic-value-change.c
    M compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-conversion-incdec.c
    M compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-conversion.c
    M compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-incdec.c
    M compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change.c
    M compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-truncation.c
    M compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-incdec.c
    M compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation.c
    M compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation.c
    M compiler-rt/test/ubsan/TestCases/Pointer/align-assume-attribute-align_value-on-lvalue.cpp
    M compiler-rt/test/ubsan/TestCases/Pointer/align-assume-attribute-align_value-on-paramvar.cpp
    M compiler-rt/test/ubsan/TestCases/Pointer/align-assume-attribute-alloc_align-on-function-variable.cpp
    M compiler-rt/test/ubsan/TestCases/Pointer/align-assume-attribute-alloc_align-on-function.cpp
    M compiler-rt/test/ubsan/TestCases/Pointer/align-assume-attribute-assume_aligned-on-function-two-params.cpp
    M compiler-rt/test/ubsan/TestCases/Pointer/align-assume-attribute-assume_aligned-on-function.cpp
    M compiler-rt/test/ubsan/TestCases/Pointer/align-assume-builtin_assume_aligned-three-params-variable.cpp
    M compiler-rt/test/ubsan/TestCases/Pointer/align-assume-builtin_assume_aligned-three-params.cpp
    M compiler-rt/test/ubsan/TestCases/Pointer/align-assume-builtin_assume_aligned-two-params.cpp
    M compiler-rt/test/ubsan/TestCases/Pointer/align-assume-openmp.cpp
    M compiler-rt/test/ubsan/TestCases/Pointer/nullptr-and-nonzero-offset-variable.cpp

  Log Message:
  [compiler-rt] [test] Use %clangxx for tests that use -x c++

When instrumenting C++ code, ubsan ends up referencing
the ubsan_type_hash_* object files, which require linking against
the C++ ABI library. When building with "clang -x c++", the code
is handled as C++, but the compiler still only links as if it was

Change all cases of "%clang -x c++" into "%clangxx -x c++".

This fixes a lot of ubsan tests in mingw mode.

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

  Commit: 758318bee351282b3bb244cc4067eb876e86b156
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-04-11 (Tue, 11 Apr 2023)

  Changed paths:
    M compiler-rt/test/ubsan/TestCases/Pointer/align-assume-ignorelist.cpp

  Log Message:
  [compiler-rt] [test] [ubsan] Build .cpp files with %clangxx

This fixes linker errors in mingw configurations, where the ubsan
runtime needs the C++ standard library when instrumenting C++ code.

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

  Commit: 25350a7362502b5ce84e9eab00501780b77f2eb9
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-04-11 (Tue, 11 Apr 2023)

  Changed paths:
    M compiler-rt/test/builtins/Unit/divmodti4_test.c
    M compiler-rt/test/builtins/Unit/fixunstfdi_test.c
    M compiler-rt/test/builtins/Unit/multc3_test.c

  Log Message:
  [compiler-rt] [test] Generalize the triple regex for windows XFAILs

Don't hardcode the vendor field in the triples to "pc"; for mingw
environments the triple is often "<arch>-w64-windows-gnu".

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

Compare: https://github.com/llvm/llvm-project/compare/469bdbd62ce2...25350a736250

More information about the All-commits mailing list