[all-commits] [llvm/llvm-project] 2d6906: Recommit DwarfEHPrepare: insert extra unwind paths...
Tim Northover via All-commits
all-commits at lists.llvm.org
Thu Mar 16 06:43:30 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 2d690684f66fabc9ac6a2c70fcff3b31c9520794
https://github.com/llvm/llvm-project/commit/2d690684f66fabc9ac6a2c70fcff3b31c9520794
Author: Tim Northover <tnorthover at apple.com>
Date: 2023-03-16 (Thu, 16 Mar 2023)
Changed paths:
M llvm/lib/CodeGen/DwarfEHPrepare.cpp
A llvm/test/CodeGen/AArch64/safestack-unwind.ll
Log Message:
-----------
Recommit DwarfEHPrepare: insert extra unwind paths for stack protector to instrument
This is a mitigation patch for
https://bugs.chromium.org/p/llvm/issues/detail?id=30, where existing stack
protection is skipped if a function is returned through by an unwinder rather
than the normal call/return path. The recent patch D139254 added the ability to
instrument a visible unwind path, at least in the IR case (I'm working on the
SelectionDAG instrumentation too) but there are still invisible unwinds it
can't reach.
So this patch adds logic to DwarfEHPrepare that goes through a function,
converting any call that might throw into an invoke to a simple resume cleanup,
and adding cleanup clauses to existing landingpads that lack them. Obviously we
don't really want to do this if it's wasted effort, so I also exposed
requiresStackProtector from the actual StackProtector code to skip the extra
paths if they won't be used.
Changes:
* Move test to AArch64 directory as it relies on target presence.
* Re-add Dominator-tree maintenance. Accidentally cherry-picked wrong patch.
* Skip adding paths on Windows EH functions.
https://reviews.llvm.org/D143637
More information about the All-commits
mailing list