A jump table in a split function may contain an entry matching a start
address of another fragment of the function. While converting addresses
to labels, we used to ignore such entries resulting in underpopulated
jump table. Change that, so we always create one label per address.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
Thanks. I hope it won't break our jump table detection in unexpected ways.
As a suggestion to minimize fallout – we can restrict this new treatment to fragment starts only (ie. to *.cold functions only)
Comment Actions
In postProcessJumpTables() we are not making decisions on what entries belong to the table. The population of the table is happening in BinaryContext.
The code that I'm changing is supposed to convert addresses to labels, but was skipping the corner case.