Skip to content

What's the deal with jump tables? #36

@sethp

Description

@sethp

From what I can tell, we're down to just a pair of crossrefs back into Flash from RAM along the interrupt service path. One in _start_trap_rust:

a screenshot of objdump disassembly showing a reference to the symbol .LJTI126_0 at an address starting with 3c

and one in esp_hal_common::interrupt::riscv::vectored::handle_interrupts:

a screenshot of objdump disassembly showing a reference to the symbol .LJTI104_0 at an address starting with 3c

Both of these appear to be LLVM "jump tables": a mapping from some numerical value to a "next address" that compresses a whole bunch of repeated branch instructions into a single (offset) lookup + jump pair. Unfortunately, they're in .rodata, which is a good place for them in general, but we'd like to find a way to move these two somewhere else.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions