| .section ".data.rel.ro", "aw", @progbits |
| /* Align, so that .got is likely at address 0x2080. */ |
| .balign 4096 |
| .section ".tbss", "awT", @nobits |
| bl1: .space 4 |
| bl2: .space 4 |
| bl3: .space 4 |
| bl4: .space 4 |
| bl5: .space 4 |
| .text |
| /* Align, so that fn3 is likely at address 0x1000. */ |
| .balign 4096 |
| .globl fn3 |
| .type fn3,@function |
| fn3: |
| pushl %ebp |
| movl %esp, %ebp |
| |
| /* @indntpoff IE against global var */ |
| movl %gs:0, %eax |
| nop;nop |
| addl sg1@indntpoff, %eax |
| nop;nop;nop;nop |
| |
| /* @indntpoff direct %gs access IE against global var */ |
| movl sg2@indntpoff, %edx |
| nop;nop |
| movl %gs:(%edx), %eax |
| nop;nop;nop;nop |
| |
| /* @indntpoff IE against hidden var */ |
| movl %gs:0, %eax |
| nop;nop |
| addl sh1@indntpoff, %eax |
| nop;nop;nop;nop |
| |
| /* @indntpoff direct %gs access IE against hidden var */ |
| movl sh2@indntpoff, %edx |
| nop;nop |
| movl %gs:(%edx), %eax |
| nop;nop;nop;nop |
| |
| /* @indntpoff IE against local var */ |
| movl %gs:0, %eax |
| nop;nop |
| addl bl1@indntpoff, %eax |
| nop;nop;nop;nop |
| |
| /* @indntpoff direct %gs access IE against local var */ |
| movl bl2@indntpoff, %edx |
| nop;nop |
| movl %gs:(%edx), %eax |
| nop;nop;nop;nop |
| |
| /* LE @tpoff, global var */ |
| movl $-3+sg3@tpoff, %edx |
| nop;nop |
| movl %gs:0, %eax |
| nop;nop |
| subl %edx, %eax |
| nop;nop;nop;nop |
| |
| /* LE @tpoff, local var */ |
| movl $-1+bl3@tpoff, %eax |
| nop;nop |
| movl %gs:0, %edx |
| nop;nop |
| subl %eax, %edx |
| nop;nop;nop;nop |
| |
| /* LE @ntpoff, global var */ |
| movl %gs:0, %eax |
| nop;nop |
| leal 2+sg4@ntpoff(%eax), %edx |
| nop;nop;nop;nop |
| |
| /* LE @ntpoff, hidden var, non-canonical sequence */ |
| movl $sh3@ntpoff, %eax |
| nop;nop |
| movl %gs:0, %edx |
| nop;nop |
| addl %eax, %edx |
| nop;nop;nop;nop |
| |
| /* LE @ntpoff, local var, non-canonical sequence */ |
| movl %gs:0, %edx |
| nop;nop |
| addl $bl4@ntpoff+1, %edx |
| nop;nop;nop;nop |
| |
| /* Direct %gs access */ |
| |
| /* LE @ntpoff, global var */ |
| movl %gs:sg5@ntpoff, %eax |
| nop;nop;nop;nop |
| |
| /* LE @ntpoff, local var */ |
| movl %gs:bl5@ntpoff+3, %edx |
| nop;nop;nop;nop |
| |
| /* LE @ntpoff, hidden var */ |
| movl %gs:1+sh4@ntpoff, %edx |
| nop;nop;nop;nop |
| |
| movl -4(%ebp), %ebx |
| leave |
| ret |