Skip to content

Was any form of compact unwind information considered for AArch64? #344

@smeenai

Description

@smeenai

The 32-bit ARM exception handling ABI defines the exidx and extab sections to encode unwinding information compactly. I don't have any implementation experience with these sections, but from a user perspective they seem to do their job very well. A few years ago, I measured that for the Facebook for Android app built for armv7, the combined size of the .ARM.exidx and .ARM.extab sections was 6.1% of total native library size. In contrast, for aarch64, the combined size of .eh_frame_hdr, .eh_frame, and .gcc_except_table was 14.7% of total native library size. I know that the comparison isn't entirely sensible, since the text segment size on armv7 is also much smaller (because of Thumb), but it gives a rough sense of how much larger regular DWARF unwinding information is.

Binary size is a pretty large concern for us, and we've often contemplated whether some form of compact unwind information encoding for AArch64 ELF would be worthwhile. (In addition to exidx/extab, Apple has their compact unwind format and Microsoft has their pdata/xdata format, so there's a lot of prior art to consider.) Is there any information that's publicly available (or could be publicly shared) about whether a compact unwind format was ever considered for AArch64 ELF? Were there any particular issues with exidx/extab that made them unsuitable to carry over to AArch64, or was it mostly a matter of prioritization and minimizing divergences from other platforms?

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