Can't compile lldb on opensuse 12 64

Hello,

I can’t compile lldb on opensuse linux 12 64bit.

I get many warnings and the error:

llvm[5]: Compiling Host.cpp for Release build
/home/cedric/llvmroot/src/llvm/tools/lldb/source/Host/linux/Host.cpp:344:30: error:
no matching function for call to ‘GetModuleSpecifications’
const size_t num_specs = ObjectFile::GetModuleSpecifications (filesp…
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/cedric/llvmroot/src/llvm/tools/lldb/source/Host/linux/…/…/…/include/lldb/Symbol/ObjectFile.h:183:5: note:
candidate function not viable: requires 4 arguments, but 3 were provided
GetModuleSpecifications (const FileSpec &file,
^
/home/cedric/llvmroot/src/llvm/tools/lldb/source/Host/linux/…/…/…/include/lldb/Symbol/ObjectFile.h:189:5: note:
candidate function not viable: requires 6 arguments, but 3 were provided
GetModuleSpecifications (const lldb_private::FileSpec& file,
^
1 error generated.

(Almost full log available.)

The configure I used:
configure --enable-cxx11--enable_optimized --disable_assertions

I could compile the latest clang++, libc++ etc. Only lldb won’t compile.

Any ideas?

Thanks

Hello,

I can't compile lldb on opensuse linux 12 64bit.

I get many warnings and the error:

llvm[5]: Compiling Host.cpp for Release build
/home/cedric/llvmroot/src/llvm/tools/lldb/source/Host/linux/Host.cpp:344:30:
error:
      no matching function for call to 'GetModuleSpecifications'
    const size_t num_specs = ObjectFile::GetModuleSpecifications (filesp...
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/cedric/llvmroot/src/llvm/tools/lldb/source/Host/linux/../../../include/lldb/Symbol/ObjectFile.h:183:5:
note:
      candidate function not viable: requires 4 arguments, but 3 were
provided
    GetModuleSpecifications (const FileSpec &file,
    ^
/home/cedric/llvmroot/src/llvm/tools/lldb/source/Host/linux/../../../include/lldb/Symbol/ObjectFile.h:189:5:
note:
      candidate function not viable: requires 6 arguments, but 3 were
provided
    GetModuleSpecifications (const lldb_private::FileSpec& file,
    ^
1 error generated.

(Almost full log available.)

The configure I used:
configure --enable-cxx11--enable_optimized --disable_assertions

I could compile the latest clang++, libc++ etc. Only lldb won't compile.

Any ideas?

I don't think you're doing anything wrong - it looks like an extra
parameter was added to the call and this case was missed.

Index: include/lldb/Symbol/ObjectFile.h

===================================================================
--- include/lldb/Symbol/ObjectFile.h (revision 186210)
+++ include/lldb/Symbol/ObjectFile.h (revision 186211)
@@ -182,6 +182,7 @@
     static size_t
     GetModuleSpecifications (const FileSpec &file,
                              lldb::offset_t file_offset,
+ lldb::offset_t file_size,
                              ModuleSpecList &specs);

Can you try passing in the file size ( filespec.GetByteSize() ) as the 3rd
parameter in linux/Host.cpp and see if that this fixes it?

Oh this is the fix I just sent. If you review rev 186211, it just needs a 0 there.

https://gist.github.com/TTimo/5996746

TTimo

Yeah, there's a bit of code in ObjectFile::GetModuleSpecifications() which does the FileSpec::GetByteSize() call for you if you pass in a 0 as a part of r186211 -- I committed Timothee's patch. Thanks!