[lld] 96aac67 - [lld] Error on unsupported split stack (#88063)

via llvm-commits llvm-commits at lists.llvm.org
Fri May 3 23:59:34 PDT 2024


Author: Patrick O'Neill
Date: 2024-05-03T23:59:30-07:00
New Revision: 96aac6798bf6addcedebbb893669cc9c61fcf9c7

URL: https://github.com/llvm/llvm-project/commit/96aac6798bf6addcedebbb893669cc9c61fcf9c7
DIFF: https://github.com/llvm/llvm-project/commit/96aac6798bf6addcedebbb893669cc9c61fcf9c7.diff

LOG: [lld] Error on unsupported split stack (#88063)

Targets with no `-fstack-split` support now emit `ld.lld: error: target
doesn't support split stacks` instead of `UNREACHABLE executed` with a
backtrace asking the user to report a bug.

Resolves #88061

Added: 
    lld/test/ELF/riscv-split-stack.s

Modified: 
    lld/ELF/Target.cpp

Removed: 
    


################################################################################
diff  --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp
index d879a427e9c096..3e221646ce2470 100644
--- a/lld/ELF/Target.cpp
+++ b/lld/ELF/Target.cpp
@@ -141,7 +141,7 @@ bool TargetInfo::needsThunk(RelExpr expr, RelType type, const InputFile *file,
 
 bool TargetInfo::adjustPrologueForCrossSplitStack(uint8_t *loc, uint8_t *end,
                                                   uint8_t stOther) const {
-  llvm_unreachable("Target doesn't support split stacks.");
+  fatal("target doesn't support split stacks");
 }
 
 bool TargetInfo::inBranchRange(RelType type, uint64_t src, uint64_t dst) const {

diff  --git a/lld/test/ELF/riscv-split-stack.s b/lld/test/ELF/riscv-split-stack.s
new file mode 100644
index 00000000000000..e6ebf9f3cb5aec
--- /dev/null
+++ b/lld/test/ELF/riscv-split-stack.s
@@ -0,0 +1,24 @@
+# REQUIRES: riscv
+
+# RUN: split-file %s %t
+# RUN: llvm-mc -filetype=obj -triple=riscv64 %t/main.s -o %t.64.o
+# RUN: llvm-mc -filetype=obj -triple=riscv64 %t/callee.s -o %t.64.2.o
+# RUN: not ld.lld %t.64.o %t.64.2.o -o %t.64 2>&1 | FileCheck %s
+# CHECK: error: target doesn't support split stacks
+
+#--- main.s
+        .globl  _start
+        .type   _start, at function
+_start:
+        call    test
+	ret
+end:
+        .size   _start, end-_start
+        .section        ".note.GNU-split-stack","", at progbits
+
+
+#--- callee.s
+        .globl  test
+        .type   test, at function
+test:
+	ret


        


More information about the llvm-commits mailing list