https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99530
Bug ID: 99530
Summary: [i386] 'P' inline assembly operand modifier should
obey -fno-plt
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: thiago at kde dot org
Target Milestone: ---
$ cat test.c
extern void f(void);
void g() { asm("call %P0 ; asm" : : "X" (f)); }
int h() { f(); return 0; }
The normal modes work:
$ gcc -fno-pic -S -o - -O2 test.c| grep call
call f ; asm
call f
$ gcc -fPIC -S -o - -O2 test.c| grep call
call f@PLT ; asm
call f@PLT
But the -fno-plt modes still generate PLT references:
$ gcc -fno-pic -fno-plt -S -o - -O2 test.c| grep call
call f ; asm
call *f@GOTPCREL(%rip)
$ gcc -fPIC -fno-plt -S -o - -O2 test.c| grep call
call f@PLT ; asm
call *f@GOTPCREL(%rip)