diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 004440cef4850389a5e6b37b289e53624525b10a..b8ee6d38d8b0ef486b34b5610bf47f9891087e3f 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 ddc34de38af9dc17ae2597c381c85e9d80e289cb..aee1e6b1fc36a9c38e22e855ca24ed68d9ba3c1e 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 7d1f6d052900f96d251865f180f52738d8292e1a..b39ef49343f5c44283e19cfdb3dafd6936890781 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 9c3552a85503eebc709524e694fe317827f39cc0..9340d919f58847e0c449b20e0f6751dce22c970a 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 0000000000000000000000000000000000000000..da6b6eab64626466fd6c047667a8cd6329c0df29
--- /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 } } */