[cfe-dev] module map help - duplicate symbol definitions

Sean Silva chisophugis at gmail.com
Tue Jan 27 03:41:36 PST 2015


On Mon, Jan 26, 2015 at 8:22 PM, Thompson, John <
John_Thompson at playstation.sony.com> wrote:

>  -fdiagnostics-show-note-include-stack didn’t produce any additional
> messages.
>
>
>
> 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"
>
>     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?
>

You should be able to. I have attached a zip file with a test. A #include
of the subheader of the umbrella pulls in the entire module.

-- Sean Silva


>
>
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150127/fbcb3f56/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: testumbrella.zip
Type: application/zip
Size: 1670 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150127/fbcb3f56/attachment.zip>


More information about the cfe-dev mailing list