Using lbasename ensures that the build path does not end up in the
module file.

Regtested on x86_64-pc-linux-gnu, committed to trunk. Will shortly
backport to the 6 and 7 branches as well.

2018-02-13  Alastair McKinstry  <alastair.mckins...@sceal.ie>
            Janne Blomqvist  <j...@gcc.gnu.org>

        * module.c (dump_module): Use lbasename to ensure that module
        files are reproducible.
---
 gcc/fortran/module.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index b120501..c833e67 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -6148,8 +6148,10 @@ dump_module (const char *name, int dump_flag)
     gfc_fatal_error ("Can't open module file %qs for writing at %C: %s",
                     filename_tmp, xstrerror (errno));
 
+  /* Use lbasename to ensure module files are reproducible regardless
+     of the build path (see the reproducible builds project).  */
   gzprintf (module_fp, "GFORTRAN module version '%s' created from %s\n",
-           MOD_VERSION, gfc_source_file);
+           MOD_VERSION, lbasename (gfc_source_file));
 
   /* Write the module itself.  */
   iomode = IO_OUTPUT;
-- 
2.7.4

Reply via email to