Hi, this patch makes lto-wrapper to look for -flinker-output=rel and in this case confiugre lto1 in non-WHOPR mode + disable section renaming.
Bootstrapped/regtested x86_64-linux with rest of incremental link patchset. OK? * lto-wrapper.c (debug_objcopy): Add rename parameter; pass it down to simple_object_copy_lto_debug_sections. (run_gcc): Determine incremental LTO link time and configure lto1 into non-wpa mode, disable renaming of debug sections. Index: lto-wrapper.c =================================================================== --- lto-wrapper.c (revision 260042) +++ lto-wrapper.c (working copy) @@ -966,7 +966,7 @@ is returned. Return NULL on error. */ const char * -debug_objcopy (const char *infile) +debug_objcopy (const char *infile, bool rename) { const char *outfile; const char *errmsg; @@ -1008,7 +1008,7 @@ } outfile = make_temp_file ("debugobjtem"); - errmsg = simple_object_copy_lto_debug_sections (inobj, outfile, &err); + errmsg = simple_object_copy_lto_debug_sections (inobj, outfile, &err, rename); if (errmsg) { unlink_if_ordinary (outfile); @@ -1056,6 +1056,7 @@ bool have_offload = false; unsigned lto_argc = 0, ltoobj_argc = 0; char **lto_argv, **ltoobj_argv; + bool linker_output_rel = false; bool skip_debug = false; unsigned n_debugobj; @@ -1108,9 +1109,12 @@ file_offset = (off_t) loffset; } fd = open (filename, O_RDONLY | O_BINARY); + /* Linker plugin passes -fresolution and -flinker-output options. */ if (fd == -1) { lto_argv[lto_argc++] = argv[i]; + if (strcmp (argv[i], "-flinker-output=rel") == 0) + linker_output_rel = true; continue; } @@ -1175,6 +1179,11 @@ lto_mode = LTO_MODE_WHOPR; break; + case OPT_flinker_output_: + linker_output_rel = !strcmp (option->arg, "rel"); + break; + + default: break; } @@ -1191,6 +1200,9 @@ fputc ('\n', stderr); } + if (linker_output_rel) + no_partition = true; + if (no_partition) { lto_mode = LTO_MODE_LTO; @@ -1435,7 +1447,7 @@ for (i = 0; i < ltoobj_argc; ++i) { const char *tem; - if ((tem = debug_objcopy (ltoobj_argv[i]))) + if ((tem = debug_objcopy (ltoobj_argv[i], !linker_output_rel))) { obstack_ptr_grow (&argv_obstack, tem); n_debugobj++;