summaryrefslogtreecommitdiff
path: root/test/MC
diff options
context:
space:
mode:
authorSasa Stankovic <Sasa.Stankovic@imgtec.com>2014-03-11 21:23:40 +0000
committerSasa Stankovic <Sasa.Stankovic@imgtec.com>2014-03-11 21:23:40 +0000
commitff73a2bf86d03dd540afccbe0ba669f1f03ea8a2 (patch)
treebad1edb70079adece1f05726a20d6493e38d5275 /test/MC
parentd1742f6136e4bcce82d7e70ff71b7b93038dbb1c (diff)
downloadllvm-ff73a2bf86d03dd540afccbe0ba669f1f03ea8a2.tar.gz
llvm-ff73a2bf86d03dd540afccbe0ba669f1f03ea8a2.tar.bz2
llvm-ff73a2bf86d03dd540afccbe0ba669f1f03ea8a2.tar.xz
[mips] Implement NaCl sandboxing of function calls:
* Add masking instructions before indirect calls (in MC layer). * Align call + branch delay to the bundle end (in MC layer). Differential Revision: http://llvm-reviews.chandlerc.com/D3032 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203606 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC')
-rw-r--r--test/MC/Mips/nacl-mask.s66
1 files changed, 66 insertions, 0 deletions
diff --git a/test/MC/Mips/nacl-mask.s b/test/MC/Mips/nacl-mask.s
index 90e5365456..820583549c 100644
--- a/test/MC/Mips/nacl-mask.s
+++ b/test/MC/Mips/nacl-mask.s
@@ -9,6 +9,7 @@
# Test that address-masking sandboxing is added before indirect branches and
# returns.
+ .align 4
test1:
.set noreorder
@@ -35,6 +36,7 @@ test1:
# Test that address-masking sandboxing is added before load instructions.
+ .align 4
test2:
.set noreorder
@@ -104,6 +106,7 @@ test2:
# Test that address-masking sandboxing is added before store instructions.
+ .align 4
test3:
.set noreorder
@@ -166,6 +169,7 @@ test3:
# Test that address-masking sandboxing is added after instructions that change
# stack pointer.
+ .align 4
test4:
.set noreorder
@@ -217,3 +221,65 @@ test4:
# CHECK-NOT: and
# CHECK: sw $sp, 123($sp)
# CHECK-NOT: and
+
+
+
+# Test that call + branch delay is aligned at bundle end. Test that mask is
+# added before indirect calls.
+
+ .align 4
+test5:
+ .set noreorder
+
+ jal func1
+ addiu $4, $zero, 1
+
+ nop
+ bal func2
+ addiu $4, $zero, 2
+
+ nop
+ nop
+ bltzal $t1, func3
+ addiu $4, $zero, 3
+
+ nop
+ nop
+ nop
+ bgezal $t2, func4
+ addiu $4, $zero, 4
+
+ jalr $t9
+ addiu $4, $zero, 5
+
+# CHECK-LABEL: test5:
+
+# CHECK-NEXT: nop
+# CHECK-NEXT: nop
+# CHECK-NEXT: jal
+# CHECK-NEXT: addiu $4, $zero, 1
+
+# CHECK-NEXT: nop
+# CHECK-NEXT: nop
+# CHECK-NEXT: bal
+# CHECK-NEXT: addiu $4, $zero, 2
+
+# CHECK-NEXT: nop
+# CHECK-NEXT: nop
+# CHECK-NEXT: bltzal
+# CHECK-NEXT: addiu $4, $zero, 3
+
+# CHECK-NEXT: nop
+# CHECK-NEXT: nop
+# CHECK-NEXT: nop
+# CHECK-NEXT: nop
+
+# CHECK-NEXT: nop
+# CHECK-NEXT: nop
+# CHECK-NEXT: bgezal
+# CHECK-NEXT: addiu $4, $zero, 4
+
+# CHECK-NEXT: nop
+# CHECK-NEXT: and $25, $25, $14
+# CHECK-NEXT: jalr $25
+# CHECK-NEXT: addiu $4, $zero, 5