disable CFI in the cross compiler to drop the unused .eh_frame - #182
Draft
samoht wants to merge 1 commit into
Draft
disable CFI in the cross compiler to drop the unused .eh_frame#182samoht wants to merge 1 commit into
samoht wants to merge 1 commit into
Conversation
OCaml's native exceptions unwind through its own trap stack, not DWARF, so the CFI the compiler emits ends up as a ~0.5 MiB .eh_frame that the unikernel never reads. It is SHF_ALLOC in a PT_LOAD segment, so strip cannot reclaim it. Configure the cross compiler with --disable-cfi so it is never emitted.
samoht
marked this pull request as draft
July 10, 2026 21:06
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
OCaml native exceptions unwind through their own trap stack rather than DWARF, so the CFI the compiler emits is dead weight in a unikernel: a ~0.5 MiB
.eh_framethat nothing ever reads. Because it isSHF_ALLOCin aPT_LOADsegment,stripcannot reclaim it either.This builds the cross compiler with
--disable-cfi, soocamloptnever emits the.cfi_*directives in the first place and the section disappears from the target objects and the final image.