about how to add support to new c++ compiler in GDB

Wu Zhou
2005-04-26T02:54:17Z

Hello Daniel and all,

I am recently running GDB testsuite against IBM's xlc compiler, and found
some problems with c++ testcases, especially while handling virtual-table
related stuff. After some analysis, I found there are some difference
between the debuginfo output between xlc++ and g++. The main difference I
noted now is that the class in xlc++ didn't depend on DW_TAG_containing_type
to find its virutal function table. Instead, every virtual class in xlc++
had its own "__vfp", which act the same role as "_vptr.CLASSNAME" in g++.
This will make gdb crash (SEGV) on quite a few c++ testcase.

I am now considering add some code in GDB to fix this. After doing some
search in this mail-list, I found there are some discussion on similar
problem before, such as http://sourceware.org/ml/gdb/2004-12/msg00077.html.
So I think maybe some of you might have experience or thought or idea on
this already. So I write this mail to ask for your expert advice:

1. To support a new c++ compiler, what work need to bo done? I am now
thinking of is a new source file(maybe xlc-abi.c) to register its own cp-abi
operation, and some tweak in dwarf2read.c to let GDB understand xlc specific
debuginfo. Any else places need my special attention? Please advice.
2. while coding this support, what design consideration I need to take into
account? Is there any document on this? GDB internal didn't mention this.
Maybe there are some in somebody's mind, would you like to share with me?
Thanks a lot. :-)
3. To verify that my code does work ok and don't bring any other
side-effect, what I need to take into account? Running the testsuite against
the modified code might be a help. Any specific area need some more
attention?

Above is only my initial thought. Any idea, advice or comments are highly
appreciated.

Cheers.

- Wu Zhou