Skip to content

Commit 1f23d25

Browse files
committed
libunwind: Use +gcs instead of gcs target attribute
__attribute__((target("gcs"))) does not work with gcc GCC-15 has added gcs intrinsics [1] but the syntax for enabling it is slightly different. This syntax works with clang too. With gcc15 compiler libunwind's check for this macros is succeeding and it ends up enabling 'gcs' by using function attribute, this works with clang but not with gcc but '+gcs' works with both We can see this in rust compiler bootstrap for aarch64/musl when system uses gcc15, it ends up with these errors Building libunwind.a for aarch64-poky-linux-musl cargo:warning=/mnt/b/yoe/master/sources/poky/build/tmp/work/cortexa57-poky-linux-musl/rust/1.85.1/rustc-1.85.1-src/src/llvm-project/libunwind/src/UnwindLevel1.c:191:1: error: arch extension 'gcs' should be prefixed by '+' cargo:warning= 191 | unwind_phase2(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *exception_object) { cargo:warning= | ^~~~~~~~~~~~~ cargo:warning=/mnt/b/yoe/master/sources/poky/build/tmp/work/cortexa57-poky-linux-musl/rust/1.85.1/rustc-1.85.1-src/src/llvm-project/libunwind/src/UnwindLevel1.c:337:22: error: arch extension 'gcs' should be prefixed by '+' cargo:warning= 337 | _Unwind_Stop_Fn stop, void *stop_parameter) { cargo:warning= | ^~~~~~~~~~~~~~~ [1] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=5a6af707f0af Upstream-Status: Submitted [llvm#138077] Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 parent e461af1 commit 1f23d25

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

libunwind/src/UnwindLevel1.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ extern int __unw_step_stage2(unw_cursor_t *);
185185

186186
#if defined(_LIBUNWIND_USE_GCS)
187187
// Enable the GCS target feature to permit gcspop instructions to be used.
188-
__attribute__((target("gcs")))
188+
__attribute__((target("+gcs")))
189189
#endif
190190
static _Unwind_Reason_Code
191191
unwind_phase2(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *exception_object) {
@@ -329,7 +329,7 @@ unwind_phase2(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *except
329329

330330
#if defined(_LIBUNWIND_USE_GCS)
331331
// Enable the GCS target feature to permit gcspop instructions to be used.
332-
__attribute__((target("gcs")))
332+
__attribute__((target("+gcs")))
333333
#endif
334334
static _Unwind_Reason_Code
335335
unwind_phase2_forced(unw_context_t *uc, unw_cursor_t *cursor,

0 commit comments

Comments
 (0)