[llvm-dev] darwin bootstrap failure

Don Hinton via llvm-dev llvm-dev at lists.llvm.org
Sun Oct 15 09:40:00 PDT 2017


On Sun, Oct 15, 2017 at 8:34 AM, Aaron Ballman <aaron at aaronballman.com>
wrote:
>
> 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?
>

This is what I believe is going on -- hope this isn't too convoluted...

I don't know how you invoked cmake, but the generators for VS and Xcode
support multiple configurations, allowing you to delay choosing the build
type and implicitly setting CMAKE_BUILD_TYPE=None.

If CMAKE_BUILD_TYPE isn't passed or doesn't include "debug", CMakeLists.txt
assumes it's a release build, turns off both asserts and dump methods, and
generates llvm-config.h without defining LLVM_ENABLE_DUMP.  Since my change
removed the NDEBUG test for most dump definitions, they were #ifdef'd
away.  While it's possible to override this behavior by passing
-DLLVM_ENABLE_ASSERTIONS or -DLLMV_FORCE_ENABLE_DUMP, you don't seem to
have done that.

So, when a Debug build was later selected, llvm-config.h had already been
written without defining LLVM_ENABLE_DUMP, and since table-gen didn't have
the fix, it assumed the dump methods were available when it didn't see
-DNEBUG on the command line -- hence the linking errors.

So, setting LLVM_ENABLE_DUMP at configuration time won't work in this case,
and I'm leaning toward removing it completely.

Jack's issue involved removing -DNDEBUG in a script for Release builds.
While it caused the same linking issues you saw, it really didn't have
anything to do with the configuration issue you uncovered.  Had I seen any
other errors, I would have rolled it back yesterday, but as you've said,
the bots were clean wrt this change.

So, thanks again for reverting it, and sorry for any inconvenience.

hth...
don


> ~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/TableGe
> n
> >> >> >>>> &&
> >> >> >>>> /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
> >> >> >
> >> >
> >> >
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171015/e027c681/attachment.html>


More information about the llvm-dev mailing list