summaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-readobj/COFFDumper.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2023-09-29 18:10:07 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-09-29 18:10:41 +0000
commit4bbf1f460eb3fabdb7cf7cd731af0c227e6539c8 (patch)
tree8fb51c31848f1d9835688ea1730410efb2c3f7ee /llvm/tools/llvm-readobj/COFFDumper.cpp
parent8092e001bcd76c0b9fec2311f3a515aa60d2ed07 (diff)
Vendor import of llvm-project branch release/17.x llvmorg-17.0.1-25-g098e653a5bed.vendor/llvm-project/llvmorg-17.0.1-25-g098e653a5bed
Diffstat (limited to 'llvm/tools/llvm-readobj/COFFDumper.cpp')
-rw-r--r--llvm/tools/llvm-readobj/COFFDumper.cpp30
1 files changed, 14 insertions, 16 deletions
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp
index 0a5073d2d23f..79fef8bc123c 100644
--- a/llvm/tools/llvm-readobj/COFFDumper.cpp
+++ b/llvm/tools/llvm-readobj/COFFDumper.cpp
@@ -940,36 +940,34 @@ void COFFDumper::printCOFFLoadConfig() {
OS << " flags " << utohexstr(Flags);
};
+ // The stride gives the number of extra bytes in addition to the 4-byte
+ // RVA of each entry in the table. As of writing only a 1-byte extra flag
+ // has been defined.
+ uint32_t Stride = Tables.GuardFlags >> 28;
+ PrintExtraCB PrintExtra = Stride == 1 ? +PrintGuardFlags : nullptr;
+
if (Tables.GuardFidTableVA) {
ListScope LS(W, "GuardFidTable");
- if (uint32_t Size =
- Tables.GuardFlags &
- uint32_t(COFF::GuardFlags::CF_FUNCTION_TABLE_SIZE_MASK)) {
- // The size mask gives the number of extra bytes in addition to the 4-byte
- // RVA of each entry in the table. As of writing only a 1-byte extra flag
- // has been defined.
- Size = (Size >> 28) + 4;
- printRVATable(Tables.GuardFidTableVA, Tables.GuardFidTableCount, Size,
- PrintGuardFlags);
- } else {
- printRVATable(Tables.GuardFidTableVA, Tables.GuardFidTableCount, 4);
- }
+ printRVATable(Tables.GuardFidTableVA, Tables.GuardFidTableCount,
+ 4 + Stride, PrintExtra);
}
if (Tables.GuardIatTableVA) {
ListScope LS(W, "GuardIatTable");
- printRVATable(Tables.GuardIatTableVA, Tables.GuardIatTableCount, 4);
+ printRVATable(Tables.GuardIatTableVA, Tables.GuardIatTableCount,
+ 4 + Stride, PrintExtra);
}
if (Tables.GuardLJmpTableVA) {
ListScope LS(W, "GuardLJmpTable");
- printRVATable(Tables.GuardLJmpTableVA, Tables.GuardLJmpTableCount, 4);
+ printRVATable(Tables.GuardLJmpTableVA, Tables.GuardLJmpTableCount,
+ 4 + Stride, PrintExtra);
}
if (Tables.GuardEHContTableVA) {
ListScope LS(W, "GuardEHContTable");
- printRVATable(Tables.GuardEHContTableVA, Tables.GuardEHContTableCount, 5,
- PrintGuardFlags);
+ printRVATable(Tables.GuardEHContTableVA, Tables.GuardEHContTableCount,
+ 4 + Stride, PrintExtra);
}
}