From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2153) id E27233858C39; Fri, 14 Jan 2022 23:02:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E27233858C39 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jakub Jelinek To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-6599] ada: Fix up handling of ghost units [PR104027] X-Act-Checkin: gcc X-Git-Author: Andrew Pinski X-Git-Refname: refs/heads/master X-Git-Oldrev: cc3b67e40140ec79f86e79a96d7fdd169b84faaf X-Git-Newrev: 952b7dbb418198f86d7829aaf9d7f9fc7714a8b3 Message-Id: <20220114230217.E27233858C39@sourceware.org> Date: Fri, 14 Jan 2022 23:02:17 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Jan 2022 23:02:18 -0000 https://gcc.gnu.org/g:952b7dbb418198f86d7829aaf9d7f9fc7714a8b3 commit r12-6599-g952b7dbb418198f86d7829aaf9d7f9fc7714a8b3 Author: Andrew Pinski Date: Fri Jan 14 23:58:38 2022 +0100 ada: Fix up handling of ghost units [PR104027] As reported, libgnat-12.so gets PT_GNU_STACK RWE, which means it doesn't work in some SELinux configurations. This is caused by the a-nbnbig.o file, which is a ghost unit and since r12-5670 the FE emits an object file for it, but exits before compile_file has a chance to finalize it e.g. with targetm.asm_out.file_end () that emits the .note.GNU-stack section on various linux targets. Fixed by not existing but instead returning early to the caller. 2022-01-14 Andrew Pinski PR ada/104027 * gnat1drv.adb (Gnat1drv): After Back_End.Gen_Or_Update_Object_File goto End_Of_Program. Diff: --- gcc/ada/gnat1drv.adb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb index 25c58238dca..f50feb2905d 100644 --- a/gcc/ada/gnat1drv.adb +++ b/gcc/ada/gnat1drv.adb @@ -1429,6 +1429,11 @@ begin Ecode := E_Success; Back_End.Gen_Or_Update_Object_File; + -- Use a goto instead of calling Exit_Program so that finalization + -- occurs normally. + + goto End_Of_Program; + -- Otherwise the unit is missing a crucial piece that prevents code -- generation.