Add __pie__ and __PIE__ cpp macros

Richard Sandiford richard@codesourcery.com
Tue Mar 20 16:24:00 GMT 2007


Thanks to Kaveh's patch, we now consistently implement the equivalent of:

  %{fpic:-D__pic__=1 -D__PIC__=1}
  %{fPIC:-D__pic__=2 -D__PIC__=2}

This patch does the same for:

  %{fpie:-D__pie__=1 -D__PIE__=1}
  %{fPIE:-D__pie__=2 -D__PIE__=2}

I'll use it in a follow-up testsuite patch.

Bootstrapped & regression-tested on x86_64-linux-gnu.  Also regression-tested
on i586-wrs-vxworks.  OK to install?

Richard


gcc/
	* doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
	* c-cppbuiltin.c (c_cpp_builtins): Define them.

Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi	(revision 123084)
+++ gcc/doc/invoke.texi	(working copy)
@@ -14210,6 +14210,10 @@ generated position independent code can 
 Usually these options are used when @option{-pie} GCC option will be
 used during linking.
 
+@option{-fpie} and @option{-fPIE} both define the macros
+@code{__pie__} and @code{__PIE__}.  The macros have the value 1
+for @option{-fpie} and 2 for @option{-fPIE}.
+
 @item -fno-jump-tables
 @opindex fno-jump-tables
 Do not use jump tables for switch statements even where it would be
Index: gcc/c-cppbuiltin.c
===================================================================
--- gcc/c-cppbuiltin.c	(revision 123084)
+++ gcc/c-cppbuiltin.c	(working copy)
@@ -532,6 +532,11 @@ c_cpp_builtins (cpp_reader *pfile)
       builtin_define_with_int_value ("__pic__", flag_pic);
       builtin_define_with_int_value ("__PIC__", flag_pic);
     }
+  if (flag_pie)
+    {
+      builtin_define_with_int_value ("__pie__", flag_pie);
+      builtin_define_with_int_value ("__PIE__", flag_pie);
+    }
 
   if (flag_iso)
     cpp_define (pfile, "__STRICT_ANSI__");



More information about the Gcc-patches mailing list