From 952b7dbb418198f86d7829aaf9d7f9fc7714a8b3 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Fri, 14 Jan 2022 23:58:38 +0100 Subject: [PATCH] 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. --- gcc/ada/gnat1drv.adb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb index 25c5823..f50feb2 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. -- 2.7.4