https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105649
Bug ID: 105649 Summary: Wrong .localentry address on powerpc64le with -fpatchable-function-entry=1 Product: gcc Version: 11.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: giuliano.belinassi at gmail dot com Target Milestone: --- (this bug triggered PR105647) With the following input file: ``` struct WinsockInterfaceClass { WinsockInterfaceClass(void); virtual int Get_Protocol(void) { return 0; }; }; WinsockInterfaceClass::WinsockInterfaceClass(void) { } ``` Saved as test.C, compiling with > powerpc64le-suse-linux-gcc-11 -c -fpatchable-function-entry=1 test.C Results in the following error: ``` /tmp/cczW6LfZ.s: Assembler messages: /tmp/cczW6LfZ.s:56: Error: .localentry expression for `_ZN21WinsockInterfaceClassC2Ev' is not a valid power of 2 ``` The reason for that maybe is because the addition of nops cause the address of .localentry to be shifted according to how many nops inserted. OTOH > powerpc64le-suse-linux-gcc-11 -c -fpatchable-function-entry=2 test.C works.