Hi.

During the compilation of chrome, I've noticed that they utilize 'cc' binary.
Because of that, I see LTO version check, but it would be quite useful to
see which file is affected.

Like:

lto1: fatal error: bytecode stream in file 
'obj/third_party/icu/source/common/icuuc.cmemory.o' generated with LTO version 
4.0 instead of the expected 6.0

Ready after it finishes regression tests?
Thanks,
Martin

>From a65988d01557606296f420968e921ef58fd193b2 Mon Sep 17 00:00:00 2001
From: marxin <mli...@suse.cz>
Date: Thu, 19 May 2016 14:17:03 +0200
Subject: [PATCH] LTO: display file name if LTO version check fails

gcc/ChangeLog:

2016-05-19  Martin Liska  <mli...@suse.cz>

	* lto-section-in.c (lto_get_section_data): Call
	lto_check_version with additional argument.
	* lto-streamer.c (lto_check_version): Add new argument.
	* lto-streamer.h (lto_check_version): Likewise.
---
 gcc/lto-section-in.c | 3 ++-
 gcc/lto-streamer.c   | 7 ++++---
 gcc/lto-streamer.h   | 2 +-
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/gcc/lto-section-in.c b/gcc/lto-section-in.c
index 93b82be..d8e74d7 100644
--- a/gcc/lto-section-in.c
+++ b/gcc/lto-section-in.c
@@ -168,7 +168,8 @@ lto_get_section_data (struct lto_file_decl_data *file_data,
     }
 
   lto_check_version (((const lto_header *)data)->major_version,
-		     ((const lto_header *)data)->minor_version);
+		     ((const lto_header *)data)->minor_version,
+		     file_data->file_name);
   return data;
 }
 
diff --git a/gcc/lto-streamer.c b/gcc/lto-streamer.c
index 5e35aac..bfde1fe 100644
--- a/gcc/lto-streamer.c
+++ b/gcc/lto-streamer.c
@@ -376,12 +376,13 @@ lto_orig_address_remove (tree t)
 /* Check that the version MAJOR.MINOR is the correct version number.  */
 
 void
-lto_check_version (int major, int minor)
+lto_check_version (int major, int minor, const char *file_name)
 {
   if (major != LTO_major_version || minor != LTO_minor_version)
     fatal_error (input_location,
-		 "bytecode stream generated with LTO version %d.%d instead "
-	         "of the expected %d.%d",
+		 "bytecode stream in file '%s' generated with LTO version "
+		 "%d.%d instead of the expected %d.%d",
+		 file_name,
 		 major, minor,
 		 LTO_major_version, LTO_minor_version);
 }
diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index 01c15ff..92efdb8 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -844,7 +844,7 @@ extern void lto_orig_address_map (tree, intptr_t);
 extern intptr_t lto_orig_address_get (tree);
 extern void lto_orig_address_remove (tree);
 #endif
-extern void lto_check_version (int, int);
+extern void lto_check_version (int, int, const char *);
 extern void lto_streamer_hooks_init (void);
 
 /* In lto-streamer-in.c */
-- 
2.8.2

Reply via email to