[PATCH] Fix the --enable-shared build

Sanjoy Das sanjoy at playingwithpointers.com
Wed Jun 25 20:22:57 PDT 2014


Hi Rafael,

I get the build failure when building with g++ 4.9.0.  This is how I build:

"CXX=g++  ../configure --enable-optimized --enable-shared
--enable-targets=host && make -j60"

I haven't tried building with clang yet -- if you can successfully
build with clang then it could be an issue specific to gcc.  This is
the failure I get:

[snip]

make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/llvm-nm'
llvm[2]: Linking Release+Asserts executable llvm-symbolizer (without symbols)
llvm[2]: ======= Finished Linking Release+Asserts Executable
llvm-symbolizer (without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/llvm-symbolizer'
llvm[2]: Linking Release+Asserts executable llvm-size (without symbols)
llvm[2]: Linking Release+Asserts executable obj2yaml (without symbols)
llvm[2]: Linking Release+Asserts executable llvm-stress (without symbols)
llvm[2]: ======= Finished Linking Release+Asserts Executable llvm-size
(without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/llvm-size'
llvm[2]: ======= Finished Linking Release+Asserts Executable obj2yaml
(without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/obj2yaml'
llvm[2]: ======= Finished Linking Release+Asserts Executable
llvm-stress (without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/llvm-stress'
llvm[2]: Linking Release+Asserts executable llvm-diff (without symbols)
llvm[2]: ======= Finished Linking Release+Asserts Executable llvm-diff
(without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/llvm-diff'
llvm[2]: Linking Release+Asserts executable llvm-mc (without symbols)
llvm[2]: Linking Release+Asserts Shared Library libLTO.so
llvm[2]: Building Release+Asserts Archive Library libLTO.a
llvm[2]: ======= Finished Linking Release+Asserts Executable llvm-mc
(without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/llvm-mc'
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/lto'
llvm[2]: Linking Release+Asserts executable lli (without symbols)
llvm[2]: Linking Release+Asserts executable llc (without symbols)
make[2]: Entering directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/llvm-lto'
llvm[2]: Compiling llvm-lto.cpp for Release+Asserts build
llvm[2]: ======= Finished Linking Release+Asserts Executable llc
(without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/llc'
llvm[2]: ======= Finished Linking Release+Asserts Executable lli
(without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/lli'
llvm[2]: Linking Release+Asserts executable bugpoint (without symbols)
/home/sanjoy/work/llvm.git/build.fastdebug/tools/bugpoint/Release+Asserts/bugpoint.o:
In function `llvm::cl::list<llvm::PassInfo const*, bool,
llvm::PassNameParser>::getExtraOptionNames(llvm::SmallVectorImpl<char
const*>&)':
bugpoint.cpp:(.text._ZN4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE[_ZN4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE]+0x76):
undefined reference to `llvm::cl::parser<llvm::PassInfo
const*>::getOption(unsigned int) const'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/sanjoy/work/llvm.git/build.fastdebug/Release+Asserts/bin/bugpoint]
Error 1
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/bugpoint'
make[1]: *** [bugpoint/.makeall] Error 2
make[1]: *** Waiting for unfinished jobs....
llvm[2]: Linking Release+Asserts executable llvm-objdump (without symbols)
llvm[2]: ======= Finished Linking Release+Asserts Executable
llvm-objdump (without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/llvm-objdump'
llvm[2]: Linking Release+Asserts executable yaml2obj (without symbols)
llvm[2]: Linking Release+Asserts executable opt (without symbols)
llvm[2]: ======= Finished Linking Release+Asserts Executable yaml2obj
(without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/yaml2obj'
/home/sanjoy/work/llvm.git/build.fastdebug/tools/opt/Release+Asserts/opt.o:
In function `llvm::cl::list<llvm::PassInfo const*, bool,
llvm::PassNameParser>::getExtraOptionNames(llvm::SmallVectorImpl<char
const*>&)':
opt.cpp:(.text._ZN4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE[_ZN4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE]+0x56):
undefined reference to `llvm::cl::parser<llvm::PassInfo
const*>::getOption(unsigned int) const'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/sanjoy/work/llvm.git/build.fastdebug/Release+Asserts/bin/opt]
Error 1
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/opt'
make[1]: *** [opt/.makeall] Error 2
llvm[2]: Linking Release+Asserts executable llvm-readobj (without symbols)
llvm[2]: ======= Finished Linking Release+Asserts Executable
llvm-readobj (without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/llvm-readobj'
llvm[2]: Linking Release+Asserts executable llvm-lto (without symbols)
llvm[2]: ======= Finished Linking Release+Asserts Executable llvm-lto
(without symbols)
make[2]: Leaving directory
`/home/sanjoy/work/llvm.git/build.fastdebug/tools/llvm-lto'
make[1]: Leaving directory `/home/sanjoy/work/llvm.git/build.fastdebug/tools'
make: *** [all] Error 1


On Tue, Jun 24, 2014 at 7:29 AM, Rafael EspĂ­ndola
<rafael.espindola at gmail.com> wrote:
> I can't reproduce the problem. Which file has the undefined symbol?
> Maybe it is just missing an include?
>
> On 19 June 2014 19:00, Sanjoy Das <sanjoy at playingwithpointers.com> wrote:
>> The shared-object build for llvm (i.e. libLLVM-3.5svn.so + tools)
>> currently breaks on linux when linking opt.  This patch is an attempt
>> to fix that.
>>
>> -- Sanjoy
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>




More information about the llvm-commits mailing list