Just re-sending this. Anyone have any suggestions on how to proceed with debugging LLVM produced executables? The problem appears to be register-allocated variables. Global variables and syntax lines do get symbols using the llc / as method I described below. -Mark On May 6, 2008, at 7:36 AM, Mark Oskin wrote:> >> I think you probably need to pass -O0 to llvm-ld. The link-time >> optimizations are probably killing your debug info. >> > No dice. Doing it this way makes gdb spew out this: > > warning: Could not find object file "/var/folders/cQ/cQ+L3+RP2RWOpE > +8ZNQdPU+++TI/-Tmp-//ccVljWhn.o" - no debug information available for > "defs.h" > > And then no debug symbols are available. > > I also discovered a major down side to the "solution" I found last > night. While the line number data does get successfully transfered > into gdb, I cannot inspect any variables. Those appear to have been > lost. > > Any other suggestions out there? > > thanks! > > -mark > >> --Owen >> >> On May 5, 2008, at 8:21 PM, Mark Oskin wrote: >> >>> Hi everyone again, >>> >>> I did discover the following works (see below). However, does >>> anyone >>> know of the "proper" way with LLVM? >>> >>> llvm-gcc -g -c -emit-llvm helloworld.c >>> opt -load=mypass.dylib -mypass < helloworld.o > helloworld-mypass.o >>> llc -fast -f -o helloworld.s helloworld-mypass.o >>> as -o helloworld-prime.o >>> gcc -o helloworld helloworld-prime.o >>> gdb helloworld >>> >>> On May 5, 2008, at 4:17 PM, Mark Oskin wrote: >>> >>>> Hi everyone, >>>> >>>> I have a question that seems simple, but has been confounding me >>>> for >>>> several hours. I'd like to debug a binary produced with LLVM. For >>>> the life of me, I can't get any symbols into gdb and llvm-db won't >>>> even start the program nor load any useful information about it. >>>> Here's my current strategy (which isn't working): >>>> >>>> llvm-gcc -g -O0 -c -emit-llvm helloworld.c >>>> opt -load=mypass.dylib -mypass < helloworld.o > helloworld-mypass.o >>>> llvm-ld -native -o helloworld helloworld-mypass.o >>>> gdb helloworld >>>> >>>> I've tried several variations on the above. >>>> >>>> Any suggestions? >>>> >>>> Note, what is critical about the whole thing is I must run >>>> "mypass" on >>>> the bytecode file. I'm hoping there's an easy fix, that will both >>>> allow me to run my arbitrary pass, and debug a program. >>>> >>>> thanks, >>>> >>>> -Mark >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
I could do that, but before I venture there, if I did that, could I have llvm-gcc produce native object files (not LLVM bytecode) that way (using my pass)? thanks, -Mark On May 7, 2008, at 11:40 AM, Chris Lattner wrote:> On Wed, 7 May 2008, Mark Oskin wrote: >> Just re-sending this. Anyone have any suggestions on how to proceed >> with debugging LLVM produced executables? The problem appears to be >> register-allocated variables. Global variables and syntax lines do >> get symbols using the llc / as method I described below. -Mark > > Have you considered adding your pass to llvm-backend.cpp in > llvmgcc? This > would allow you to use llvm-gcc from the command line, without > having to > invoke individual tools directly. > > -Chris > >> On May 6, 2008, at 7:36 AM, Mark Oskin wrote: >> >>> >>>> I think you probably need to pass -O0 to llvm-ld. The link-time >>>> optimizations are probably killing your debug info. >>>> >>> No dice. Doing it this way makes gdb spew out this: >>> >>> warning: Could not find object file "/var/folders/cQ/cQ+L3+RP2RWOpE >>> +8ZNQdPU+++TI/-Tmp-//ccVljWhn.o" - no debug information available >>> for >>> "defs.h" >>> >>> And then no debug symbols are available. >>> >>> I also discovered a major down side to the "solution" I found last >>> night. While the line number data does get successfully transfered >>> into gdb, I cannot inspect any variables. Those appear to have been >>> lost. >>> >>> Any other suggestions out there? >>> >>> thanks! >>> >>> -mark >>> >>>> --Owen >>>> >>>> On May 5, 2008, at 8:21 PM, Mark Oskin wrote: >>>> >>>>> Hi everyone again, >>>>> >>>>> I did discover the following works (see below). However, does >>>>> anyone >>>>> know of the "proper" way with LLVM? >>>>> >>>>> llvm-gcc -g -c -emit-llvm helloworld.c >>>>> opt -load=mypass.dylib -mypass < helloworld.o > helloworld- >>>>> mypass.o >>>>> llc -fast -f -o helloworld.s helloworld-mypass.o >>>>> as -o helloworld-prime.o >>>>> gcc -o helloworld helloworld-prime.o >>>>> gdb helloworld >>>>> >>>>> On May 5, 2008, at 4:17 PM, Mark Oskin wrote: >>>>> >>>>>> Hi everyone, >>>>>> >>>>>> I have a question that seems simple, but has been confounding me >>>>>> for >>>>>> several hours. I'd like to debug a binary produced with LLVM. >>>>>> For >>>>>> the life of me, I can't get any symbols into gdb and llvm-db >>>>>> won't >>>>>> even start the program nor load any useful information about it. >>>>>> Here's my current strategy (which isn't working): >>>>>> >>>>>> llvm-gcc -g -O0 -c -emit-llvm helloworld.c >>>>>> opt -load=mypass.dylib -mypass < helloworld.o > helloworld- >>>>>> mypass.o >>>>>> llvm-ld -native -o helloworld helloworld-mypass.o >>>>>> gdb helloworld >>>>>> >>>>>> I've tried several variations on the above. >>>>>> >>>>>> Any suggestions? >>>>>> >>>>>> Note, what is critical about the whole thing is I must run >>>>>> "mypass" on >>>>>> the bytecode file. I'm hoping there's an easy fix, that will >>>>>> both >>>>>> allow me to run my arbitrary pass, and debug a program. >>>>>> >>>>>> thanks, >>>>>> >>>>>> -Mark >>>>>> _______________________________________________ >>>>>> LLVM Developers mailing list >>>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>>> >>>>> _______________________________________________ >>>>> LLVM Developers mailing list >>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>> >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> > > -Chris > > -- > http://nondot.org/sabre/ > http://llvm.org/ > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
On Wed, 7 May 2008, Mark Oskin wrote:> Just re-sending this. Anyone have any suggestions on how to proceed > with debugging LLVM produced executables? The problem appears to be > register-allocated variables. Global variables and syntax lines do > get symbols using the llc / as method I described below. -MarkHave you considered adding your pass to llvm-backend.cpp in llvmgcc? This would allow you to use llvm-gcc from the command line, without having to invoke individual tools directly. -Chris> On May 6, 2008, at 7:36 AM, Mark Oskin wrote: > >> >>> I think you probably need to pass -O0 to llvm-ld. The link-time >>> optimizations are probably killing your debug info. >>> >> No dice. Doing it this way makes gdb spew out this: >> >> warning: Could not find object file "/var/folders/cQ/cQ+L3+RP2RWOpE >> +8ZNQdPU+++TI/-Tmp-//ccVljWhn.o" - no debug information available for >> "defs.h" >> >> And then no debug symbols are available. >> >> I also discovered a major down side to the "solution" I found last >> night. While the line number data does get successfully transfered >> into gdb, I cannot inspect any variables. Those appear to have been >> lost. >> >> Any other suggestions out there? >> >> thanks! >> >> -mark >> >>> --Owen >>> >>> On May 5, 2008, at 8:21 PM, Mark Oskin wrote: >>> >>>> Hi everyone again, >>>> >>>> I did discover the following works (see below). However, does >>>> anyone >>>> know of the "proper" way with LLVM? >>>> >>>> llvm-gcc -g -c -emit-llvm helloworld.c >>>> opt -load=mypass.dylib -mypass < helloworld.o > helloworld-mypass.o >>>> llc -fast -f -o helloworld.s helloworld-mypass.o >>>> as -o helloworld-prime.o >>>> gcc -o helloworld helloworld-prime.o >>>> gdb helloworld >>>> >>>> On May 5, 2008, at 4:17 PM, Mark Oskin wrote: >>>> >>>>> Hi everyone, >>>>> >>>>> I have a question that seems simple, but has been confounding me >>>>> for >>>>> several hours. I'd like to debug a binary produced with LLVM. For >>>>> the life of me, I can't get any symbols into gdb and llvm-db won't >>>>> even start the program nor load any useful information about it. >>>>> Here's my current strategy (which isn't working): >>>>> >>>>> llvm-gcc -g -O0 -c -emit-llvm helloworld.c >>>>> opt -load=mypass.dylib -mypass < helloworld.o > helloworld-mypass.o >>>>> llvm-ld -native -o helloworld helloworld-mypass.o >>>>> gdb helloworld >>>>> >>>>> I've tried several variations on the above. >>>>> >>>>> Any suggestions? >>>>> >>>>> Note, what is critical about the whole thing is I must run >>>>> "mypass" on >>>>> the bytecode file. I'm hoping there's an easy fix, that will both >>>>> allow me to run my arbitrary pass, and debug a program. >>>>> >>>>> thanks, >>>>> >>>>> -Mark >>>>> _______________________________________________ >>>>> LLVM Developers mailing list >>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>> >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-Chris -- http://nondot.org/sabre/ http://llvm.org/