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

Thompson, John John_Thompson at playstation.sony.com
Mon Jan 26 12:46:45 PST 2015


I also have problems if I just put all the headers in separate modules.

From: cfe-dev-bounces at cs.uiuc.edu [mailto:cfe-dev-bounces at cs.uiuc.edu] On Behalf Of Thompson, John
Sent: Monday, January 26, 2015 12:22 PM
To: cfe-dev at cs.uiuc.edu
Subject: Re: [cfe-dev] module map help - duplicate symbol definitions

-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?

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<mailto: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<mailto: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<mailto: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/20150126/0f0a9afd/attachment.html>


More information about the cfe-dev mailing list