Use of .struct in do_test.S causes breakages when gas isn't the
assembler (e.g., Solaris). I also wasn't including TEST_ALWAYS_FLAGS in
my CFLAGS resulting in super-ugly log files. Finally, this patch
eliminates spam of "test unsupported" (limiting it to one printing).
Signed-off-by: Daniel Santos <daniel.san...@pobox.com>
---
.../gcc.target/x86_64/abi/ms-sysv/do-test.S | 26 +++++-----------------
.../gcc.target/x86_64/abi/ms-sysv/ms-sysv.c | 7 ++++++
.../gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp | 24 ++++++++++++--------
3 files changed, 27 insertions(+), 30 deletions(-)
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
index 1395235fd1e..967eb959fbc 100644
--- a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
+++ b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
@@ -46,22 +46,6 @@ fn:
# define MOVAPS movaps
# endif
-/* TODO: Is there a cleaner way to provide these offsets? */
- .struct 0
-test_data_save:
-
- .struct test_data_save + 224
-test_data_input:
-
- .struct test_data_save + 448
-test_data_output:
-
- .struct test_data_save + 672
-test_data_fn:
-
- .struct test_data_save + 680
-test_data_retaddr:
-
.text
regs_to_mem:
@@ -132,23 +116,23 @@ L0:
call regs_to_mem
# Load register with random data
- lea test_data + test_data_input(%rip), %rax
+ lea test_data + 224(%rip), %rax
call mem_to_regs
# Save original return address
pop %rax
- movq %rax, test_data + test_data_retaddr(%rip)
+ movq %rax, test_data + 680(%rip)
# Call the test function
- call *test_data + test_data_fn(%rip)
+ call *test_data + 672(%rip)
# Restore the original return address
- movq test_data + test_data_retaddr(%rip), %rcx
+ movq test_data + 680(%rip), %rcx
push %rcx
# Save test function return value and store resulting register values
push %rax
- lea test_data + test_data_output(%rip), %rax
+ lea test_data + 448(%rip), %rax
call regs_to_mem
# Restore registers
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
index 2a011f5103d..7cec312c386 100644
--- a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
+++ b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
@@ -346,6 +346,13 @@ int main (int argc, char *argv[])
assert (!((long)&test_data.regdata[REG_SET_INPUT] & 15));
assert (!((long)&test_data.regdata[REG_SET_OUTPUT] & 15));
+ /* Verify offsets hard-coded into assembly. */
+ assert (__builtin_offsetof (struct test_data, regdata[REG_SET_SAVE]) == 0);
+ assert (__builtin_offsetof (struct test_data, regdata[REG_SET_INPUT]) ==
224);
+ assert (__builtin_offsetof (struct test_data, regdata[REG_SET_OUTPUT]) ==
448);
+ assert (__builtin_offsetof (struct test_data, fn) == 672);
+ assert (__builtin_offsetof (struct test_data, retaddr) == 680);
+
while ((c = getopt (argc, argv, "s:f")) != -1)
{
switch (c)