! 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