From 330c01bfc6fa6721fd455911a966bce041df31d8 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Sun, 19 Nov 2017 15:36:47 +0100 Subject: [PATCH] Adjust testcase for PIE compilers one some systems GCC defaults to PIC/PIE code which is incompatible with a unannotated asm call to a function (getenv here). TCC doesn't support these PIC annotations (yet), so play some pre-processor games. --- tests/tcctest.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/tcctest.c b/tests/tcctest.c index d6fb7e2..000523e 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -3358,7 +3358,13 @@ void test_asm_call(void) would have a global symbol entry, not triggering the bug which is tested here). */ /* two pushes so stack remains aligned */ - asm volatile ("push %%rdi; push %%rdi; mov %0, %%rdi; call getenv; pop %%rdi; pop %%rdi" + asm volatile ("push %%rdi; push %%rdi; mov %0, %%rdi;" +#if 1 && !defined(__TINYC__) && (defined(__PIC__) || defined(__PIE__)) + "call getenv@plt;" +#else + "call getenv;" +#endif + "pop %%rdi; pop %%rdi" : "=a" (s) : "r" (str)); printf("asmd: %s\n", s); #endif