diff options
author | Sasa Stankovic <Sasa.Stankovic@imgtec.com> | 2014-03-11 21:23:40 +0000 |
---|---|---|
committer | Sasa Stankovic <Sasa.Stankovic@imgtec.com> | 2014-03-11 21:23:40 +0000 |
commit | ff73a2bf86d03dd540afccbe0ba669f1f03ea8a2 (patch) | |
tree | bad1edb70079adece1f05726a20d6493e38d5275 /test/MC | |
parent | d1742f6136e4bcce82d7e70ff71b7b93038dbb1c (diff) | |
download | llvm-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.s | 66 |
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 |