150276Speter .section ".tbss", "awT", @nobits 2184989Srafan .globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8 350276Speterbg1: .space 4 450276Speterbg2: .space 4 550276Speterbg3: .space 4 6166124Srafanbg4: .space 4 7184989Srafanbg5: .space 4 8166124Srafanbg6: .space 4 9166124Srafanbg7: .space 4 10166124Srafanbg8: .space 4 11166124Srafanbl1: .space 4 12166124Srafanbl2: .space 4 13166124Srafanbl3: .space 4 14166124Srafanbl4: .space 4 15166124Srafanbl5: .space 4 16166124Srafanbl6: .space 4 17166124Srafanbl7: .space 4 18166124Srafanbl8: .space 4 19166124Srafan .text 20166124Srafan .globl _start 21166124Srafan .type _start,@function 22166124Srafan_start: 23166124Srafan pushl %ebp 24166124Srafan movl %esp, %ebp 25166124Srafan /* Set up .GOT pointer for non-pic @gottpoff sequences */ 26166124Srafan call 1f 27166124Srafan1: popl %ecx 28166124Srafan addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx 29166124Srafan nop;nop;nop;nop 30166124Srafan 31166124Srafan /* @gottpoff IE against global var */ 32166124Srafan movl %gs:0, %edx 33166124Srafan nop;nop 3450276Speter subl sG6@gottpoff(%ecx), %edx 3550276Speter nop;nop;nop;nop 3650276Speter 3762449Speter /* @indntpoff IE against global var */ 38166124Srafan movl %gs:0, %eax 39166124Srafan nop;nop 40166124Srafan addl sG7@indntpoff, %eax 41166124Srafan nop;nop;nop;nop 42166124Srafan 43166124Srafan /* @indntpoff direct %gs access IE against global var */ 4462449Speter movl sG8@indntpoff, %edx 4550276Speter nop;nop 4650276Speter movl %gs:(%edx), %eax 4750276Speter nop;nop;nop;nop 4897049Speter 4997049Speter /* @gottpoff IE -> LE against global var defined in exec */ 50166124Srafan movl %gs:0, %edx 5197049Speter nop;nop 5297049Speter subl bg6@gottpoff(%ecx), %edx 5350276Speter nop;nop;nop;nop 5450276Speter 5550276Speter /* @indntpoff IE -> LE against global var defined in exec */ 5662449Speter movl %gs:0, %eax 5750276Speter nop;nop 5850276Speter addl bg7@indntpoff, %eax 59184989Srafan nop;nop;nop;nop 6050276Speter 6150276Speter /* @indntpoff direct %gs access IE -> LE against global var defined 6250276Speter in exec */ 6350276Speter movl bg8@indntpoff, %edx 6450276Speter nop;nop 6550276Speter movl %gs:(%edx), %eax 6650276Speter nop;nop;nop;nop 6750276Speter 68184989Srafan /* @gottpoff IE -> LE against local var */ 6950276Speter movl %gs:0, %edx 7050276Speter nop;nop 7150276Speter subl bl6@gottpoff(%ecx), %edx 7250276Speter nop;nop;nop;nop 7350276Speter 7450276Speter /* @indntpoff IE -> LE against local var */ 7550276Speter movl %gs:0, %eax 7650276Speter nop;nop 77184989Srafan addl bl7@indntpoff, %eax 7850276Speter nop;nop;nop;nop 7950276Speter 8050276Speter /* @indntpoff direct %gs access IE -> LE against local var */ 8150276Speter movl bl8@indntpoff, %edx 8250276Speter nop;nop 8350276Speter movl %gs:(%edx), %eax 8450276Speter nop;nop;nop;nop 8550276Speter 86184989Srafan /* @gottpoff IE -> LE against hidden but not local var */ 8750276Speter movl %gs:0, %edx 8850276Speter nop;nop 8950276Speter subl sh6@gottpoff(%ecx), %edx 9050276Speter nop;nop;nop;nop 9150276Speter 9250276Speter /* @indntpoff IE -> LE against hidden but not local var */ 9350276Speter movl %gs:0, %eax 9450276Speter nop;nop 95184989Srafan addl sh7@indntpoff, %eax 9650276Speter nop;nop;nop;nop 9750276Speter 9850276Speter /* @indntpoff direct %gs access IE -> LE against hidden but not 9950276Speter local var */ 10050276Speter movl sh8@indntpoff, %edx 10150276Speter nop;nop 10250276Speter movl %gs:(%edx), %eax 10350276Speter nop;nop;nop;nop 104184989Srafan 10550276Speter /* LE @tpoff, global var defined in exec */ 10650276Speter movl $sg1@tpoff, %edx 10750276Speter nop;nop 10850276Speter movl %gs:0, %eax 10950276Speter nop;nop 11050276Speter subl %edx, %eax 11150276Speter nop;nop;nop;nop 11250276Speter 113184989Srafan /* LE @tpoff, local var */ 11450276Speter movl $-1+bl1@tpoff, %eax 11550276Speter nop;nop 11650276Speter movl %gs:0, %edx 11750276Speter nop;nop 11850276Speter subl %eax, %edx 11950276Speter nop;nop;nop;nop 12050276Speter 12150276Speter /* LE @tpoff, hidden var defined in exec */ 122184989Srafan movl $sh1@tpoff-3, %eax 12350276Speter nop;nop 12450276Speter movl %gs:0, %edx 12550276Speter nop;nop 12650276Speter subl %eax, %edx 12750276Speter nop;nop;nop;nop 12850276Speter 12950276Speter /* LE @ntpoff, global var defined in exec */ 13050276Speter movl %gs:0, %eax 131184989Srafan nop;nop 13250276Speter leal sg2@ntpoff(%eax), %edx 13350276Speter nop;nop;nop;nop 13450276Speter 13550276Speter /* LE @ntpoff, local var, non-canonical sequence */ 13650276Speter movl $2+bl2@ntpoff, %eax 13750276Speter nop;nop 13850276Speter movl %gs:0, %edx 13950276Speter nop;nop 14062449Speter addl %eax, %edx 14150276Speter nop;nop;nop;nop 14297049Speter 14397049Speter /* LE @ntpoff, hidden var defined in exec, non-canonical sequence */ 14450276Speter movl %gs:0, %edx 14550276Speter nop;nop 14650276Speter addl $sh2@ntpoff+1, %edx 14750276Speter nop;nop;nop;nop 14862449Speter 14950276Speter /* Direct %gs access */ 15097049Speter 15197049Speter /* LE @ntpoff, global var defined in exec */ 15250276Speter movl %gs:sg3@ntpoff, %eax 15350276Speter nop;nop;nop;nop 15450276Speter 15550276Speter /* LE @ntpoff, local var */ 15662449Speter movl %gs:bl3@ntpoff+3, %edx 15750276Speter nop;nop;nop;nop 15897049Speter 15997049Speter /* LE @ntpoff, hidden var defined in exec */ 16050276Speter movl %gs:1+sh3@ntpoff, %edx 16150276Speter nop;nop;nop;nop 16250276Speter 16397049Speter movl -4(%ebp), %ebx 16497049Speter leave 165 ret 166