Skip to content

Commit 252ae25

Browse files
committed
libunwind: Do not use __attribute__((target("gcs"))) with non-clang compilers
This attribute is unsupported in GCC, so far it worked because before GCC15 did not define this macros in _CHKFEAT_GCS in arm_acle.h [1] 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. 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= | ^~~~~~~~~~~~~~~ Upstream-Status: Submitted [llvm#138077] [1] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=5a6af707f0af Signed-off-by: Khem Raj <[email protected]>
1 parent ab2428e commit 252ae25

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
@@ -183,7 +183,7 @@ unwind_phase1(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *except
183183
}
184184
extern int __unw_step_stage2(unw_cursor_t *);
185185

186-
#if defined(_LIBUNWIND_USE_GCS)
186+
#if defined(_LIBUNWIND_USE_GCS) && defined(__clang__)
187187
// Enable the GCS target feature to permit gcspop instructions to be used.
188188
__attribute__((target("gcs")))
189189
#endif
@@ -327,7 +327,7 @@ unwind_phase2(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *except
327327
return _URC_FATAL_PHASE2_ERROR;
328328
}
329329

330-
#if defined(_LIBUNWIND_USE_GCS)
330+
#if defined(_LIBUNWIND_USE_GCS) && defined(__clang__)
331331
// Enable the GCS target feature to permit gcspop instructions to be used.
332332
__attribute__((target("gcs")))
333333
#endif

0 commit comments

Comments
 (0)