https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110153

            Bug ID: 110153
           Summary: [modules] Static module mapper format cannot handle
                    header unit paths with spaces
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: boris at kolpackov dot net
  Target Milestone: ---

The static module mapper format (-fmodule-mapper=<file>[?<ident>], as described
here[1] and implemented in c++tools/resolver.cc) uses spaces to separate the
module names from BMI file names and as a result cannot handle header unit
names that contain spaces. While the header names that contain spaces are not
very likely, the header unit names include the directory components which could
plausibly contain spaces.

Possible ways to fix this that came to mind:

1. Use the same quoting/escaping mechanism as in the dynamic mapper (see the
libcody documentation[2]).

2. Currently the separator is either a space or a tab. We could change it to be
only tab (assuming that paths with tabs are a lot less likely than with
spaces).


[1] https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Module-Mapper.html
[2] https://github.com/urnathan/libcody#packet-encoding

Reply via email to