Thanks for the quick responses, but unfortunately still no luck:> llvm-g++ -g -O0 -c -emit-llvm test.cpp > llc -O0 test.o > g++ test.o.s > ./a.outMy return address is 0x400bb2> addr2line 0x400bb2??:0 Also to further implicate llc, this works:> llvm-g++ -g -O0 -S test.cpp > g++ test.s > ./a.outMy return address is 0x400bf9> addr2line 0x400bf9/home/jalbert/llvmtest//test.cpp:13 Anymore thoughts? -Nick On Wed, Sep 16, 2009 at 2:29 PM, Devang Patel <devang.patel at gmail.com>wrote:> On Wed, Sep 16, 2009 at 1:34 PM, Nick Jalbert <jalbert at eecs.berkeley.edu> > wrote: > > Hi all, > > I'm having an issue with debug information and llc. A test program: > > #include <iostream> > > using namespace std; > > void foo() { > > cout << "My return address is " << __builtin_return_address(0) << > > endl << flush; > > } > > int main(int argc, char *argv[]) { > > foo(); > > return 0; > > } > > > > When I compile my test program to LLVM bytecode, and then use llc to take > > the bytecode to assembly, llc appears to strip the debugging information > > along the way: > >> llvm-g++ -g -c -emit-llvm test.cpp > >> llc test.o > > try -O0 in llc command line. > - > Devang >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090916/5c5d888f/attachment.html>
Nick Jalbert wrote:> Thanks for the quick responses, but unfortunately still no luck: > > > llvm-g++ -g -O0 -c -emit-llvm test.cpp > > llc -O0 test.o > > g++ test.o.s > > ./a.out > My return address is 0x400bb2 > > addr2line 0x400bb2 > ??:0 > > Also to further implicate llc, this works: > > > llvm-g++ -g -O0 -S test.cpp > > g++ test.s > > ./a.out > My return address is 0x400bf9 > > addr2line 0x400bf9 > /home/jalbert/llvmtest//test.cpp:13 > > Anymore thoughts?maybe try passing -disable-fp-elim to llc? Ciao, Duncan.
Figured out my problem, mailing the list in case anyone else runs into the same issue. I had updated the LLVM tools to the svn version, but not the front end. It seems that debugging information is handled differently with the latest version of the tools (perhaps as a result of this proposal<http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-September/025648.html>?). I ended up grabbing a prerelease of llvm2.6 found here<http://llvm.org/prereleases/2.6/>, and building both the front end and the LLVM tools from source. Using tools from a consistent period in time solved my problem--oops! Thanks to everyone who tried to help out :). -Nick On Thu, Sep 17, 2009 at 2:20 AM, Duncan Sands <baldrick at free.fr> wrote:> Nick Jalbert wrote: > >> Thanks for the quick responses, but unfortunately still no luck: >> >> > llvm-g++ -g -O0 -c -emit-llvm test.cpp >> > llc -O0 test.o >> > g++ test.o.s >> > ./a.out My return address is 0x400bb2 >> > addr2line 0x400bb2 >> ??:0 >> >> Also to further implicate llc, this works: >> >> > llvm-g++ -g -O0 -S test.cpp > g++ test.s > ./a.out My return address >> is 0x400bf9 >> > addr2line 0x400bf9 >> /home/jalbert/llvmtest//test.cpp:13 >> >> Anymore thoughts? >> > > maybe try passing -disable-fp-elim to llc? > > Ciao, > > Duncan. >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090918/c8acc225/attachment.html>