Building on Linux

Hi all,

I didn’t see an lldb-users mailing list, so I’m sending this here hoping that it’s an appropriate place. I’m having some trouble getting lldb to build under linux, specifically, I’m ending up with this output:

/home/tatd2/llvm/tools/lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp:155:50: error: too many arguments to function call, expected at most 6, have 9
NULL,
^~~~~
/usr/local/bin/…/lib/clang/3.1/include/stddef.h:47:14: note: expanded from macro ‘NULL’
#define NULL __null
^~~~~~
/home/tatd2/llvm/tools/lldb/source/Plugins/Platform/Linux/…/…/…/…/include/lldb/Core/ModuleList.h:402:5: note: ‘GetSharedModule’ declared here
static Error
^
/home/tatd2/llvm/tools/lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp:184:54: error: too many arguments to function call, expected at most 6, have 9
NULL,
^~~~~
/usr/local/bin/…/lib/clang/3.1/include/stddef.h:47:14: note: expanded from macro ‘NULL’
#define NULL __null
^~~~~~
/home/tatd2/llvm/tools/lldb/source/Plugins/Platform/Linux/…/…/…/…/include/lldb/Core/ModuleList.h:402:5: note: ‘GetSharedModule’ declared here
static Error
^
6 warnings and 2 errors generated.

I’m not really sure where to go to try and sort this out. I’d really appreciate any hints on this front.

Thanks

Tom Davie

% svn commit
Sending lldb.xcodeproj/project.pbxproj
Sending source/Plugins/Platform/FreeBSD/PlatformFreeBSD.cpp
Sending source/Plugins/Platform/Linux/PlatformLinux.cpp
Sending source/Plugins/Platform/Linux/PlatformLinux.h
Sending source/lldb.cpp
Transmitting file data .....
Committed revision 151539.

Fixed!

I also changed the Mac build to always build PlatformLinux, PlatformFreeBSD and the POSIX-DYLD plug-ins to help catch these things in the future.

Thanks for the fix Greg, unfortunately, there appears to still be an issue here re linking:

llvm[3]: Linking Release+Asserts Shared Library liblldb.so
/home/tatd2/build/Release+Asserts/lib/liblldbInitAndLog.a(lldb.o): In function lldb_private::Initialize()': /home/tatd2/llvm/tools/lldb/source/lldb.cpp:(.text+0xdf): undefined reference to PlatformFreeBSD::Initialize()’

(and similarly in Terminate)

Cheers

Tom Davie

if (*ra4 != 0xffc78948) { return false; }

I am not sure how the makefile system works, but it sounds like the PlatformFreeBSD .a file isn't being built on linux when it should be.

Try this out and let me know how things go:

platform.patch (645 Bytes)

I had to apply the attached patch as well to get it linked properly on FreeBSD.

Mark

lib.patch (1.24 KB)

They key question is, does this patch work for everyone? If so I will commit it.

We know freebsd works. Is the linux build good with this patch?

I didn't have time earlier to compile for linux. I just did a linux build with the two patches and got a clean build. A quick smoke test appeared to work as well.

Mark

Greg Clayton <gclayton <at> apple.com> writes:

I also changed the Mac build to always build PlatformLinux,
PlatformFreeBSD and the POSIX-DYLD plug-ins
to help catch these things in the future.

Hi,

On Linux with the latest revision 151625 I get:

llvm[3]: Linking Debug+Asserts Shared Library liblldb.so
/usr/local/google/home/dvyukov/llvm/Debug+Asserts/lib/
liblldbInitAndLog.a(lldb.o): In function `lldb_private::Initialize()':
/usr/local/google/home/dvyukov/llvm/tools/lldb/source/
lldb.cpp:110: undefined reference to `PlatformFreeBSD::Initialize()'
/usr/local/google/home/dvyukov/llvm/Debug+Asserts/lib/
liblldbInitAndLog.a(lldb.o): In function `lldb_private::Terminate()':
/usr/local/google/home/dvyukov/llvm/tools/lldb/source/
lldb.cpp:189: undefined reference to `PlatformFreeBSD::Terminate()'

Try it now.

% svn commit source/Plugins/Platform/Makefile lib/Makefile
Sending lib/Makefile
Sending source/Plugins/Platform/Makefile
Transmitting file data ..
Committed revision 151642.