From 9f47a24e79fbd0b73f65444c8c39d783e36f3a28 Mon Sep 17 00:00:00 2001
From: Martin Thuresson <martinthuresson@gcc.gnu.org>
Date: Fri, 13 May 2011 15:57:20 +0000
Subject: [PATCH] re PR gcov-profile/47793 (Relative path in fprofile-use turns
 into absolute path)

2011-05-13  Martin Thuresson  <martint@google.com>

	PR gcov-profile/47793
	* libgcov.c (gcov_exit): Support relative profile paths.
	* doc/invoke.texi (-fprofile-dir): Update for above change.

2011-05-13  Martin Thuresson  <martint@google.com>

	PR gcov-profile/47793
	* gcc.dg/pr47793.c: New.

From-SVN: r173735
---
 gcc/ChangeLog                  |  7 +++++++
 gcc/doc/invoke.texi            |  2 +-
 gcc/libgcov.c                  |  5 +++--
 gcc/testsuite/ChangeLog        |  5 +++++
 gcc/testsuite/gcc.dg/pr47793.c | 12 ++++++++++++
 5 files changed, 28 insertions(+), 3 deletions(-)
 create mode 100644 gcc/testsuite/gcc.dg/pr47793.c

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 004440cef485..b8ee6d38d8b0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-05-13  Martin Thuresson  <martint@google.com>
+
+	PR gcov-profile/47793
+	* libgcov.c (gcov_exit): Support relative profile paths.
+	* doc/invoke.texi (-fprofile-dir): Update for above change.
+
 2011-05-13  Richard Guenther  <rguenther@suse.de>
 
 	* gimple.c (gimple_canonical_types_compatible_p): Do not use
@@ -102,6 +108,7 @@
 	* configure.ac: Use AS_HELP_STRING throughout.
 	* configure: Regenerate.
 
+>>>>>>> .r173734
 2011-05-12  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* config/i386/i386.c (ix86_save_reg): Change maybe_eh_return to bool.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index ddc34de38af9..aee1e6b1fc36 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -7751,7 +7751,7 @@ Set the directory to search for the profile data files in to @var{path}.
 This option affects only the profile data generated by
 @option{-fprofile-generate}, @option{-ftest-coverage}, @option{-fprofile-arcs}
 and used by @option{-fprofile-use} and @option{-fbranch-probabilities}
-and its related options.
+and its related options.  Both absolute and relative paths can be used.
 By default, GCC will use the current directory as @var{path}, thus the
 profile data file will appear in the same directory as the object file.
 
diff --git a/gcc/libgcov.c b/gcc/libgcov.c
index 7d1f6d052900..b39ef49343f5 100644
--- a/gcc/libgcov.c
+++ b/gcc/libgcov.c
@@ -283,8 +283,9 @@ gcov_exit (void)
 	      }
         }
       /* Update complete filename with stripped original. */
-      if (!IS_DIR_SEPARATOR (*fname) && !HAS_DRIVE_SPEC(fname))
-	{
+      if (prefix_length != 0 && !IS_DIR_SEPARATOR (*fname))
+        {
+          /* If prefix is given, add directory separator.  */
 	  strcpy (gi_filename_up, "/");
 	  strcpy (gi_filename_up + 1, fname);
 	}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9c3552a85503..9340d919f588 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-05-13  Martin Thuresson  <martint@google.com>
+
+	PR gcov-profile/47793
+	* gcc.dg/pr47793.c: New.
+
 2011-05-12  Jakub Jelinek  <jakub@redhat.com>
 
 	PR tree-optimization/48975
diff --git a/gcc/testsuite/gcc.dg/pr47793.c b/gcc/testsuite/gcc.dg/pr47793.c
new file mode 100644
index 000000000000..da6b6eab6462
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr47793.c
@@ -0,0 +1,12 @@
+/* Bug pr47793: Allow relative paths in profile-generate.  */
+/* { dg-do run } */
+/* { dg-options "-O -fprofile-generate=./" } */
+/* { dg-final { scan-file pr47793.gcda "."} } */
+
+int
+main(void)
+{
+  return 0;
+}
+
+/* { dg-final { cleanup-coverage-files } } */
-- 
GitLab