Unintuitive struct handling

Hi again,

Sorry for posting once more — I promise this is my last suggestion.

I’d like to propose an improvement related to how IDA handles structs in the disassembly view. Currently, when a struct is declared in memory, all references within that struct’s memory range are shown as pointing to the first member.

For example, if I have [rbx+0x30] referencing a member at offset 0x30, I would expect to be able to jump directly to that offset and inspect it. Instead, IDA jumps to the first struct member.

The issue becomes even clearer when setting hardware read/write breakpoints on struct members. A breakpoint on a member address ends up being applied to the struct’s base address instead. If I manually set the exact address in the breakpoint dialog, the breakpoint works, but it isn’t visually reflected in the disassembly (the red background is missing).

It seems like after declaring struct in memory, it treats all addresses in that struct memory range as one. This is really unintuitive during various GUI actions.

Example
The reference here is pointing to member inside struct (let it be n_elements for example), but hint shows the base address instead. While it’s not a big problem in hint itself (by some maybe even more preferable). Jumping to the struct 's base address instead the member by double clicking [rbp+r12-2C8h] is.

Best regards. Thanks in advance.

Hi,

No need to apologize - we appreciate (as always) detailed feedback, and even though it may take some time for us to review, suggestions like yours are often a source of inspiration for future improvements.
So thank you again for taking the time to describe the expected behaviour! If we decide at some point to address it (in one way or another), we’ll share updates about it.

1 Like