aboutsummaryrefslogtreecommitdiff
path: root/gcc/collect2.c
diff options
context:
space:
mode:
authorDavid Edelsohn <dje.gcc@gmail.com>2017-11-06 17:24:57 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2017-11-06 12:24:57 -0500
commitd3722bf7325e1cf63215d69fda8d0667e4bb0321 (patch)
treea94a16d8f2264f896b20e943b09c52386c468e7b /gcc/collect2.c
parent86907740aae15bf62cc0b74eb81d8f15caa210d6 (diff)
downloadgcc-d3722bf7325e1cf63215d69fda8d0667e4bb0321.zip
gcc-d3722bf7325e1cf63215d69fda8d0667e4bb0321.tar.gz
gcc-d3722bf7325e1cf63215d69fda8d0667e4bb0321.tar.bz2
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
Diffstat (limited to 'gcc/collect2.c')
-rw-r--r--gcc/collect2.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/gcc/collect2.c b/gcc/collect2.c
index ddbd2be..7fccf12 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 (&lto_objects, prog_name);
+ found_lto = 1;
+ break;
+ }
+ continue;
+ }
+
switch (is_ctor_dtor (name))
{
#if TARGET_AIX_VERSION