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.
This commit is contained in:
Michael Matz
2017-11-19 15:36:47 +01:00
parent d0db21757a
commit 330c01bfc6

View File

@@ -3358,7 +3358,13 @@ void test_asm_call(void)
or libraries. We chose getenv here, which isn't used anywhere else
in this file. (If we used e.g. printf, which is used we already
would have a global symbol entry, not triggering the bug which is
tested here). */
tested here). */
/* two pushes so stack remains aligned */
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));