Common part of GDB and GDBserver
This page describes the work to move common code of GDB and GDBserver to files in common/ directory.
The goal of this project is to reduce the code duplication between GDB and GDBserver, and to signify the stuffs in common directory.
Here is something like a plan on what we can do on this project,
Move duplicated code among *-nat.c and *-low.c. Some macros, and code accessing hardware registers should be the same on both GDB and GDBserver. No reason to keep the same code in two copies respectively. Move these duplicated part to common/ directory, and give a logically reasonable file name. For example, the code for accessing debug registers are duplicated in i386-low.c and i386-nat.c, so they can be moved to common directory with file name i386-dbg-reg.c and i386-rdbg-reg.h. See Move common macros to i386-dbg-reg.h. There is no automatic way to identify the duplications between *-nat.c and *-low.c except examining code manually.
Move gdb_thread_db.h and gdb_wait.h to common directory. gdb/gdb_thread_db.h is include by both GDB and GDBserver, so it is straightforward to move gdb_thread_db.h to common/ dir. gdb_wait.h can be moved to common dir as well, as discussed here.
- Move duplicated code utils.c and gdbserver/utils.c. So far, there are two instance of implementations to functions like xmalloc, xrealloc, internal_error, etc. They are not 100% the same, but can be moved to common/utils.c
- Move duplicated code in gdb/linux-thread-db.c and gdb/gdbserver/thread-db.c. There should be some duplications, but still no idea on how to, due to lack of knowledge on these two files.