[cfe-dev] module map help - duplicate symbol definitions
Richard Smith
richard at metafoo.co.uk
Mon Jan 26 17:41:32 PST 2015
On Mon, Jan 26, 2015 at 12:22 PM, Thompson, John
<John_Thompson at playstation.sony.com> wrote:
> -fdiagnostics-show-note-include-stack didn’t produce any additional
> messages.
You should see some additional notes, at least. If not, something very
weird is going on.
> Basically I have the case where I have an umbrella header in the top-level
> include directory, and the sub headers in a subdirectory:
>
>
>
> fios2.h
>
> fios2/fios2_file1.h
>
> fios2/fios2_file2.h // etc.
>
> fios2/subdir/fios2_file3.h // etc.
>
>
>
> In the map:
>
>
>
> module ps4 {
>
> // ...
>
> module fios2_impl {
>
> umbrella "../include_common/fios2"
Your module map file appears not to be in the directory containing the
headers (nor a parent directory of that directory). That won't work
very well; we won't necessarily find this module map file implicitly
when we see an include naming a file within it. Try adding a
-fmodule-map-file= command-line argument pointing at this file.
> export *
>
> }
>
> module fios2 {
>
> header "../include_common/fios2.h"
>
> export *
>
> }
>
> }
>
>
>
> I also tried:
>
>
>
> module ps4 {
>
> // ...
>
> module fios2_impl {
>
> header "../include_common/fios2.h"
>
> umbrella "../include_common/fios2"
>
> export *
>
> }
>
> }
>
>
>
> All the headers involved are accounted for in the module map.
>
>
>
> The error message only occurs when I include one of the sub header files in
> a stub C++ source file from my test bed, i.e.:
>
>
>
> #include <fios2/fios2_file1.h>
>
>
>
> Can I not include sub headers from a module with an umbrella?
>
>
>
> If I can, there seems to be some problem, since all headers are accounted
> for.
>
>
>
> If I can’t include sub headers, this might be a problem for users, as they
> might want to avoid the umbrella header.
>
>
>
> Thanks.
>
>
>
> -John
>
>
>
>
>
> From: Sean Silva [mailto:chisophugis at gmail.com]
> Sent: Saturday, January 24, 2015 7:15 AM
> To: Thompson, John
> Cc: cfe-dev at cs.uiuc.edu
> Subject: Re: [cfe-dev] module map help - duplicate symbol definitions
>
>
>
> You can use -fdiagnostics-show-note-include-stack to help debug this sort of
> thing. It is likely because a header is being picked up through a module,
> but also through a regular include. E.g. your header file might be getting
> pulled into a module without being declared as such in the module map; it
> will thus be pulled into the module, but clang won't know to grab the module
> when it sees an include of the header, so you can end up simultaneously
> having the header #include'd but also having it imported through the module.
>
>
>
> -- Sean Silva
>
>
>
> On Fri, Jan 23, 2015 at 11:29 PM, Thompson, John
> <John_Thompson at playstation.sony.com> wrote:
>
> I’m trying to create a module map, but I keep getting duplicate symbol
> errors for the same source line. What does this mean?
>
>
>
> For example:
>
>
>
> orbis-clang -c -I"D:\usr\local\psp2\ORBIS SDKs\2.000_pre_mod" -fmodules
> -fcxx-modules -fmodules-cache-path=./cache_path-o
> target_include_common_fios2_srcfios2_debug_h.o
> target/include_common/fios2/srcfios2_debug_h.cpp
>
> In file included from target/include_common/fios2/srcfios2_debug_h.cpp:1:
>
> In file included from D:\usr\local\psp2\ORBIS
> SDKs\2.000_pre_mod/target/include\../include_common/fios2/fios2_debug.h:13:
>
> D:\usr\local\psp2\ORBIS
> SDKs\2.000_pre_mod/target/include\../include_common/fios2/fios2_types.h:153:14:
> error:
>
> redefinition of 'SceFiosOpFlags'
>
> typedef enum SceFiosOpFlags
>
> ^
>
> D:\usr\local\psp2\ORBIS
> SDKs\2.000_pre_mod/target/include\../include_common/fios2/fios2_types.h:153:14:
> note: previous
>
> definition is here
>
> typedef enum SceFiosOpFlags
>
> ^
>
>
>
> Thanks.
>
>
>
> -John
>
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
More information about the cfe-dev
mailing list