Skip to content

fix(arm32): use %progbits in .note.GNU-stack section directive#149

Merged
jpnurmi merged 4 commits into
getsentryfrom
jpnurmi/fix/arm32-stack-note
Apr 21, 2026
Merged

fix(arm32): use %progbits in .note.GNU-stack section directive#149
jpnurmi merged 4 commits into
getsentryfrom
jpnurmi/fix/arm32-stack-note

Conversation

@jpnurmi
Copy link
Copy Markdown
Collaborator

@jpnurmi jpnurmi commented Apr 21, 2026

@progbits is silently dropped on ARM because @ is the line-comment character in ARM assembler syntax, leaving .section .note.GNU-stack,"" followed by an unrecognized comma — the assembler errors out with "junk at end of line, first unrecognized character is ,".

Switch to %progbits, which works on every supported architecture and matches what the same file already does on the other two .section directives above:

.section .note.crashpad.info,"a",%note

.section .rodata,"a",%progbits

jpnurmi and others added 4 commits April 21, 2026 07:42
@progbits is silently dropped on ARM because @ is the line-comment
character in ARM assembler syntax, leaving `.section .note.GNU-stack,""`
followed by an unrecognized comma — the assembler errors out with
"junk at end of line, first unrecognized character is `,`".

Switch to %progbits, which works on every supported architecture and
matches what the same file already does on the other two .section
directives (.note.crashpad.info and .rodata) above.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a "Linux Arm32 (gcc-arm-linux-gnueabihf)" row that runs on
ubuntu-24.04-arm and cross-compiles to armhf via the
gcc-arm-linux-gnueabihf toolchain. The arm64 runner is used because
its default apt sources point at ports.ubuntu.com, which serves armhf
multiarch packages directly — no sources.list surgery needed, just
`dpkg --add-architecture armhf` plus the cross-toolchain and armhf
runtime dev libs.

This catches arm-specific assembler / preprocessor breakages in the
client-side code (such as the .note.GNU-stack `@progbits` regression
that this branch also fixes) before they reach downstream consumers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Existing matrix had no native Linux Arm64 coverage. Add GCC and clang
rows on ubuntu-24.04-arm so arm64-specific build issues (which x86
builds wouldn't catch) get a CI signal.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
CRASHPAD_ENABLE_STACKTRACE=ON triggers a pkg_check_modules call for
libunwind-ptrace. The .pc file lives in /usr/lib/arm-linux-gnueabihf/
pkgconfig once libunwind-dev:armhf is installed, but pkg-config's
default search path on the arm64 runner is the host's
/usr/lib/aarch64-linux-gnu/pkgconfig and misses it. Set
PKG_CONFIG_LIBDIR via GITHUB_ENV from the install step so subsequent
build steps inherit it; using PKG_CONFIG_LIBDIR (not PKG_CONFIG_PATH)
also prevents accidentally linking host-arch libs into the cross
binary.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jpnurmi jpnurmi marked this pull request as ready for review April 21, 2026 06:16
@jpnurmi jpnurmi requested a review from supervacuus April 21, 2026 06:20
@jpnurmi jpnurmi merged commit 5e6960d into getsentry Apr 21, 2026
23 checks passed
@jpnurmi jpnurmi deleted the jpnurmi/fix/arm32-stack-note branch April 21, 2026 06:24
jpnurmi added a commit to getsentry/sentry-native that referenced this pull request Apr 21, 2026
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.

2 participants