[PATCH] D149367: Emit the CodeView `S_ARMSWITCHTABLE` debug symbol for jump tables
Eli Friedman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon May 1 14:22:24 PDT 2023
efriedma added inline comments.
================
Comment at: llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h:163
+
+ uint32_t EntriesCount;
+
----------------
It looks like the other classes initialize all the fields to zero.
================
Comment at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp:3491
+ "EK_Inline, EK_Custom32, EK_GPRel32BlockAddress, and "
+ "EK_GPRel64BlockAddress should never be emitted for COFF");
+ case MachineJumpTableInfo::EK_BlockAddress:
----------------
dpaoliello wrote:
> efriedma wrote:
> > LLVM can target 32-bit ARM Windows.
> I wasn't seeing ARM32 hit this code before, but it looks like it was because of the assumption that the branch instruction wasn't the one to use the jump table value.
>
> I've fixed the code to handle ARM32 and added it to the tests, but there seems to be some bug where the offsets are always 0? If I run the test via `llc` then the correct labels appear in the debug info, but somewhere between `llc -filetype=obj` and `llvm-readobj` the offsets are lost...
In general, .secrel32 emits a relocation; `llvm-readobj --codeview` won't dump it, I think, but it should still be there. What's the relocation pointing to?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D149367/new/
https://reviews.llvm.org/D149367
More information about the llvm-commits
mailing list