[llvm-dev] darwin bootstrap failure

Aaron Ballman via llvm-dev llvm-dev at lists.llvm.org
Sun Oct 15 08:34:33 PDT 2017


On Sun, Oct 15, 2017 at 11:19 AM, Don Hinton <hintonda at gmail.com> wrote:
> On Sun, Oct 15, 2017 at 8:06 AM, Aaron Ballman <aaron at aaronballman.com>
> wrote:
>>
>> On Sun, Oct 15, 2017 at 10:58 AM, Don Hinton <hintonda at gmail.com> wrote:
>> > Thanks Aaron.
>> >
>> > I don't have a Windows system, and haven't seen any buildbot failures,
>> > so I
>> > it's difficult to come up with a patch for something I can't reproduce
>> > locally or see any actual failures.  Could you send me the commands you
>> > used
>> > that uncovered the failure?
>>
>> This was from building Clang + LLVM on Windows 10 with MSVC 2017 x64
>> Debug. My cmake command to generate the VS solution is pretty
>> uninteresting: cmake -G "Visual Studio 15 Win64" ..\llvm
>>
>> I fixed a few of the link errors that Jack pointed out before
>> stumbling on the problem in AsmMatcherEmitter::run(). I wasn't
>> comfortable attempting to work around it there because the
>> DEBUG_WITH_TYPE macro was conflicting with trying to guard calls to
>> MatchableInfo::dump() with LLVM_ENABLE_DUMP.
>>
>> I think this is another instance of "TableGen wasn't done along with
>> the rest of llvm" -- nothing about it should be Visual Studio- or
>> Windows-specific.
>
>
> I think this is specific to cmake generators that create multiple
> configuration types -- visual studio and xcode.  Setting LLVM_ENABLE_DUMP in
> a header just won't work in those situations, so it might make sense to
> remove it altogether.

FWIW, most of the ones I was fixing up were guarded by NDEBUG instead
of LLVM_ENABLE_DUMP. Switching to LLVM_ENABLE_DUMP fixed the link
errors for me -- the only one I struggled with was
AsmMatcherEmitter::run(). But it sounds like you're saying switching
the configuration type in MSVC from Debug to Release would have
possibly caused issues as well?

~Aaron

>
> Thanks again...
> don
>
>
>
>
>>
>>
>> ~Aaron
>>
>> >
>> > thanks again...
>> > don
>> >
>> > On Sun, Oct 15, 2017 at 7:35 AM, Aaron Ballman <aaron at aaronballman.com>
>> > wrote:
>> >>
>> >> On Sat, Oct 14, 2017 at 11:25 AM, Don Hinton via llvm-dev
>> >> <llvm-dev at lists.llvm.org> wrote:
>> >> > Hi Jack:
>> >> >
>> >> > Yes, I was just looking at that.  Seems like TableGen wasn't done
>> >> > along
>> >> > with
>> >> > the rest of llvm.  I'll work up a complete patch shortly.
>> >>
>> >> This also broke the build for MSVC when doing a debug build (though no
>> >> builder seems to be picking up the failure!). After working around a
>> >> handful of link errors, I came to one that's going to require more
>> >> understanding of LLVM's tablegen than I have.
>> >>
>> >> Error LNK2019 unresolved external symbol "public: void __cdecl
>> >> `anonymous namespace'::MatchableInfo::dump(void)const "
>> >> (?dump at MatchableInfo@?A0xf4f1c304@@QEBAXXZ) referenced in function
>> >> "public: void __cdecl `anonymous
>> >> namespace'::AsmMatcherEmitter::run(class llvm::raw_ostream &)"
>> >> (?run at AsmMatcherEmitter@?A0xf4f1c304@@QEAAXAEAVraw_ostream at llvm@@@Z)
>> >> llvm-tblgen D:\llvm\2017\utils\TableGen\AsmMatcherEmitter.obj 1
>> >>
>> >> Since this has been broken for over a day and the fixes are
>> >> nontrivial, I've reverted your commit (r315590) in r315854. Hopefully
>> >> this doesn't cause you too many problems!
>> >>
>> >> ~Aaron
>> >>
>> >> >
>> >> > Btw, I'm curious how this happened.  Do you have a stale
>> >> > CMakeCache.txt
>> >> > by
>> >> > any chance?  You might check the value for LLVM_ENABLE_DUMP and see
>> >> > if
>> >> > it's
>> >> > consistent.
>> >> >
>> >> > Again, I'll gen up a complete patch shortly -- sorry for delay, had
>> >> > to
>> >> > walk
>> >> > my dog first...
>> >> >
>> >> > thanks...
>> >> > don
>> >> >
>> >> > On Sat, Oct 14, 2017 at 8:06 AM, Jack Howarth
>> >> > <howarth.mailing.lists at gmail.com> wrote:
>> >> >>
>> >> >>
>> >> >>
>> >> >> On Sat, Oct 14, 2017 at 10:25 AM, Don Hinton <hintonda at gmail.com>
>> >> >> wrote:
>> >> >>>
>> >> >>> Hi Jack:
>> >> >>>
>> >> >>> Looks like I missed this one in my recent change.
>> >> >>>
>> >> >>> Please let me know if this solves your problem:
>> >> >>>
>> >> >>> $ git diff
>> >> >>> diff --git a/utils/TableGen/InfoByHwMode.cpp
>> >> >>> b/utils/TableGen/InfoByHwMode.cpp
>> >> >>> index 7e1e1864356..8d3636432aa 100644
>> >> >>> --- a/utils/TableGen/InfoByHwMode.cpp
>> >> >>> +++ b/utils/TableGen/InfoByHwMode.cpp
>> >> >>> @@ -98,14 +98,16 @@ void
>> >> >>> ValueTypeByHwMode::writeToStream(raw_ostream
>> >> >>> &OS) const {
>> >> >>>    OS << '}';
>> >> >>>  }
>> >> >>>
>> >> >>> +#ifdef LLVM_ENABLE_DUMP
>> >> >>>  LLVM_DUMP_METHOD
>> >> >>>  void ValueTypeByHwMode::dump() const {
>> >> >>>    dbgs() << *this << '\n';
>> >> >>>  }
>> >> >>> +#endif
>> >> >>>
>> >> >>>  ValueTypeByHwMode llvm::getValueTypeByHwMode(Record *Rec,
>> >> >>>                                               const CodeGenHwModes
>> >> >>> &CGH)
>> >> >>> {
>> >> >>> -#ifndef NDEBUG
>> >> >>> +#ifdef LLVM_ENABLE_DUMP
>> >> >>>    if (!Rec->isSubClassOf("ValueType"))
>> >> >>>      Rec->dump();
>> >> >>>  #endif
>> >> >>>
>> >> >>>
>> >> >>> thanks...
>> >> >>> don
>> >> >>>
>> >> >>
>> >> >> The patch seems to be incomplete as it moves the failure to...
>> >> >>
>> >> >> [  6%] Linking CXX executable ../../bin/llvm-tblgen
>> >> >> cd /sw/src/fink.build/llvm60-6.0.0-1/build/stage1/utils/TableGen &&
>> >> >> /sw/bin/cmake -E cmake_link_script
>> >> >> CMakeFiles/llvm-tblgen.dir/link.txt
>> >> >> --verbose=1
>> >> >> /sw/src/fink.build/llvm60-6.0.0-1/opt-bin/ccclang++  -fno-common
>> >> >> -fPIC
>> >> >> -fvisibility-inlines-hidden -Werror=date-time
>> >> >> -Werror=unguarded-availability-new -std=c++11 -Wall -W
>> >> >> -Wno-unused-parameter
>> >> >> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic
>> >> >> -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor
>> >> >> -Wdelete-non-virtual-dtor -Wstring-conversion -O3
>> >> >> -Wl,-search_paths_first
>> >> >> -Wl,-headerpad_max_install_names  -L/sw/lib  -Wl,-dead_strip
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/AsmMatcherEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterInst.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/Attributes.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/CallingConvEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeEmitterGen.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenDAGPatterns.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenHwModes.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenInstruction.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenMapTable.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenRegisters.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenSchedule.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenTarget.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherGen.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherOpt.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcher.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/DFAPacketizerEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/DisassemblerEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/FastISelEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/FixedLenDecoderEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/GlobalISelEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/InfoByHwMode.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/InstrInfoEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/IntrinsicEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/OptParserEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/PseudoLoweringEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/RegisterBankEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/RegisterInfoEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/SearchableTableEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/SubtargetEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/SubtargetFeatureInfo.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/TableGen.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/Types.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86DisassemblerTables.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86EVEX2VEXTablesEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86FoldTablesEmitter.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86ModRMFilters.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86RecognizableInstr.cpp.o
>> >> >> CMakeFiles/obj.llvm-tblgen.dir/CTagsEmitter.cpp.o  -o
>> >> >> ../../bin/llvm-tblgen
>> >> >> -Wl,-rpath, at loader_path/../lib ../../lib/libLLVMSupport.a
>> >> >> ../../lib/libLLVMTableGen.a ../../lib/libLLVMSupport.a -lcurses -lz
>> >> >> -lm
>> >> >> ../../lib/libLLVMDemangle.a
>> >> >> Undefined symbols for architecture x86_64:
>> >> >>   "llvm::SubtargetFeatureInfo::dump() const", referenced from:
>> >> >>       (anonymous namespace)::AsmMatcherInfo::buildInfo() in
>> >> >> AsmMatcherEmitter.cpp.o
>> >> >>   "(anonymous namespace)::MatchableInfo::dump() const", referenced
>> >> >> from:
>> >> >>       (anonymous
>> >> >> namespace)::AsmMatcherEmitter::run(llvm::raw_ostream&)
>> >> >> in
>> >> >> AsmMatcherEmitter.cpp.o
>> >> >> ld: symbol(s) not found for architecture x86_64
>> >> >> clang: error: linker command failed with exit code 1 (use -v to see
>> >> >> invocation)
>> >> >> make[2]: *** [bin/llvm-tblgen] Error 1
>> >> >> make[1]: *** [utils/TableGen/CMakeFiles/llvm-tblgen.dir/all] Error 2
>> >> >> make: *** [all] Error 2
>> >> >>
>> >> >>         Jack
>> >> >>
>> >> >>>
>> >> >>>
>> >> >>> On Sat, Oct 14, 2017 at 6:06 AM, Jack Howarth via llvm-dev
>> >> >>> <llvm-dev at lists.llvm.org> wrote:
>> >> >>>>
>> >> >>>> Is anyone else seeing this bootstrap failure on current svn trunk?
>> >> >>>>
>> >> >>>> [  6%] Linking CXX executable ../../bin/llvm-tblgen
>> >> >>>> cd /sw/src/fink.build/llvm60-6.0.0-1/build/stage1/utils/TableGen
>> >> >>>> &&
>> >> >>>> /sw/bin/cmake -E cmake_link_script
>> >> >>>> CMakeFiles/llvm-tblgen.dir/link.txt
>> >> >>>> --verbose=1
>> >> >>>> /sw/src/fink.build/llvm60-6.0.0-1/opt-bin/ccclang++  -fno-common
>> >> >>>> -fPIC
>> >> >>>> -fvisibility-inlines-hidden -Werror=date-time
>> >> >>>> -Werror=unguarded-availability-new -std=c++11 -Wall -W
>> >> >>>> -Wno-unused-parameter
>> >> >>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic
>> >> >>>> -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor
>> >> >>>> -Wdelete-non-virtual-dtor -Wstring-conversion -O3
>> >> >>>> -Wl,-search_paths_first
>> >> >>>> -Wl,-headerpad_max_install_names  -L/sw/lib  -Wl,-dead_strip
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/AsmMatcherEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterInst.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/Attributes.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CallingConvEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeEmitterGen.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenDAGPatterns.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenHwModes.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenInstruction.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenMapTable.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenRegisters.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenSchedule.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenTarget.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherGen.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherOpt.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcher.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DFAPacketizerEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DisassemblerEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/FastISelEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/FixedLenDecoderEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/GlobalISelEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/InfoByHwMode.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/InstrInfoEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/IntrinsicEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/OptParserEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/PseudoLoweringEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/RegisterBankEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/RegisterInfoEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/SearchableTableEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/SubtargetEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/SubtargetFeatureInfo.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/TableGen.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/Types.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86DisassemblerTables.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86EVEX2VEXTablesEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86FoldTablesEmitter.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86ModRMFilters.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86RecognizableInstr.cpp.o
>> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CTagsEmitter.cpp.o  -o
>> >> >>>> ../../bin/llvm-tblgen
>> >> >>>> -Wl,-rpath, at loader_path/../lib ../../lib/libLLVMSupport.a
>> >> >>>> ../../lib/libLLVMTableGen.a ../../lib/libLLVMSupport.a -lcurses
>> >> >>>> -lz
>> >> >>>> -lm
>> >> >>>> ../../lib/libLLVMDemangle.a
>> >> >>>> Undefined symbols for architecture x86_64:
>> >> >>>>   "llvm::Record::dump() const", referenced from:
>> >> >>>>       llvm::getValueTypeByHwMode(llvm::Record*,
>> >> >>>> llvm::CodeGenHwModes
>> >> >>>> const&) in InfoByHwMode.cpp.o
>> >> >>>>   "llvm::SubtargetFeatureInfo::dump() const", referenced from:
>> >> >>>>       (anonymous namespace)::AsmMatcherInfo::buildInfo() in
>> >> >>>> AsmMatcherEmitter.cpp.o
>> >> >>>>   "(anonymous namespace)::MatchableInfo::dump() const", referenced
>> >> >>>> from:
>> >> >>>>       (anonymous
>> >> >>>> namespace)::AsmMatcherEmitter::run(llvm::raw_ostream&)
>> >> >>>> in AsmMatcherEmitter.cpp.o
>> >> >>>> ld: symbol(s) not found for architecture x86_64
>> >> >>>> clang: error: linker command failed with exit code 1 (use -v to
>> >> >>>> see
>> >> >>>> invocation)
>> >> >>>> make[2]: *** [bin/llvm-tblgen] Error 1
>> >> >>>> make[1]: *** [utils/TableGen/CMakeFiles/llvm-tblgen.dir/all] Error
>> >> >>>> 2
>> >> >>>> make: *** [all] Error 2
>> >> >>>>
>> >> >>>> This is on x86_64-apple-darwin16 with Xcode 9.0.
>> >> >>>>          Jack
>> >> >>>>
>> >> >>>> _______________________________________________
>> >> >>>> LLVM Developers mailing list
>> >> >>>> llvm-dev at lists.llvm.org
>> >> >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>> >> >>>>
>> >> >>>
>> >> >>
>> >> >
>> >> >
>> >> > _______________________________________________
>> >> > LLVM Developers mailing list
>> >> > llvm-dev at lists.llvm.org
>> >> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>> >> >
>> >
>> >
>
>


More information about the llvm-dev mailing list