X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fincpath.c;h=efcd2c75e573e305b8bf088b8ec39cad6bcf919c;hp=eb097c18d9e563836dcf71ebf57d503e9d8b0aae;hb=7dd2f2ec5c400d576a7d156d44db7472d048838f;hpb=0e6d3ddb3220f8e9fe4bf7178b3114c0bbbccf4e diff --git a/gcc/incpath.c b/gcc/incpath.c index eb097c18d9e..efcd2c75e57 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. @@ -45,7 +45,7 @@ #define DIRS_EQ(A, B) ((A)->dev == (B)->dev \ && INO_T_EQ((A)->ino, (B)->ino)) #else -#define DIRS_EQ(A, B) (!strcmp ((A)->canonical_name, (B)->canonical_name)) +#define DIRS_EQ(A, B) (!filename_cmp ((A)->canonical_name, (B)->canonical_name)) #endif static const char dir_separator_str[] = { DIR_SEPARATOR, 0 }; @@ -147,7 +147,7 @@ add_standard_paths (const char *sysroot, const char *iprefix, now. */ if (sysroot && p->add_sysroot) continue; - if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len)) + if (!filename_ncmp (p->fname, cpp_GCC_INCLUDE_DIR, len)) { char *str = concat (iprefix, p->fname + len, NULL); if (p->multilib == 1 && imultilib) @@ -172,9 +172,17 @@ 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 - && strncmp (p->fname, cpp_PREFIX, cpp_PREFIX_len) == 0) + && !filename_ncmp (p->fname, cpp_PREFIX, cpp_PREFIX_len)) { static const char *relocated_prefix; /* If this path starts with the configure-time prefix, @@ -374,6 +382,10 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose) void split_quote_chain (void) { + if (heads[QUOTE]) + free_path (heads[QUOTE], REASON_QUIET); + if (tails[QUOTE]) + free_path (tails[QUOTE], REASON_QUIET); heads[QUOTE] = heads[BRACKET]; tails[QUOTE] = tails[BRACKET]; heads[BRACKET] = NULL; @@ -468,6 +480,15 @@ register_include_chains (cpp_reader *pfile, const char *sysroot, cpp_set_include_chains (pfile, heads[QUOTE], heads[BRACKET], quote_ignores_source_dir); } + +/* Return the current chain of cpp dirs. */ + +struct cpp_dir * +get_added_cpp_dirs (int chain) +{ + return heads[chain]; +} + #if !(defined TARGET_EXTRA_INCLUDES) || !(defined TARGET_EXTRA_PRE_INCLUDES) static void hook_void_charptr_charptr_int (const char *sysroot ATTRIBUTE_UNUSED, const char *iprefix ATTRIBUTE_UNUSED,