Skip to content

ARM mapping symbols interpreted incorrectly when using 'Combine text sections' #369

@akiramusic000

Description

@akiramusic000

When using ELF ARM object files, objdiff uses a type of symbol called a "mapping symbol" to determine whether a section of code is ARM, Thumb, or data. The mapping symbols affect bytes from their location in the section until the next mapping symbol, or the end of the section. However, when using the 'Combine text sections' option, the separation between sections is lost, and a mapping symbol at address 0 of section A will affect bytes at address 0 of section B, as shown:

Image

The last $d symbol is at address 18, which is also where nn::svc::CreateAddressArbiter is placed. Because of this, the code of nn::svc::CreateAddressArbiter is interpreted all as data:

Image

However, when not using Combine text sections, this works as intended, and the function is interpreted as ARM code:

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions