aboutsummaryrefslogtreecommitdiff
path: root/gcc/collect2.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2019-09-06 08:58:42 +0200
committerMartin Liska <marxin@gcc.gnu.org>2019-09-06 06:58:42 +0000
commit67f6e64994b49ec330708e1655065dbd9741e1d6 (patch)
tree46ebc6701f5d6390841af0ca16cc9e0c51bf23e2 /gcc/collect2.c
parentebd247d4b3813f3d1ab83d04e338ed566d10de3e (diff)
downloadgcc-67f6e64994b49ec330708e1655065dbd9741e1d6.zip
gcc-67f6e64994b49ec330708e1655065dbd9741e1d6.tar.gz
gcc-67f6e64994b49ec330708e1655065dbd9741e1d6.tar.bz2
Remove support for repo files (PR c++/91125).
2019-09-06 Martin Liska <mliska@suse.cz> PR c++/91125 * Makefile.in: Remove tlink.o. * collect2.c (do_link): New function isolated from do_tlink. (main): Use. * collect2.h (do_tlink): Remove declaration of do_tlink. * doc/extend.texi: Remove documentation of -frepo. * doc/invoke.texi: Likewise. * doc/sourcebuild.texi: Remove cleanup-repo-files. * tlink.c: Remove. 2019-09-06 Martin Liska <mliska@suse.cz> PR c++/91125 * c-common.c: Remove definition of flag_use_repository. * c-common.h: Likewise. * c-opts.c (c_common_handle_option): Do not handle OPT_frepo option. * c.opt: Mark the option with Deprecated. 2019-09-06 Martin Liska <mliska@suse.cz> PR c++/91125 * Make-lang.in: Remove repo.o. * config-lang.in: Likewise. * cp-tree.h (init_repo): Remove declarations of repo-related functions. (repo_emit_p): Likewise. (repo_export_class_p): Likewise. (finish_repo): Likewise. * decl2.c (import_export_class): Always set -1 value/ (mark_needed): Remove -frepo from comment. (import_export_decl): Similarly here. (c_parse_final_cleanups): Remove call of finish_repo. * lex.c (cxx_init): Remove call to init_repo. * optimize.c (can_alias_cdtor): Remove dead condition. * pt.c (push_template_decl_real): Update comment. (instantiate_decl): Remove dead code used for -frepo. * repo.c: Remove. 2019-09-06 Martin Liska <mliska@suse.cz> PR c++/91125 * g++.dg/parse/repo1.C: Remove. * g++.dg/rtti/repo1.C: Remove. * g++.dg/template/repo1.C: Remove. * g++.dg/template/repo10.C: Remove. * g++.dg/template/repo11.C: Remove. * g++.dg/template/repo2.C: Remove. * g++.dg/template/repo3.C: Remove. * g++.dg/template/repo4.C: Remove. * g++.dg/template/repo5.C: Remove. * g++.dg/template/repo6.C: Remove. * g++.dg/template/repo7.C: Remove. * g++.dg/template/repo8.C: Remove. * g++.dg/template/repo9.C: Remove. * g++.old-deja/g++.pt/instantiate4.C: Remove. * g++.old-deja/g++.pt/instantiate6.C: Remove. * g++.old-deja/g++.pt/repo1.C: Remove. * g++.old-deja/g++.pt/repo2.C: Remove. * g++.old-deja/g++.pt/repo3.C: Remove. * g++.old-deja/g++.pt/repo4.C: Remove. * lib/g++.exp: Remove removal of repo files. * lib/gcc-dg.exp: Likewise. * lib/obj-c++.exp: Likewise. From-SVN: r275450
Diffstat (limited to 'gcc/collect2.c')
-rw-r--r--gcc/collect2.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/gcc/collect2.c b/gcc/collect2.c
index e25e339..4972072 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -825,6 +825,30 @@ maybe_run_lto_and_relink (char **lto_ld_argv, char **object_lst,
else
post_ld_pass (false); /* No LTO objects were found, no temp file. */
}
+/* Entry point for linker invoation. Called from main in collect2.c.
+ LD_ARGV is an array of arguments for the linker. */
+
+static void
+do_link (char **ld_argv)
+{
+ struct pex_obj *pex;
+ const char *prog = "ld";
+ pex = collect_execute (prog, ld_argv, NULL, NULL,
+ PEX_LAST | PEX_SEARCH,
+ HAVE_GNU_LD && at_file_supplied);
+ int ret = collect_wait (prog, pex);
+ if (ret)
+ {
+ error ("ld returned %d exit status", ret);
+ exit (ret);
+ }
+ else
+ {
+ /* We have just successfully produced an output file, so assume that we
+ may unlink it if need be for now on. */
+ may_unlink_output_file = true;
+ }
+}
/* Main program. */
@@ -1704,7 +1728,7 @@ main (int argc, char **argv)
functions from precise cross reference insertions by the compiler. */
if (early_exit || ld1_filter != SCAN_NOTHING)
- do_tlink (ld1_argv, object_lst);
+ do_link (ld1_argv);
if (early_exit)
{
@@ -1762,10 +1786,10 @@ main (int argc, char **argv)
#endif
)
{
- /* Do tlink without additional code generation now if we didn't
+ /* Do link without additional code generation now if we didn't
do it earlier for scanning purposes. */
if (ld1_filter == SCAN_NOTHING)
- do_tlink (ld1_argv, object_lst);
+ do_link (ld1_argv);
if (lto_mode)
maybe_run_lto_and_relink (ld1_argv, object_lst, object, false);
@@ -1868,13 +1892,13 @@ main (int argc, char **argv)
fork_execute ("gcc", c_argv, at_file_supplied);
#ifdef COLLECT_EXPORT_LIST
- /* On AIX we must call tlink because of possible templates resolution. */
- do_tlink (ld2_argv, object_lst);
+ /* On AIX we must call link because of possible templates resolution. */
+ do_link (ld2_argv);
if (lto_mode)
maybe_run_lto_and_relink (ld2_argv, object_lst, object, false);
#else
- /* Otherwise, simply call ld because tlink is already done. */
+ /* Otherwise, simply call ld because link is already done. */
if (lto_mode)
maybe_run_lto_and_relink (ld2_argv, object_lst, object, true);
else