blob: 0f2803c946df5556255f0913b77269bc28d9bf6b [file] [log] [blame]
! Test inter-file DataLabel support.
!
! We need to test symbols that are:
! * Global, defined in this file, with/without/both-with-without datalabel
! references.
! * The above in combinations where the reference is/is not from within
! the same section. The implementation is currently indifferent to that
! fact, but it seems likely to be something that can change.
! * Extern with/without/both-with-without datalabel-qualified references.
! * The above with reference from same *and* other file.
! * The above in combinations for where the symbol is/is not a
! STO_SH5_ISA32-marked symbol.
! There will be omissions and overlap in combinations. Add spotted
! omissions with complementary tests in other files.
.text
.mode SHmedia
! For good measure, we start with a nop to get a non-zero offset within
! the .text section.
.global start
start:
nop
! Referenced from the same file, same section, is ISA32, only referenced
! with datalabel qualifier.
.global foo
foo:
nop
movi (datalabel foo + 8) & 65535,r30
! Referenced from same file, same section, both with and without
! datalabel qualifier, is ISA32.
.global fooboth
fooboth:
nop
movi (datalabel fooboth + 16) & 65535,r40
movi (fooboth + 12) & 65535,r40
! Same as above, but in different order.
.global fooboth2
fooboth2:
nop
movi (fooboth2 + 12) & 65535,r40
movi (datalabel fooboth2 + 16) & 65535,r40
! Referenced from this file and another, same section, is ISA32.
.global foowithout
foowithout:
nop
movi (foowithout + 24) & 65535,r30
! Same as above, different section than definition.
.global foo_other
foo_other:
nop
.global foo_otherboth
foo_otherboth:
nop
.global foo_otherboth2
foo_otherboth2:
nop
.global foo_otherwithout
foo_otherwithout:
nop
.section .rodata
.long datalabel foo_other + 4
.long datalabel foo_otherboth + 40
.long foo_otherboth + 24
.long foo_otherboth2 + 24
.long datalabel foo_otherboth2 + 40
.long foo_otherwithout
.text
! Same as above, mixing references from same and other section.
.global foo_mix
foo_mix:
nop
movi (datalabel foo_mix + 8) & 65535,r30
.global foo_mix2
foo_mix2:
nop
movi (foo_mix2 + 8) & 65535,r30
.global foo_mixboth
foo_mixboth:
nop
movi (datalabel foo_mixboth + 80) & 65535,r30
movi (foo_mixboth + 80) & 65535,r30
.global foo_mixboth2
foo_mixboth2:
nop
movi (foo_mixboth2 + 64) & 65535,r30
movi (datalabel foo_mixboth2 + 64) & 65535,r30
.global foo_mixwithout
foo_mixwithout:
nop
movi (foo_mixwithout + 42) & 65535,r30
.global foo_mixwithout2
foo_mixwithout2:
nop
movi (foo_mixwithout2 + 24) & 65535,r30
.section .rodata
.long foo_mix + 4
.long datalabel foo_mix2 + 48
.long datalabel foo_mixboth + 400
.long foo_mixboth + 420
.long foo_mixboth2 + 248
.long datalabel foo_mixboth2 + 240
.long foo_mixwithout
! Same as above, referencing symbol in other file (reference only from
! this to other file).
.text
nop
movi (datalabel bar + 8) & 65535,r30
movi (datalabel barboth + 16) & 65535,r40
movi (barboth + 12) & 65535,r40
movi (barboth2 + 12) & 65535,r40
movi (datalabel barboth2 + 16) & 65535,r40
movi (barwithout + 24) & 65535,r30
.section .rodata
.long datalabel bar_other + 4
.long datalabel bar_otherboth + 40
.long bar_otherboth + 24
.long bar_otherboth2 + 24
.long datalabel bar_otherboth2 + 40
.long bar_otherwithout
.text
movi (datalabel bar_mix + 8) & 65535,r30
movi (bar_mix2 + 8) & 65535,r30
movi (datalabel bar_mixboth + 80) & 65535,r30
movi (bar_mixboth + 80) & 65535,r30
movi (bar_mixboth2 + 64) & 65535,r30
movi (datalabel bar_mixboth2 + 64) & 65535,r30
movi (bar_mixwithout + 42) & 65535,r30
movi (bar_mixwithout2 + 24) & 65535,r30
.section .rodata
.long bar_mix + 4
.long datalabel bar_mix2 + 48
.long datalabel bar_mixboth + 400
.long bar_mixboth + 420
.long bar_mixboth2 + 248
.long datalabel bar_mixboth2 + 240
.long bar_mixwithout
! Same as above, referencing symbol in other file *and* within that file.
.text
movi (datalabel baz + 8) & 65535,r30
movi (datalabel bazboth + 16) & 65535,r40
movi (bazboth + 12) & 65535,r40
movi (bazboth2 + 12) & 65535,r40
movi (datalabel bazboth2 + 16) & 65535,r40
movi (bazwithout + 24) & 65535,r30
.section .rodata
.long datalabel baz_other + 4
.long datalabel baz_otherboth + 40
.long baz_otherboth + 24
.long baz_otherboth2 + 24
.long datalabel baz_otherboth2 + 40
.long baz_otherwithout
.text
movi (datalabel baz_mix + 8) & 65535,r30
movi (baz_mix2 + 8) & 65535,r30
movi (datalabel baz_mixboth + 80) & 65535,r30
movi (baz_mixboth + 80) & 65535,r30
movi (baz_mixboth2 + 64) & 65535,r30
movi (datalabel baz_mixboth2 + 64) & 65535,r30
movi (baz_mixwithout + 42) & 65535,r30
movi (baz_mixwithout2 + 24) & 65535,r30
.section .rodata
.long baz_mix + 4
.long datalabel baz_mix2 + 48
.long datalabel baz_mixboth + 400
.long baz_mixboth + 420
.long baz_mixboth2 + 248
.long datalabel baz_mixboth2 + 240
.long baz_mixwithout
! Same as all of the above, but where the symbol is not an ISA32 one.
.data
.global dfoo
dfoo:
.long 0
.long (datalabel dfoo + 8)
.global dfooboth
dfooboth:
.long 0
.long (datalabel dfooboth + 16)
.long (dfooboth + 12)
.global dfooboth2
dfooboth2:
.long 0
.long (dfooboth2 + 12)
.long (datalabel dfooboth2 + 16)
.global dfoowithout
dfoowithout:
.long 0
.long (dfoowithout + 24)
.global dfoo_other
dfoo_other:
.long 0
.global dfoo_otherboth
dfoo_otherboth:
.long 0
.global dfoo_otherboth2
dfoo_otherboth2:
.long 0
.global dfoo_otherwithout
dfoo_otherwithout:
.long 0
.section .rodata
.long datalabel dfoo_other + 4
.long datalabel dfoo_otherboth + 40
.long dfoo_otherboth + 24
.long dfoo_otherboth2 + 24
.long datalabel dfoo_otherboth2 + 40
.long dfoo_otherwithout
.data
! Same as above, mixing references from same and other section.
.global dfoo_mix
dfoo_mix:
.long 0
.long (datalabel dfoo_mix + 8)
.global dfoo_mix2
dfoo_mix2:
.long 0
.long (dfoo_mix2 + 8)
.global dfoo_mixboth
dfoo_mixboth:
.long 0
.long (datalabel dfoo_mixboth + 80)
.long (dfoo_mixboth + 80)
.global dfoo_mixboth2
dfoo_mixboth2:
.long 0
.long (dfoo_mixboth2 + 64)
.long (datalabel dfoo_mixboth2 + 64)
.global dfoo_mixwithout
dfoo_mixwithout:
.long 0
.long (dfoo_mixwithout + 42)
.global dfoo_mixwithout2
dfoo_mixwithout2:
.long 0
.long (dfoo_mixwithout2 + 24)
.section .rodata
.long dfoo_mix + 4
.long datalabel dfoo_mix2 + 48
.long datalabel dfoo_mixboth + 400
.long dfoo_mixboth + 420
.long dfoo_mixboth2 + 248
.long datalabel dfoo_mixboth2 + 240
.long dfoo_mixwithout
! Same as above, referencing symbol in other file (reference only from
! this to other file).
.text
movi (datalabel dbarboth + 16) & 65535,r40
movi (dbarboth + 12) & 65535,r40
movi (dbarboth2 + 12) & 65535,r40
movi (datalabel dbarboth2 + 16) & 65535,r40
movi (dbarwithout + 24) & 65535,r30
.data
.long (datalabel dbar + 8)
.long datalabel dbar_other + 4
.long datalabel dbar_otherboth + 40
.long dbar_otherboth + 24
.long dbar_otherboth2 + 24
.long datalabel dbar_otherboth2 + 40
.long dbar_otherwithout
.text
movi (datalabel dbar_mix + 8) & 65535,r30
movi (dbar_mix2 + 8) & 65535,r30
movi (datalabel dbar_mixboth + 80) & 65535,r30
movi (dbar_mixboth + 80) & 65535,r30
movi (dbar_mixboth2 + 64) & 65535,r30
movi (datalabel dbar_mixboth2 + 64) & 65535,r30
movi (dbar_mixwithout + 42) & 65535,r30
movi (dbar_mixwithout2 + 24) & 65535,r30
.data
.long dbar_mix + 4
.long datalabel dbar_mix2 + 48
.long datalabel dbar_mixboth + 400
.long dbar_mixboth + 420
.long dbar_mixboth2 + 248
.long datalabel dbar_mixboth2 + 240
.long dbar_mixwithout
! Same as above, referencing symbol in other file *and* within that file.
.text
movi (datalabel dbazboth + 16) & 65535,r40
movi (dbazboth + 12) & 65535,r40
movi (dbazboth2 + 12) & 65535,r40
movi (datalabel dbazboth2 + 16) & 65535,r40
movi (dbazwithout + 24) & 65535,r30
.data
.long (datalabel dbaz + 8)
.long datalabel dbaz_other + 4
.long datalabel dbaz_otherboth + 40
.long dbaz_otherboth + 24
.long dbaz_otherboth2 + 24
.long datalabel dbaz_otherboth2 + 40
.long dbaz_otherwithout
.text
movi (datalabel dbaz_mix + 8) & 65535,r30
movi (dbaz_mix2 + 8) & 65535,r30
movi (datalabel dbaz_mixboth + 80) & 65535,r30
movi (dbaz_mixboth + 80) & 65535,r30
movi (dbaz_mixboth2 + 64) & 65535,r30
movi (datalabel dbaz_mixboth2 + 64) & 65535,r30
movi (dbaz_mixwithout + 42) & 65535,r30
movi (dbaz_mixwithout2 + 24) & 65535,r30
.data
.long dbaz_mix + 4
.long datalabel dbaz_mix2 + 48
.long datalabel dbaz_mixboth + 400
.long dbaz_mixboth + 420
.long dbaz_mixboth2 + 248
.long datalabel dbaz_mixboth2 + 240
.long dbaz_mixwithout