Dibyendu Majumdar via llvm-dev
2017-Sep-25 18:40 UTC
[llvm-dev] Errors linking with LLVM 5.0 - dump() missing
Hi, I am finding that my project that previously successfully built with versions 3.5 to 4.0 is now failing to link because of missing implementation for dump(). Errors I get are: Undefined symbols for architecture x86_64: "llvm::Type::dump() const", referenced from: ravi::LuaLLVMTypes::dump() in ravi_llvmtypes.cpp.o dump_content(lua_State*) in ravi_llvmluaapi.cpp.o "llvm::Value::dump() const", referenced from: dump_content(lua_State*) in ravi_llvmluaapi.cpp.o "llvm::Module::dump() const", referenced from: This appears to be a change that is not documented in the release notes of 5.0. Please can someone describe what the change is and how I can detect whether the dump() implementation is available or not? It also seems strange that dump() implementation was removed - surely it would have been better ti stub it so that client code does not break? Regards Dibyendu
Martin J. O'Riordan via llvm-dev
2017-Sep-25 19:35 UTC
[llvm-dev] Errors linking with LLVM 5.0 - dump() missing
Hi Dibyendu, Are you building a Debug or Release version of the compiler? I had similar problems a few days ago when I was migrating to v5.0, and it turned out that I had calls to some of the dump routines that were not guarded by either 'DEBUG(...)' or '#ifndef NDEBUG ... #endif' and I was seeing the link failures with a Release build. These had been there since LLVM v3.1 and had never broken before. There was some clean-up done in the sources so that may of the 'dump' routines are enabled only for Debug builds, and I fixed these (in my code) by adding these guards. All the best, MartinO -----Original Message----- From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Dibyendu Majumdar via llvm-dev Sent: 25 September 2017 19:41 To: llvm-dev at lists.llvm.org Subject: [llvm-dev] Errors linking with LLVM 5.0 - dump() missing Hi, I am finding that my project that previously successfully built with versions 3.5 to 4.0 is now failing to link because of missing implementation for dump(). Errors I get are: Undefined symbols for architecture x86_64: "llvm::Type::dump() const", referenced from: ravi::LuaLLVMTypes::dump() in ravi_llvmtypes.cpp.o dump_content(lua_State*) in ravi_llvmluaapi.cpp.o "llvm::Value::dump() const", referenced from: dump_content(lua_State*) in ravi_llvmluaapi.cpp.o "llvm::Module::dump() const", referenced from: This appears to be a change that is not documented in the release notes of 5.0. Please can someone describe what the change is and how I can detect whether the dump() implementation is available or not? It also seems strange that dump() implementation was removed - surely it would have been better ti stub it so that client code does not break? Regards Dibyendu _______________________________________________ LLVM Developers mailing list llvm-dev at lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Dibyendu Majumdar via llvm-dev
2017-Sep-25 19:56 UTC
[llvm-dev] Errors linking with LLVM 5.0 - dump() missing
Hi Martin, On 25 September 2017 at 20:35, Martin J. O'Riordan <MartinO at theheart.ie> wrote:> Are you building a Debug or Release version of the compiler?It seems that in Release builds of LLVM 5.0 the dump() implementation is absent, although the method is available in the interface. This is plain wrong in my view. If the dump() has to be removed then it should not be present in the interface.> > I had similar problems a few days ago when I was migrating to v5.0, and it turned out that I had calls to some of the dump routines that were not guarded by either 'DEBUG(...)' or '#ifndef NDEBUG ... #endif' and I was seeing the link failures with a Release build. These had been there since LLVM v3.1 and had never broken before. There was some clean-up done in the sources so that may of the 'dump' routines are enabled only for Debug builds, and I fixed these (in my code) by adding these guards. >Well the problem is that there is no obvious way for a client to detect whether the dump() implementation is available or not - as it does not depend upon the Release/Debug build status of the client, but how LLVM 5.0 was originally compiled. So the guards you have put are not really going to work (that is my finding anyway). Regards Dibyendu> > -----Original Message----- > From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Dibyendu Majumdar via llvm-dev > Sent: 25 September 2017 19:41 > To: llvm-dev at lists.llvm.org > Subject: [llvm-dev] Errors linking with LLVM 5.0 - dump() missing > > Hi, > > I am finding that my project that previously successfully built with versions 3.5 to 4.0 is now failing to link because of missing implementation for dump(). Errors I get are: > > Undefined symbols for architecture x86_64: > > "llvm::Type::dump() const", referenced from: > ravi::LuaLLVMTypes::dump() in ravi_llvmtypes.cpp.o > dump_content(lua_State*) in ravi_llvmluaapi.cpp.o > "llvm::Value::dump() const", referenced from: > dump_content(lua_State*) in ravi_llvmluaapi.cpp.o > "llvm::Module::dump() const", referenced from: > > This appears to be a change that is not documented in the release notes of 5.0. Please can someone describe what the change is and how I can detect whether the dump() implementation is available or not? > > It also seems strange that dump() implementation was removed - surely it would have been better ti stub it so that client code does not break? > > Regards > Dibyendu > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >
Matthias Braun via llvm-dev
2017-Sep-25 21:43 UTC
[llvm-dev] Errors linking with LLVM 5.0 - dump() missing
The dump() methods are only meant to be used in debuggers and are only available in debug builds of LLVM. There are often similar print() methods available though. - Matthias> On Sep 25, 2017, at 11:40 AM, Dibyendu Majumdar via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > Hi, > > I am finding that my project that previously successfully built with > versions 3.5 to 4.0 is now failing to link because of missing > implementation for dump(). Errors I get are: > > Undefined symbols for architecture x86_64: > > "llvm::Type::dump() const", referenced from: > ravi::LuaLLVMTypes::dump() in ravi_llvmtypes.cpp.o > dump_content(lua_State*) in ravi_llvmluaapi.cpp.o > "llvm::Value::dump() const", referenced from: > dump_content(lua_State*) in ravi_llvmluaapi.cpp.o > "llvm::Module::dump() const", referenced from: > > This appears to be a change that is not documented in the release > notes of 5.0. Please can someone describe what the change is and how I > can detect whether the dump() implementation is available or not? > > It also seems strange that dump() implementation was removed - surely > it would have been better ti stub it so that client code does not > break? > > Regards > Dibyendu > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Dibyendu Majumdar via llvm-dev
2017-Sep-25 21:47 UTC
[llvm-dev] Errors linking with LLVM 5.0 - dump() missing
Hi Matthias, On 25 September 2017 at 22:43, Matthias Braun <mbraun at apple.com> wrote:> The dump() methods are only meant to be used in debuggers and are only available in debug builds of LLVM. There are often similar print() methods available though. >I am not sure how this is the case seeing that the dump() function has been working in release builds in all the LLVM releases I have used (from 3.5 to 4.0).> >> On Sep 25, 2017, at 11:40 AM, Dibyendu Majumdar via llvm-dev <llvm-dev at lists.llvm.org> wrote:>> I am finding that my project that previously successfully built with >> versions 3.5 to 4.0 is now failing to link because of missing >> implementation for dump(). Errors I get are: >> >> Undefined symbols for architecture x86_64: >> >> "llvm::Type::dump() const", referenced from: >> ravi::LuaLLVMTypes::dump() in ravi_llvmtypes.cpp.o >> dump_content(lua_State*) in ravi_llvmluaapi.cpp.o >> "llvm::Value::dump() const", referenced from: >> dump_content(lua_State*) in ravi_llvmluaapi.cpp.o >> "llvm::Module::dump() const", referenced from: >> >> This appears to be a change that is not documented in the release >> notes of 5.0. Please can someone describe what the change is and how I >> can detect whether the dump() implementation is available or not? >> >> It also seems strange that dump() implementation was removed - surely >> it would have been better ti stub it so that client code does not >> break? >> >> Regards >> Dibyendu >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >
Daniel Berlin via llvm-dev
2017-Sep-25 22:05 UTC
[llvm-dev] Errors linking with LLVM 5.0 - dump() missing
None of these were removed. lib/IR/AsmWriter.cpp:void Module::dump() const { lib/IR/AsmWriter.cpp:void Value::dump() const { print(dbgs(), /*IsForDebug=*/true); dbgs() << '\n'; } lib/IR/AsmWriter.cpp:void Type::dump() const { print(dbgs(), /*IsForDebug=*/true); dbgs() << '\n'; }>It also seems strange that dump() implementation was removed - surely >it would have been better ti stub it so that client code does not >break?LLVM explicitly does not guarantee API compatibility. On Mon, Sep 25, 2017 at 11:40 AM, Dibyendu Majumdar via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hi, > > I am finding that my project that previously successfully built with > versions 3.5 to 4.0 is now failing to link because of missing > implementation for dump(). Errors I get are: > > Undefined symbols for architecture x86_64: > > "llvm::Type::dump() const", referenced from: > ravi::LuaLLVMTypes::dump() in ravi_llvmtypes.cpp.o > dump_content(lua_State*) in ravi_llvmluaapi.cpp.o > "llvm::Value::dump() const", referenced from: > dump_content(lua_State*) in ravi_llvmluaapi.cpp.o > "llvm::Module::dump() const", referenced from: > > This appears to be a change that is not documented in the release > notes of 5.0. Please can someone describe what the change is and how I > can detect whether the dump() implementation is available or not? > > It also seems strange that dump() implementation was removed - surely > it would have been better ti stub it so that client code does not > break? > > Regards > Dibyendu > _______________________________________________ > 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/20170925/16d71dd7/attachment.html>