[llvm] [ARMAsmBackend] Add checks for relocation addends in assembler (PR #109969)
Jonathan Cohen via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 7 02:31:27 PDT 2024
================
@@ -0,0 +1,62 @@
+// RUN: not llvm-mc -triple armv7-apple-darwin -filetype=obj %s 2>&1 | FileCheck %s
+
+// Check that the relocation size is valid.
+// Check lower bound of edge case.
+_foo1_valid:
+ // CHECK-NOT: :[[@LINE+1]]:{{[0-9]+}}: error: Relocation out of range
+ b _foo1_valid+0x2000004
+// Check outside of range of the largest accepted positive number
+_foo1:
+ // CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Relocation out of range
+ b _foo1+0x2000008
+
+// Check Same as above, for smallest negative value
+_foo2_valid:
+ // CHECK-NOT: :[[@LINE+1]]:{{[0-9]+}}: error: Relocation out of range
+ b _foo2_valid-0x1FFFFF8
+_foo2:
+ // CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Relocation out of range
+ b _foo2-0x1FFFFFC
+
+// Edge case - subtracting positive number
+_foo3:
+ // CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Relocation out of range
+ b _foo3-0x2000010
+
+// Edge case - adding negative number
+_foo4:
+ // CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Relocation out of range
+ b _foo4+0x2000008
+
+_foo5:
+ // CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Relocation out of range
+ bl _foo5+0x2000008
+
+_foo6:
+ // CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Relocation out of range
+ blx _foo6+0x2000008
+
+// blx instruction is aligned to 16-bits.
+_foo7:
+ // CHECK-NOT:[[@LINE+1]]:{{[0-9]+}}: error: Relocation out of range
+ blx _foo7+0x1FFFFFE
+
+_foo8:
+ // CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Relocation out of range
+ ble _foo8+0x2000008
+
+_foo9:
+ // CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Relocation out of range
+ beq _foo9+0x2000008
+
+ // Check that the relocation alignment is valid.
----------------
jcohen-apple wrote:
Added an additional test for non blx instructions so this is more explicit.
https://github.com/llvm/llvm-project/pull/109969
More information about the llvm-commits
mailing list