summaryrefslogtreecommitdiff
path: root/bootstrap/llvm14/dwarf-info.patch
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2024-12-04 17:27:59 -0600
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2024-12-04 17:27:59 -0600
commita52113d2368551dc2c530b765f656e724fcd7739 (patch)
treee29c2aa61e7685cff165f23a043421de485ac9fe /bootstrap/llvm14/dwarf-info.patch
parent9286e92e196082d80499e286c154086d0d302188 (diff)
downloadpackages-a52113d2368551dc2c530b765f656e724fcd7739.tar.gz
packages-a52113d2368551dc2c530b765f656e724fcd7739.tar.bz2
packages-a52113d2368551dc2c530b765f656e724fcd7739.tar.xz
packages-a52113d2368551dc2c530b765f656e724fcd7739.zip
user/llvm14: Move to bootstrap/
Package is only needed by Rust bootstrap packages.
Diffstat (limited to 'bootstrap/llvm14/dwarf-info.patch')
-rw-r--r--bootstrap/llvm14/dwarf-info.patch28
1 files changed, 28 insertions, 0 deletions
diff --git a/bootstrap/llvm14/dwarf-info.patch b/bootstrap/llvm14/dwarf-info.patch
new file mode 100644
index 000000000..9357c6519
--- /dev/null
+++ b/bootstrap/llvm14/dwarf-info.patch
@@ -0,0 +1,28 @@
+Author: A. Wilcox <awilfox@adelielinux.org>
+
+This isn't the proper fix, but debugging the LLVM formatter is a bit
+above my paygrade at the moment.
+
+The issue shows up in the DWARF X86 test on ppc and armv7:
+
+error: Simplified template DW_AT_name could not be reconstituted:
+ original: f3<char, '\x00', '\x01', '\x06', '\a', '\r', '\x0e', '\x1f', ' ', '!', '\x7f', '\x80'>
+ reconstituted: f3<char, '\x00', '\x00', '\x00', '\a', '\r', '\x00', '\x00', ' ', '!', '\x00', '\x00'>
+
+With this patch, this error does not occur. Debugging shows that the
+llvm::format overload called in the error case is <long long>, so I
+think it is having an issue converting a 64-bit value on platforms
+where char is default-unsigned.
+
+(pmmx does not show this issue, and has signed char.)
+--- llvm-14.0.6.src/lib/DebugInfo/DWARF/DWARFDie.cpp.old 2022-06-22 16:46:24.000000000 +0000
++++ llvm-14.0.6.src/lib/DebugInfo/DWARF/DWARFDie.cpp 2022-11-28 10:32:05.573627744 +0000
+@@ -506,7 +506,7 @@
+ OS << (char)Val;
+ OS << "'";
+ } else if (Val < 256)
+- OS << to_string(llvm::format("'\\x%02x'", Val));
++ OS << to_string(llvm::format("'\\x%02x'", (unsigned char)Val));
+ else if (Val <= 0xFFFF)
+ OS << to_string(llvm::format("'\\u%04x'", Val));
+ else