[gcc r16-5399] c++: Handle absolute path for CMI output directory [PR122677]
Jonathan Wakely
redi@gcc.gnu.org
Tue Nov 18 17:14:19 GMT 2025
https://gcc.gnu.org/g:c1cf465bdbe587b1ccd8feb05b9b3878163708fe
commit r16-5399-gc1cf465bdbe587b1ccd8feb05b9b3878163708fe
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Tue Nov 18 13:19:53 2025 +0000
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:
---
gcc/cp/module.cc | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index 017bacdf2231..40f592b7a2ff 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;
More information about the Gcc-cvs
mailing list