[lldb-dev] [Bug 46716] New: Fix ODR violations in LLDB

via lldb-dev lldb-dev at lists.llvm.org
Tue Jul 14 08:44:34 PDT 2020


https://bugs.llvm.org/show_bug.cgi?id=46716

            Bug ID: 46716
           Summary: Fix ODR violations in LLDB
           Product: lldb
           Version: unspecified
          Hardware: PC
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: All Bugs
          Assignee: lldb-dev at lists.llvm.org
          Reporter: teemperor at gmail.com
                CC: jdevlieghere at apple.com, llvm-bugs at lists.llvm.org

LLDB fails to compile with latest GCC:

llvm-project/lldb/source/Plugins/Language/ObjC/NSArray.cpp:124: warning: type
‘struct DataDescriptor_32’ violates the C++ One Definition Rule [-Wodr]
  124 |   struct DataDescriptor_32 {
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp:281: note: a
different type is defined in another translation unit
  281 |   struct DataDescriptor_32 {
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSArray.cpp:125: note: the first
difference of corresponding definitions is field ‘_used’
  125 |     uint32_t _used;
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp:282: note: a
field of same name but different type is defined in another translation unit
  282 |     uint32_t _used : 26;
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSArray.cpp:131: warning: type
‘struct DataDescriptor_64’ violates the C++ One Definition Rule [-Wodr]
  131 |   struct DataDescriptor_64 {
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp:289: note: a
different type is defined in another translation unit
  289 |   struct DataDescriptor_64 {
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSArray.cpp:132: note: the first
difference of corresponding definitions is field ‘_used’
  132 |     uint64_t _used;
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp:290: note: a
field of same name but different type is defined in another translation unit
  290 |     uint64_t _used : 58;
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp:314: warning:
type ‘struct DataDescriptor_32’ violates the C++ One Definition Rule [-Wodr]
  314 |   struct DataDescriptor_32 {
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:183: note: a different
type is defined in another translation unit
  183 |   struct DataDescriptor_32 {
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp:315: note: the
first difference of corresponding definitions is field ‘_buffer’
  315 |     uint32_t _buffer;
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:184: note: a field
with different name is defined in another translation unit
  184 |     uint32_t _cow;
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp:327: warning:
type ‘struct DataDescriptor_64’ violates the C++ One Definition Rule [-Wodr]
  327 |   struct DataDescriptor_64 {
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:192: note: a different
type is defined in another translation unit
  192 |   struct DataDescriptor_64 {
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp:328: note: the
first difference of corresponding definitions is field ‘_buffer’
  328 |     uint64_t _buffer;
      | 
llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:193: note: a field
with different name is defined in another translation unit
  193 |     uint64_t _cow;
      | 
llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp:136:
warning: ‘LLDBSwigPython_GetIndexOfChildWithName’ violates the C++ One
Definition Rule [-Wodr]
  136 | extern "C" int LLDBSwigPython_GetIndexOfChildWithName(void
*implementor,
      | 
tools/lldb/bindings/LLDBWrapPython.cpp:79668:1: note:
‘LLDBSwigPython_GetIndexOfChildWithName’ was previously declared here
79668 | LLDBSwigPython_GetIndexOfChildWithName
      | ^
llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp:97:
warning: ‘LLDBSwigPythonCallTypeScript’ violates the C++ One Definition Rule
[-Wodr]
   97 | extern "C" bool LLDBSwigPythonCallTypeScript(
      | 
tools/lldb/bindings/LLDBWrapPython.cpp:79221:1: note:
‘LLDBSwigPythonCallTypeScript’ was previously declared here
79221 | LLDBSwigPythonCallTypeScript
      | ^
llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp:160:
warning: ‘LLDBSwigPythonCallCommandObject’ violates the C++ One Definition Rule
[-Wodr]
  160 | LLDBSwigPythonCallCommandObject(void *implementor, lldb::DebuggerSP
&debugger,
      | 
tools/lldb/bindings/LLDBWrapPython.cpp:79823:1: note:
‘LLDBSwigPythonCallCommandObject’ was previously declared here
79823 | LLDBSwigPythonCallCommandObject
      | ^
llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp:180:
warning: ‘LLDBSwigPython_GetRecognizedArguments’ violates the C++ One
Definition Rule [-Wodr]
  180 | LLDBSwigPython_GetRecognizedArguments(void *implementor,
      | 
tools/lldb/bindings/LLDBWrapPython.cpp:79916:1: note:
‘LLDBSwigPython_GetRecognizedArguments’ was previously declared here
79916 | LLDBSwigPython_GetRecognizedArguments

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20200714/5fef24dd/attachment.html>


More information about the lldb-dev mailing list