public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug target/105649] New: Wrong .localentry address on powerpc64le with -fpatchable-function-entry=1 @ 2022-05-18 19:56 giuliano.belinassi at gmail dot com 2022-05-19 6:13 ` [Bug target/105649] " rguenth at gcc dot gnu.org ` (3 more replies) 0 siblings, 4 replies; 5+ messages in thread From: giuliano.belinassi at gmail dot com @ 2022-05-18 19:56 UTC (permalink / raw) To: gcc-bugs 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. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug target/105649] Wrong .localentry address on powerpc64le with -fpatchable-function-entry=1 2022-05-18 19:56 [Bug target/105649] New: Wrong .localentry address on powerpc64le with -fpatchable-function-entry=1 giuliano.belinassi at gmail dot com @ 2022-05-19 6:13 ` rguenth at gcc dot gnu.org 2022-05-19 13:23 ` giuliano.belinassi at gmail dot com ` (2 subsequent siblings) 3 siblings, 0 replies; 5+ messages in thread From: rguenth at gcc dot gnu.org @ 2022-05-19 6:13 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105649 Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-05-19 Ever confirmed|0 |1 Target| |powerpc64le Keywords| |wrong-code Status|UNCONFIRMED |NEW --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. That means that jumps to localentry will not be patchable. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug target/105649] Wrong .localentry address on powerpc64le with -fpatchable-function-entry=1 2022-05-18 19:56 [Bug target/105649] New: Wrong .localentry address on powerpc64le with -fpatchable-function-entry=1 giuliano.belinassi at gmail dot com 2022-05-19 6:13 ` [Bug target/105649] " rguenth at gcc dot gnu.org @ 2022-05-19 13:23 ` giuliano.belinassi at gmail dot com 2022-09-30 12:18 ` cvs-commit at gcc dot gnu.org 2022-09-30 12:34 ` linkw at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: giuliano.belinassi at gmail dot com @ 2022-05-19 13:23 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105649 --- Comment #2 from Giuliano Belinassi <giuliano.belinassi at gmail dot com> --- This issue is related to PR98125. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug target/105649] Wrong .localentry address on powerpc64le with -fpatchable-function-entry=1 2022-05-18 19:56 [Bug target/105649] New: Wrong .localentry address on powerpc64le with -fpatchable-function-entry=1 giuliano.belinassi at gmail dot com 2022-05-19 6:13 ` [Bug target/105649] " rguenth at gcc dot gnu.org 2022-05-19 13:23 ` giuliano.belinassi at gmail dot com @ 2022-09-30 12:18 ` cvs-commit at gcc dot gnu.org 2022-09-30 12:34 ` linkw at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: cvs-commit at gcc dot gnu.org @ 2022-09-30 12:18 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105649 --- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Kewen Lin <linkw@gcc.gnu.org>: https://gcc.gnu.org/g:c23b5006d3ffeda1a9edf5fd817765a6da3696ca commit r13-2984-gc23b5006d3ffeda1a9edf5fd817765a6da3696ca Author: Kewen Lin <linkw@linux.ibm.com> Date: Fri Sep 30 07:16:49 2022 -0500 rs6000: Rework ELFv2 support for -fpatchable-function-entry* [PR99888] As PR99888 and its related show, the current support for -fpatchable-function-entry on powerpc ELFv2 doesn't work well with global entry existence. For example, with one command line option -fpatchable-function-entry=3,2, it got below w/o this patch: .LPFE1: nop nop .type foo, @function foo: nop .LFB0: .cfi_startproc .LCF0: 0: addis 2,12,.TOC.-.LCF0@ha addi 2,2,.TOC.-.LCF0@l .localentry foo,.-foo , the assembly is unexpected since the patched nops have no effects when being entered from local entry. This patch is to update the nops patched before and after local entry, it looks like: .type foo, @function foo: .LFB0: .cfi_startproc .LCF0: 0: addis 2,12,.TOC.-.LCF0@ha addi 2,2,.TOC.-.LCF0@l nop nop .localentry foo,.-foo nop PR target/99888 PR target/105649 gcc/ChangeLog: * doc/invoke.texi (option -fpatchable-function-entry): Adjust the documentation for PowerPC ELFv2 ABI dual entry points. * config/rs6000/rs6000-internal.h (rs6000_print_patchable_function_entry): New function declaration. * config/rs6000/rs6000-logue.cc (rs6000_output_function_prologue): Support patchable-function-entry by emitting nops before and after local entry for the function that needs global entry. * config/rs6000/rs6000.cc (rs6000_print_patchable_function_entry): Skip the function that needs global entry till global entry has been emitted. * config/rs6000/rs6000.h (struct machine_function): New bool member global_entry_emitted. gcc/testsuite/ChangeLog: * gcc.target/powerpc/pr99888-1.c: New test. * gcc.target/powerpc/pr99888-2.c: New test. * gcc.target/powerpc/pr99888-3.c: New test. * gcc.target/powerpc/pr99888-4.c: New test. * gcc.target/powerpc/pr99888-5.c: New test. * gcc.target/powerpc/pr99888-6.c: New test. * c-c++-common/patchable_function_entry-default.c: Adjust for powerpc_elfv2 to avoid compilation error. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug target/105649] Wrong .localentry address on powerpc64le with -fpatchable-function-entry=1 2022-05-18 19:56 [Bug target/105649] New: Wrong .localentry address on powerpc64le with -fpatchable-function-entry=1 giuliano.belinassi at gmail dot com ` (2 preceding siblings ...) 2022-09-30 12:18 ` cvs-commit at gcc dot gnu.org @ 2022-09-30 12:34 ` linkw at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: linkw at gcc dot gnu.org @ 2022-09-30 12:34 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105649 Kewen Lin <linkw at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |DUPLICATE CC| |linkw at gcc dot gnu.org Status|NEW |RESOLVED --- Comment #4 from Kewen Lin <linkw at gcc dot gnu.org> --- r13-2984 makes gcc emit error for -fpatchable-function-entry=1 on ppc64le if the relavant function needs dual entry, I think we can close this one. *** This bug has been marked as a duplicate of bug 99888 *** ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-09-30 12:34 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-05-18 19:56 [Bug target/105649] New: Wrong .localentry address on powerpc64le with -fpatchable-function-entry=1 giuliano.belinassi at gmail dot com 2022-05-19 6:13 ` [Bug target/105649] " rguenth at gcc dot gnu.org 2022-05-19 13:23 ` giuliano.belinassi at gmail dot com 2022-09-30 12:18 ` cvs-commit at gcc dot gnu.org 2022-09-30 12:34 ` linkw at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).