[llvm] [llvm-objcopy][COFF] Update WinCFGuard section contents after stripping (PR #153322)
Evgenii Kudriashov via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 20 09:09:10 PDT 2025
================
@@ -93,59 +94,75 @@ Error COFFWriter::finalizeSymbolContents() {
return Error::success();
}
-Error COFFWriter::finalizeCFGuardContents() {
+Error COFFWriter::finalizeSymIdxContents() {
+ // CFGuards shouldn't be present in PE
+ if (Obj.IsPE)
+ return Error::success();
+
+ // Currently handle only sections consisting only of .symidx.
+ // TODO: other sections such as .impcall and .hybmp$x require more complex
+ // handling as they have more complex layout.
+ auto IsSymIdxSection = [](StringRef Name) {
+ return Name == ".gljmp$y" || Name == ".giats$y" || Name == ".gfids$y" ||
+ Name == ".gehcont$y";
+ };
+
DenseMap<size_t, size_t> SymIdMap;
+ SmallDenseMap<ssize_t, coff_aux_section_definition *, 4> SecIdMap;
bool NeedUpdate = false;
- for (Symbol &Sym : Obj.getMutableSymbols()) {
+ for (auto &Sym : Obj.getMutableSymbols()) {
NeedUpdate |= Sym.OriginalRawIndex == Sym.RawIndex;
SymIdMap[Sym.OriginalRawIndex] = Sym.RawIndex;
+
+ // We collect only definition symbols of the sections to update checksum
----------------
e-kud wrote:
Fixed all the full stops.
https://github.com/llvm/llvm-project/pull/153322
More information about the llvm-commits
mailing list