From d3722bf7325e1cf63215d69fda8d0667e4bb0321 Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Mon, 6 Nov 2017 17:24:57 +0000 Subject: [PATCH] collect2.c (add_lto_object): Compile for OBJECT_COFF. * collect2.c (add_lto_object): Compile for OBJECT_COFF. (scan_prog_file): Don't skip PASS_LTOINFO. Scan for LTO objects. From-SVN: r254460 --- gcc/ChangeLog | 5 +++++ gcc/collect2.c | 22 +++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9c3961a9f19..798cc3744fb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-11-06 David Edelsohn + + * collect2.c (add_lto_object): Compile for OBJECT_COFF. + (scan_prog_file): Don't skip PASS_LTOINFO. Scan for LTO objects. + 2017-11-06 David Malcolm PR jit/82826 diff --git a/gcc/collect2.c b/gcc/collect2.c index ddbd2be8bf8..7fccf12cf09 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -614,7 +614,7 @@ static const char *const target_machine = TARGET_MACHINE; Return 0 if not found, otherwise return its name, allocated with malloc. */ -#ifdef OBJECT_FORMAT_NONE +#if defined (OBJECT_FORMAT_NONE) || defined (OBJECT_FORMAT_COFF) /* Add an entry for the object file NAME to object file list LIST. New entries are added at the end of the list. The original pointer @@ -634,7 +634,7 @@ add_lto_object (struct lto_object_list *list, const char *name) list->last = n; } -#endif /* OBJECT_FORMAT_NONE */ +#endif /* Perform a link-time recompilation and relink if any of the object @@ -2750,8 +2750,10 @@ scan_prog_file (const char *prog_name, scanpass which_pass, LDFILE *ldptr = NULL; int sym_index, sym_count; int is_shared = 0; + int found_lto = 0; - if (which_pass != PASS_FIRST && which_pass != PASS_OBJ) + if (which_pass != PASS_FIRST && which_pass != PASS_OBJ + && which_pass != PASS_LTOINFO) return; #ifdef COLLECT_EXPORT_LIST @@ -2764,6 +2766,7 @@ scan_prog_file (const char *prog_name, scanpass which_pass, eliminate scan_libraries() function. */ do { + found_lto = 0; #endif /* Some platforms (e.g. OSF4) declare ldopen as taking a non-const char * filename parameter, even though it will not @@ -2806,6 +2809,19 @@ scan_prog_file (const char *prog_name, scanpass which_pass, ++name; #endif + if (which_pass == PASS_LTOINFO) + { + if (found_lto) + continue; + if (strncmp (name, "__gnu_lto_v1", 12) == 0) + { + add_lto_object (<o_objects, prog_name); + found_lto = 1; + break; + } + continue; + } + switch (is_ctor_dtor (name)) { #if TARGET_AIX_VERSION -- 2.30.2