On 4/20/22 02:15, Nagaraju Mekala via Gcc-help wrote:
Hello All, When I enable the garbage collector for the microblaze compiler compilation seems to be fine, but the debug symbols are not generated properly. If we set a breakpoint at 0x0 it is showing some different location, we can see the same in the objdump as well.
What different location?
Disassembly of section .vectors.reset: 00000000 <_start>: * * ****************************************************************************/ void microblaze_register_handler(XInterruptHandler Handler, void *DataPtr) { MB_InterruptVectorTable[0].Handler = Handler; 0: b0008000 imm -32768 4: b8080000 brai 0 for the _start symbols "void microblaze_register_handler(XInterruptHandler Handler, void *DataPtr)" is coming up.
It looks like both _start and microblaze_register_handler are both at 0. What did you expect? GDB picks the first symbol which matches the address.
If I disable the garbage-collector then everything seems fine. I have used "-ffunction-sections and -fdata-sections" options during compilation and -gc-sections during linking command. Please let me know how to tell the garbage collector to not delete debug_loc information.
Why do you think that the garbage collector is deleting debug info? -- Michael Eager