| 1 | .section ".tbss", "awT", @nobits
|
|---|
| 2 | .globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
|
|---|
| 3 | bg1: .space 4
|
|---|
| 4 | bg2: .space 4
|
|---|
| 5 | bg3: .space 4
|
|---|
| 6 | bg4: .space 4
|
|---|
| 7 | bg5: .space 4
|
|---|
| 8 | bg6: .space 4
|
|---|
| 9 | bg7: .space 4
|
|---|
| 10 | bg8: .space 4
|
|---|
| 11 | bl1: .space 4
|
|---|
| 12 | bl2: .space 4
|
|---|
| 13 | bl3: .space 4
|
|---|
| 14 | bl4: .space 4
|
|---|
| 15 | bl5: .space 4
|
|---|
| 16 | bl6: .space 4
|
|---|
| 17 | bl7: .space 4
|
|---|
| 18 | bl8: .space 4
|
|---|
| 19 | .text
|
|---|
| 20 | .globl _start
|
|---|
| 21 | .type _start,@function
|
|---|
| 22 | _start:
|
|---|
| 23 | pushq %rbp
|
|---|
| 24 | movq %rsp, %rbp
|
|---|
| 25 |
|
|---|
| 26 | /* IE against global var */
|
|---|
| 27 | movq %fs:0, %r11
|
|---|
| 28 | nop;nop
|
|---|
| 29 | addq sG6@gottpoff(%rip), %r11
|
|---|
| 30 | nop;nop;nop;nop
|
|---|
| 31 |
|
|---|
| 32 | /* IE -> LE against global var defined in exec */
|
|---|
| 33 | movq %fs:0, %rdx
|
|---|
| 34 | nop;nop
|
|---|
| 35 | addq bg6@gottpoff(%rip), %rdx
|
|---|
| 36 | nop;nop;nop;nop
|
|---|
| 37 |
|
|---|
| 38 | /* IE -> LE against local var */
|
|---|
| 39 | movq %fs:0, %r12
|
|---|
| 40 | nop;nop
|
|---|
| 41 | addq bl6@gottpoff(%rip), %r12
|
|---|
| 42 | nop;nop;nop;nop
|
|---|
| 43 |
|
|---|
| 44 | /* direct %fs access IE -> LE against local var */
|
|---|
| 45 | movq bl8@gottpoff(%rip), %rdx
|
|---|
| 46 | nop;nop
|
|---|
| 47 | movq %fs:(%rdx), %rax
|
|---|
| 48 | nop;nop;nop;nop
|
|---|
| 49 |
|
|---|
| 50 | /* IE -> LE against hidden but not local var */
|
|---|
| 51 | movq %fs:0, %rdx
|
|---|
| 52 | nop;nop
|
|---|
| 53 | addq sh6@gottpoff(%rip), %rdx
|
|---|
| 54 | nop;nop;nop;nop
|
|---|
| 55 |
|
|---|
| 56 | /* direct %fs access IE -> LE against hidden but not local var */
|
|---|
| 57 | movq sh8@gottpoff(%rip), %rdx
|
|---|
| 58 | nop;nop
|
|---|
| 59 | movq %fs:(%rdx), %rax
|
|---|
| 60 | nop;nop;nop;nop
|
|---|
| 61 |
|
|---|
| 62 | /* LE, global var defined in exec */
|
|---|
| 63 | movq %fs:0, %rax
|
|---|
| 64 | nop;nop
|
|---|
| 65 | leaq sg2@tpoff(%rax), %rdx
|
|---|
| 66 | nop;nop;nop;nop
|
|---|
| 67 |
|
|---|
| 68 | /* LE, local var, non-canonical sequence */
|
|---|
| 69 | movq $2+bl2@tpoff, %r9
|
|---|
| 70 | nop;nop
|
|---|
| 71 | movq %fs:0, %rdx
|
|---|
| 72 | nop;nop
|
|---|
| 73 | addq %r9, %rdx
|
|---|
| 74 | nop;nop;nop;nop
|
|---|
| 75 |
|
|---|
| 76 | /* LE, hidden var defined in exec, non-canonical sequence */
|
|---|
| 77 | movq %fs:0, %rdx
|
|---|
| 78 | nop;nop
|
|---|
| 79 | addq $sh2@tpoff+1, %rdx
|
|---|
| 80 | nop;nop;nop;nop
|
|---|
| 81 |
|
|---|
| 82 | /* Direct %fs access */
|
|---|
| 83 |
|
|---|
| 84 | /* LE, global var defined in exec */
|
|---|
| 85 | movq %fs:sg3@tpoff, %rax
|
|---|
| 86 | nop;nop;nop;nop
|
|---|
| 87 |
|
|---|
| 88 | /* LE, local var */
|
|---|
| 89 | movq %fs:bl3@tpoff+3, %r10
|
|---|
| 90 | nop;nop;nop;nop
|
|---|
| 91 |
|
|---|
| 92 | /* LE, hidden var defined in exec */
|
|---|
| 93 | movq %fs:1+sh3@tpoff, %rdx
|
|---|
| 94 | nop;nop;nop;nop
|
|---|
| 95 |
|
|---|
| 96 | leave
|
|---|
| 97 | ret
|
|---|