From c5698d9fdbf23c990473f383da45580515114ca1 Mon Sep 17 00:00:00 2001 From: doko Date: Thu, 26 Jan 2012 23:34:58 +0000 Subject: [PATCH] 2012-01-27 Matthias Klose * gcc.c (add_sysrooted_prefix): Remove trailing dir separator from system root. * incpath.c (add_standard_paths): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183591 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/gcc.c | 10 +++++++++- gcc/incpath.c | 12 ++++++++++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d849d96d6c8..82fc2ad5d5b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-01-27 Matthias Klose + + * gcc.c (add_sysrooted_prefix): Remove trailing dir separator from + system root. + * incpath.c (add_standard_paths): Likewise. + 2012-01-27 Richard Henderson * config/m68k/m68k.c (TARGET_ATOMIC_TEST_AND_SET_TRUEVAL): New. diff --git a/gcc/gcc.c b/gcc/gcc.c index 6cdd9592cd5..bea9b464207 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -2445,9 +2445,17 @@ add_sysrooted_prefix (struct path_prefix *pprefix, const char *prefix, if (target_system_root) { + char *sysroot_no_trailing_dir_separator = xstrdup (target_system_root); + size_t sysroot_len = strlen (target_system_root); + + if (sysroot_len > 0 + && target_system_root[sysroot_len - 1] == DIR_SEPARATOR) + sysroot_no_trailing_dir_separator[sysroot_len - 1] = '\0'; + if (target_sysroot_suffix) prefix = concat (target_sysroot_suffix, prefix, NULL); - prefix = concat (target_system_root, prefix, NULL); + prefix = concat (sysroot_no_trailing_dir_separator, prefix, NULL); + free (sysroot_no_trailing_dir_separator); /* We have to override this because GCC's notion of sysroot moves along with GCC. */ diff --git a/gcc/incpath.c b/gcc/incpath.c index 6b683a053dc..6693bf52450 100644 --- a/gcc/incpath.c +++ b/gcc/incpath.c @@ -1,6 +1,6 @@ /* Set up combined include path chain for the preprocessor. Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2012 Free Software Foundation, Inc. Broken out of cppinit.c and cppfiles.c and rewritten Mar 2003. @@ -166,7 +166,15 @@ add_standard_paths (const char *sysroot, const char *iprefix, /* Should this directory start with the sysroot? */ if (sysroot && p->add_sysroot) - str = concat (sysroot, p->fname, NULL); + { + char *sysroot_no_trailing_dir_separator = xstrdup (sysroot); + size_t sysroot_len = strlen (sysroot); + + if (sysroot_len > 0 && sysroot[sysroot_len - 1] == DIR_SEPARATOR) + sysroot_no_trailing_dir_separator[sysroot_len - 1] = '\0'; + str = concat (sysroot_no_trailing_dir_separator, p->fname, NULL); + free (sysroot_no_trailing_dir_separator); + } else if (!p->add_sysroot && relocated && !filename_ncmp (p->fname, cpp_PREFIX, cpp_PREFIX_len)) { -- 2.11.0