diff options
author | Vy Nguyen <vyng@google.com> | 2023-02-28 15:17:44 -0500 |
---|---|---|
committer | Vy Nguyen <vyng@google.com> | 2023-05-18 13:27:47 -0400 |
commit | 09aaf53a05e3786eea374f3ce57574225036412d (patch) | |
tree | 33b3f11565ee442f6487197f3c67762e9cf6653f /llvm/lib/MC/MCStreamer.cpp | |
parent | 3f43abc9e78cce99741f7c8cf54552c95cc98d9f (diff) | |
download | llvm-09aaf53a05e3786eea374f3ce57574225036412d.zip llvm-09aaf53a05e3786eea374f3ce57574225036412d.tar.gz llvm-09aaf53a05e3786eea374f3ce57574225036412d.tar.bz2 |
[RFC][MC][MachO]Only emits compact-unwind format for "canonical" personality symbols. For the rest, use DWARFs.
Details: https://github.com/rust-lang/rust/issues/102754
The MachO format uses 2 bits to encode these personality funtions, with 0 reserved for "no-personality".
This means we can only have up to 3 personality. There are already three popular personalities: __gxx_personality_v0, __gcc_personality_v0, and __objc_personality_v0.
As a result, any system that needs custom-personality will run into a problem.
This patch implemented jyknight's proposal to simply force DWARFs for all non-canonical personality functions.
Differential Revision: https://reviews.llvm.org/D144999
Diffstat (limited to 'llvm/lib/MC/MCStreamer.cpp')
-rw-r--r-- | llvm/lib/MC/MCStreamer.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index 0cb0459..c0e9f42 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -126,7 +126,7 @@ void MCStreamer::emitExplicitComments() {} void MCStreamer::generateCompactUnwindEncodings(MCAsmBackend *MAB) { for (auto &FI : DwarfFrameInfos) FI.CompactUnwindEncoding = - (MAB ? MAB->generateCompactUnwindEncoding(FI.Instructions) : 0); + (MAB ? MAB->generateCompactUnwindEncoding(&FI, &Context) : 0); } /// EmitIntValue - Special case of EmitValue that avoids the client having to |