<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Fix ODR violations in LLDB"
   href="https://bugs.llvm.org/show_bug.cgi?id=46716">46716</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Fix ODR violations in LLDB
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>lldb
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>All Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>lldb-dev@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>teemperor@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>jdevlieghere@apple.com, llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>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</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>