Skip to content

Add Mach-O disassembly support#487

Open
rjmansfield wants to merge 2 commits intogoogle:mainfrom
rjmansfield:macho-disassembly-support
Open

Add Mach-O disassembly support#487
rjmansfield wants to merge 2 commits intogoogle:mainfrom
rjmansfield:macho-disassembly-support

Conversation

@rjmansfield
Copy link
Contributor

Implements GetDisassemblyInfo for Mach-O binaries.

Unlike ELF, Mach-O symbol tables don't include symbol size information
so sizes are inferred by finding the next symbol boundary and clamping to
__text section bounds with a 256 byte fallback.

Universal binaries currently require --source-filter to select architecture.
This is necessary because currently each architecture slice uses
overlapping VM address spaces e.g. both x86_64 and arm64 map __TEXT
at the same address. This could be addressed using separate vm address
e.g. #480

This depends on #481 so it's included
here as PR stacking is annoying

Implements the 'archs' data source to break down universal binaries
by architecture.

This allows users to:

- View file size breakdown by architecture: bloaty -d archs
- Filter to specific architecture: bloaty -d archs,segments --source-filter=arm64
- Hierarchical breakdown: bloaty -d archs,segments
Implements GetDisassemblyInfo for Mach-O binaries.

Unlike ELF, Mach-O symbol tables don't include symbol size information
so sizes are inferred by finding the next symbol boundary and clamping to
__text section bounds with a 256 byte fallback.

Universal binaries currently require --source-filter to select architecture.
This is necessary because currently each architecture slice uses
overlapping VM address spaces e.g. both x86_64 and arm64 map __TEXT
at the same address.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant