https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80759
--- Comment #34 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> --- One more data point: I tried to run the ms-sysv.exp tests on x86_64-apple-darwin and failed initially: FAIL: gcc.target/x86_64/abi/ms-sysv/ms-sysv.c -O2 "-DGEN_ARGS=-p0" (test for excess errors) Excess errors: /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c:168:Unknown pseudo-op: .global /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c:168:Rest of line ignored. 1st junk character valued 100 (d). /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S:51:Unknown pseudo-op: .global /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S:51:Rest of line ignored. 1st junk character valued 114 (r). /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S:73:Unknown pseudo-op: .global /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S:73:Rest of line ignored. 1st junk character valued 109 (m). /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S:96:Unknown pseudo-op: .global /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S:96:Rest of line ignored. 1st junk character valued 100 (d). /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S:97:Unknown pseudo-op: .cfi_startproc /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S:107:Unknown pseudo-op: .global /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S:107:Rest of line ignored. 1st junk character valued 100 (d). /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S:116:Unknown pseudo-op: .cfi_endproc There are two issues here: while gas understands .global, the Darwin as does not. However, globl is common to both (as can e.g. be seen in libffi/src/x86/sysv.S), so using it makes the test more portable. The .cfi_* pseudo-ops are another matter: the same file has this comment /* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */ so if frame info is really necessary, it would have to be hand-coded as in those files. It seems that it's not, though: just commenting .cfi_startproc and .cfi_endproc still lets the tests still PASS on x86_64-pc-linux-gnu. Older Solaris/x86 assemblers have the same issue, btw. I cannot right now test the patched tests on Darwin, but will have to do so later tonight at home. Rainer 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 --- 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 @@ -34,7 +34,7 @@ see the files COPYING3 and COPYING.RUNTI # endif # define FUNC(fn) \ - .global fn; \ + .globl fn; \ ELFFN_BEGIN(fn); \ fn: @@ -94,7 +94,7 @@ FUNC_END(mem_to_regs) # NOTE: Not MT safe FUNC(do_test_unaligned) - .cfi_startproc + #.cfi_startproc # The below alignment checks are to verify correctness of the test # its self. @@ -113,7 +113,7 @@ FUNC(do_test_aligned) L0: popf jmp do_test_body - .cfi_endproc + #.cfi_endproc FUNC_END(do_test_aligned) FUNC_END(do_test_unaligned) 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 --- 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 @@ -156,7 +156,7 @@ static const char *argv0; #endif #define FUNC_BEGIN(fn) \ - " .global " fn "\n" \ + " .globl " fn "\n" \ ELFFN_BEGIN(fn) \ fn ":\n" #define FUNC_END(fn) ELFFN_END(fn)