[PATCH] gcc.c: new macro POST_LINK_SPECS to be able to add additional
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 13 Nov 2015 06:39:49 +0000 (06:39 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 13 Nov 2015 06:39:49 +0000 (06:39 +0000)
steps after linking

* gcc.c (POST_LINK_SPEC): Define if not already defined.
(LINK_COMMAND_SPEC): Use post_link.
(post_link_spec): New, initialize to POST_LINK_SPEC.
(post_link): Initialize new static spec.
* doc/tm.texi.in (POST_LINK_SPEC): Document.
* doc/tm.texi: Regenerated.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230287 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/doc/tm.texi
gcc/doc/tm.texi.in
gcc/gcc.c

index 0c03eb0..8e472b0 100644 (file)
@@ -1,3 +1,12 @@
+2015-11-13  Andris Pavenis  <andris.pavenis@iki.fi>
+
+       * gcc.c (POST_LINK_SPEC): Define if not already defined.
+       (LINK_COMMAND_SPEC): Use post_link.
+       (post_link_spec): New, initialize to POST_LINK_SPEC.
+       (post_link): Initialize new static spec.
+       * doc/tm.texi.in (POST_LINK_SPEC): Document.
+       * doc/tm.texi: Regenerated.
+
 2015-11-13  David Malcolm  <dmalcolm@redhat.com>
 
        PR driver/67613
index 5609a98..4272c36 100644 (file)
@@ -375,6 +375,11 @@ The sequence in which libgcc and libc are specified to the linker.
 By default this is @code{%G %L %G}.
 @end defmac
 
+@defmac POST_LINK_SPEC
+Define this macro to add additional steps to be executed after linker.
+The default value of this macro is empty string.
+@end defmac
+
 @defmac LINK_COMMAND_SPEC
 A C string constant giving the complete command line need to execute the
 linker.  When you do this, you will need to update your port each time a
index 96ca063..9fcc0f7 100644 (file)
@@ -375,6 +375,11 @@ The sequence in which libgcc and libc are specified to the linker.
 By default this is @code{%G %L %G}.
 @end defmac
 
+@defmac POST_LINK_SPEC
+Define this macro to add additional steps to be executed after linker.
+The default value of this macro is empty string.
+@end defmac
+
 @defmac LINK_COMMAND_SPEC
 A C string constant giving the complete command line need to execute the
 linker.  When you do this, you will need to update your port each time a
index 6fceca2..7b1fd57 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -980,6 +980,10 @@ proper position among the other output files.  */
     %{%:sanitize(leak):" LIBLSAN_SPEC "}}}"
 #endif
 
+#ifndef POST_LINK_SPEC
+#define POST_LINK_SPEC ""
+#endif
+
 /*  This is the spec to use, once the code for creating the vtable
     verification runtime library, libvtv.so, has been created.  Currently
     the vtable verification runtime functions are in libstdc++, so we use
@@ -1022,7 +1026,7 @@ proper position among the other output files.  */
     %(mflib) " STACK_SPLIT_SPEC "\
     %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \
     %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\
-    %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}"
+    %{!nostdlib:%{!nostartfiles:%E}} %{T*}  \n%(post_link) }}}}}}"
 #endif
 
 #ifndef LINK_LIBGCC_SPEC
@@ -1064,6 +1068,7 @@ static const char *linker_name_spec = LINKER_NAME;
 static const char *linker_plugin_file_spec = "";
 static const char *lto_wrapper_spec = "";
 static const char *lto_gcc_spec = "";
+static const char *post_link_spec = POST_LINK_SPEC;
 static const char *link_command_spec = LINK_COMMAND_SPEC;
 static const char *link_libgcc_spec = LINK_LIBGCC_SPEC;
 static const char *startfile_prefix_spec = STARTFILE_PREFIX_SPEC;
@@ -1572,6 +1577,7 @@ static struct spec_list static_specs[] =
   INIT_STATIC_SPEC ("linker_plugin_file",      &linker_plugin_file_spec),
   INIT_STATIC_SPEC ("lto_wrapper",             &lto_wrapper_spec),
   INIT_STATIC_SPEC ("lto_gcc",                 &lto_gcc_spec),
+  INIT_STATIC_SPEC ("post_link",               &post_link_spec),
   INIT_STATIC_SPEC ("link_libgcc",             &link_libgcc_spec),
   INIT_STATIC_SPEC ("md_exec_prefix",          &md_exec_prefix),
   INIT_STATIC_SPEC ("md_startfile_prefix",     &md_startfile_prefix),