From: Jonathan Wakely Date: Tue, 18 Nov 2025 13:19:53 +0000 (+0000) Subject: c++: Handle absolute path for CMI output directory [PR122677] X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1cf465bdbe587b1ccd8feb05b9b3878163708fe;p=thirdparty%2Fgcc.git c++: Handle absolute path for CMI output directory [PR122677] When trying to create each directory component of an absolute path, the first call to mkdir uses a path of "" which gives an ENOENT error. This causes the create_dirs function to return without creating anything. This commit skips past the leading slashes of an absolute path, so that the first call to mkdir is for an actual directory name, not an empty string. gcc/cp/ChangeLog: PR c++/122677 * module.cc (create_dirs): Skip past any leading slashes. --- diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index 017bacdf223..40f592b7a2f 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -4941,8 +4941,13 @@ maybe_add_cmi_prefix (const char *to, size_t *len_p = NULL) static void create_dirs (char *path) { + char *base = path; + /* Skip past initial slashes of absolute path. */ + while (IS_DIR_SEPARATOR (*base)) + base++; + /* Try and create the missing directories. */ - for (char *base = path; *base; base++) + for (; *base; base++) if (IS_DIR_SEPARATOR (*base)) { char sep = *base;