From: Andrew Pinski Date: Fri, 14 Jan 2022 22:58:38 +0000 (+0100) Subject: ada: Fix up handling of ghost units [PR104027] X-Git-Tag: basepoints/gcc-13~1714 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=952b7dbb418198f86d7829aaf9d7f9fc7714a8b3;p=thirdparty%2Fgcc.git 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 --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb index 25c58238dca0..f50feb2905db 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.