aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Pinski <apinski@marvell.com>2022-01-14 23:58:38 +0100
committerJakub Jelinek <jakub@redhat.com>2022-01-14 23:58:38 +0100
commit952b7dbb418198f86d7829aaf9d7f9fc7714a8b3 (patch)
treed9e2c03e6f1b1c5275dfc78b4074e41f0d97b09f /gcc
parentcc3b67e40140ec79f86e79a96d7fdd169b84faaf (diff)
downloadgcc-952b7dbb418198f86d7829aaf9d7f9fc7714a8b3.zip
gcc-952b7dbb418198f86d7829aaf9d7f9fc7714a8b3.tar.gz
gcc-952b7dbb418198f86d7829aaf9d7f9fc7714a8b3.tar.bz2
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 <apinski@marvell.com> PR ada/104027 * gnat1drv.adb (Gnat1drv): After Back_End.Gen_Or_Update_Object_File goto End_Of_Program.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/gnat1drv.adb5
1 files changed, 5 insertions, 0 deletions
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.