blob: e766a3dcc258f9a4bcc74cecf213399a8f63cf41 [file] [log] [blame]
.macro bad args:vararg
.ifdef _bad_
\args
.endif
.endm
.macro ill args:vararg
# This is used to mark entries that aren't handled consistently,
# and thus shouldn't currently be checked for.
# \args
.endm
.text
_start:
mov $xtrn, %eax
mov $xtrn, %ax
mov $xtrn, %al
mov xtrn(%ebx), %eax
mov xtrn(%bx), %eax
mov $(xtrn - .), %eax
mov $(xtrn - .), %ax
mov $(xtrn - .), %al
mov xtrn - .(%ebx), %eax
mov xtrn - .(%bx), %eax
call xtrn
jecxz xtrn
mov $xtrn@got, %eax
bad mov $xtrn@got, %ax
bad mov $xtrn@got, %al
mov xtrn@got(%ebx), %eax
bad mov xtrn@got(%bx), %eax
bad call xtrn@got
mov $xtrn@gotoff, %eax
bad mov $xtrn@gotoff, %ax
bad mov $xtrn@gotoff, %al
mov xtrn@gotoff(%ebx), %eax
bad mov xtrn@gotoff(%bx), %eax
bad call xtrn@gotoff
add $_GLOBAL_OFFSET_TABLE_, %eax
ill add $_GLOBAL_OFFSET_TABLE_, %ax
ill add $_GLOBAL_OFFSET_TABLE_, %al
add $(_GLOBAL_OFFSET_TABLE_ - .), %eax
ill add $(_GLOBAL_OFFSET_TABLE_ - .), %ax
ill add $(_GLOBAL_OFFSET_TABLE_ - .), %al
mov $xtrn@plt, %eax
bad mov $xtrn@plt, %ax
bad mov $xtrn@plt, %al
mov xtrn@plt(%ebx), %eax
bad mov xtrn@plt(%bx), %eax
call xtrn@plt
bad jecxz xtrn@plt
mov $xtrn@tlsgd, %eax
bad mov $xtrn@tlsgd, %ax
bad mov $xtrn@tlsgd, %al
mov xtrn@tlsgd(%ebx), %eax
bad mov xtrn@tlsgd(%bx), %eax
bad call xtrn@tlsgd
mov $xtrn@gotntpoff, %eax
bad mov $xtrn@gotntpoff, %ax
bad mov $xtrn@gotntpoff, %al
mov xtrn@gotntpoff(%ebx), %eax
bad mov xtrn@gotntpoff(%bx), %eax
bad call xtrn@gotntpoff
mov $xtrn@indntpoff, %eax
bad mov $xtrn@indntpoff, %ax
bad mov $xtrn@indntpoff, %al
mov xtrn@indntpoff(%ebx), %eax
bad mov xtrn@indntpoff(%bx), %eax
bad call xtrn@indntpoff
mov $xtrn@gottpoff, %eax
bad mov $xtrn@gottpoff, %ax
bad mov $xtrn@gottpoff, %al
mov xtrn@gottpoff(%ebx), %eax
bad mov xtrn@gottpoff(%bx), %eax
bad call xtrn@gottpoff
mov $xtrn@tlsldm, %eax
bad mov $xtrn@tlsldm, %ax
bad mov $xtrn@tlsldm, %al
mov xtrn@tlsldm(%ebx), %eax
bad mov xtrn@tlsldm(%bx), %eax
bad call xtrn@tlsldm
mov $xtrn@dtpoff, %eax
bad mov $xtrn@dtpoff, %ax
bad mov $xtrn@dtpoff, %al
mov xtrn@dtpoff(%ebx), %eax
bad mov xtrn@dtpoff(%bx), %eax
bad call xtrn@dtpoff
mov $xtrn@ntpoff, %eax
bad mov $xtrn@ntpoff, %ax
bad mov $xtrn@ntpoff, %al
mov xtrn@ntpoff(%ebx), %eax
bad mov xtrn@ntpoff(%bx), %eax
bad call xtrn@ntpoff
mov $xtrn@tpoff, %eax
bad mov $xtrn@tpoff, %ax
bad mov $xtrn@tpoff, %al
mov xtrn@tpoff(%ebx), %eax
bad mov xtrn@tpoff(%bx), %eax
bad call xtrn@tpoff
.data
.long xtrn
.long xtrn - .
.long xtrn@got
.long xtrn@gotoff
.long _GLOBAL_OFFSET_TABLE_
.long _GLOBAL_OFFSET_TABLE_ - .
.long xtrn@plt
.long xtrn@tlsgd
.long xtrn@gotntpoff
.long xtrn@indntpoff
.long xtrn@gottpoff
.long xtrn@tlsldm
.long xtrn@dtpoff
.long xtrn@ntpoff
.long xtrn@tpoff
.word xtrn
.word xtrn - .
bad .word xtrn@got
bad .word xtrn@gotoff
ill .word _GLOBAL_OFFSET_TABLE_
ill .word _GLOBAL_OFFSET_TABLE_ - .
bad .word xtrn@plt
bad .word xtrn@tlsgd
bad .word xtrn@gotntpoff
bad .word xtrn@indntpoff
bad .word xtrn@gottpoff
bad .word xtrn@tlsldm
bad .word xtrn@dtpoff
bad .word xtrn@ntpoff
bad .word xtrn@tpoff
.byte xtrn
.byte xtrn - .
bad .byte xtrn@got
bad .byte xtrn@gotoff
ill .byte _GLOBAL_OFFSET_TABLE_
ill .byte _GLOBAL_OFFSET_TABLE_ - .
bad .byte xtrn@plt
bad .byte xtrn@tlsgd
bad .byte xtrn@gotntpoff
bad .byte xtrn@indntpoff
bad .byte xtrn@gottpoff
bad .byte xtrn@tlsldm
bad .byte xtrn@dtpoff
bad .byte xtrn@ntpoff
bad .byte xtrn@tpoff
.long xtrn@got + 4
.long xtrn@got - 4
bad .long xtrn@plt - .