-
Notifications
You must be signed in to change notification settings - Fork 10
Home
Here's a rundown of all the branches hosted here and what they are for.
The branches are in varying stages of usefulness and completeness. I've tried to note everything relevant, but there's really no substitute for reading the patches yourself.
If you're interested in basing your work on a branch, please feel free. I'd appreciate a note if you found something useful or if you plan to submit it upstream.
I posted this one to the list recently. It shrinks objfile a bit if there are no mangled symbols.
I started trying to fix a BFD memory "leak" (really a "loiterer" in java lingo), but didn't finish. There's a bug in Bugzilla.
Started to add a regexp argument to catch exec
so you could catch execs by name. Don't recall the status.
Initial work on a catch exit
patch that uses PTRACE_O_TRACEEXIT
. IIRC it mostly works for native but I didn't do the remote bits yet. At some point I had an actual use case in mind for this but I no longer recall it.
Extra patches for the cleanup checker to let us mark some functions as "known to leak a cleanup". I never put this in since it seemed like a not very good idea. Instead it's better to fix up APIs so that leaking cleanups is never normal.
Make CLI user commands use reference-counted command lists. I think there's some bug that this is supposed to fix.
Remove some deprecated value APIs, but mostly really just by renaming them and turning them into a slightly more acceptable form. It's not clear this is really a good direction.
An attempt to move the frame cache to the address space.
An attempt to automatically dereference synthetic pointers when printing. Currently gdb prints:
(gdb) p c
$2 = (byte *) <synthetic pointer>
... which is pretty useless. See GCC PR 55608, I think, for some discussion.
Make gdbserver use filestuff for CLOEXEC
. There was a discussion on the list at some point about this. It has some issue I didn't fix. This might all be simpler now that gdbserver can use libiberty.
Share most identical types in an objfile. This can save memory when multiple CUs are expanded. However, dealing with structs and unions is unimplemented; this is non-trivial due to mutually recursive data structures. So, the actual savings seen are rather modest. Also, I think much of the savings one might expect from this work can also be achieved by simply running dwz
.
When expanding a CU, one can save a lot of time by skipping function bodies. IIRC I measured this at ~40% of the time to expand a CU. Normally this is not important but there are some outlying CUs in some large C++ programs.
This patch is incomplete because I never made it expand function bodies when a by-address lookup is done.
This may be worth resurrecting though it's tempting to go one step further and also lazily instantiate types. Or even further -- unify partial and full symbols. for DWARF and make CU expansion completely lazy.
Adds valgrind client request checks to objalloc. obstack still would have to be done. I was hoping this would give some information about "slop" (memory in a chunk that is wasted) but I couldn't find a way to get this information from valgrind. This does however catch more out-of-bounds accesses.
One remaining patch to make to_info_proc
use delegation. It's mildly questionable so I never submitted it. The remaining non-delegating target methods probably require a more principled unified approach.
An attempt to move gdbserver, common, and gnulib to top-level. This simplifies the build a bit and generally makes things more sane. It also provocatively names the new top-level directory "libgdb"... the circle is complete.
This needs some work, but I think it's still a good idea.
Multi-target work. See the wiki. This needs a pretty substantial revamp, I'm afraid, though I think the core concepts are salvageable, as are patches to convert particular targets (corelow comes to mind) to avoid global variables.
A decent chunk of the useful part of this is now on multi-target-corelow. The record-* target bits aren't (and probably must be redone) and the bits to add a target id to a ptid are not (and these may also need to be redone).
Some work extracted from multi-target and made prepped for submission. This converts the corelow and other targets to be multi-target-ready; introducing a new style of target instantiation to do so. It also adds the target stack.
A couple namespace tests, not sure why I thought this was needed.
An attempt to remove val_print
in favor of using only value_print
. This is still a good idea but not critical given that Intel has addressed VLA in a different way. Implementing this is just a big slog through a lot of code; the only real gotcha is making sure that gdb doesn't allocate too much temporary memory when printing; but even if it does there are probably reasonable ways to solve this.
A lot of code to implement new
and delete
in the C++ expression parser. This is incomplete, I think there's a list of issues in the README.archer. This patch perhaps more than any other convinced me that the compiler project was the way to go for users wanting real C++ expression parsing.
The patch to let you type "c" at the pagination prompt. This still needs a NEWS entry and maybe something else, you'll have to consult the list archives.
My attempt at fixing PR 12707. There's a thread about it on the list. I added my comments about 12707 to the PR, basically I came up with a completely different approach that should save memory in symbols and symbol tables and that also fixes this issue. However, it is a bit tricky and requires at least name canonicalization for all languages.
Fixes for AArch64, originally from PR 16155. Probably dead now or all upstreamed. There was one patch that I backed out as it was described as "obviously wrong", though I never actually understood what was wrong about it. I think there's a test for the questionable case on the branch, but of course no ready explanation.
Use the Linux process_vm_readv and process_vm_writev APIs. Only done for gdb, not gdbserver.
Allows for Python to override CLI commands but still call into the old underlying command -- quite handy. I hacked this up for FOSDEM.
Address a Python startup problem that Hui and others have pointed out. Discussion seems stalled.
Some random commands written in Python.
Build gdb as PIE and arrange for "import gdb" to work from an ordinary Python interpreter. This also has a number of other random Python changes and some unrelated struct shrinkages that I moved upstream already. The submit/python/* branches probably have everything relevant here.
Fixes PR 13351, I don't recall why it didn't go in.
Python progspace cleanups. Some changes were requested which I haven't gotten around to implementing.
A partial attempt to write a generic pretty-printer that understands the C struct hack. Probably a nice bit of infrastructure to provide.
A branch holding info mutex
. Probably none of it really works.
This is a fun one -- it changes the gdb "Loading ..." messages to use a nice progress bar. This looks much prettier; for one thing it gets rid of the output where gdb looks like it is interrupting itself to tell you about the separate debuginfo.
This kind of works though there are still some bugs. Also, for MI, there is a defined way to output these kind of progress messages, but as far as I can tell (I vaguely recall running into one spot but I can't find it now) nothing actually does so. So it isn't clear what to do there.
Crunch symbols to be a bit smaller. Fairly ugly so I never put it in. I think it does shave another word off of partial_symbol
though.
Static psymbols aren't sorted, so I was curious about the impact. Rather big startup slowdown, no noticeable improvements. So ... dead, but left around as a reminder.
Two split-objfile branches that I submitted upstream but have not put in. Not sure why other than vague fear and the sense that no-one cares.
Some attempts to remove the objfile backlink from struct type. This is necessary but not sufficient for split objfile to work. It's all discussed on the wiki page.
Try to fix PR 8300 -- gdb ignores DW_AT_static_link
. This needs some revamping to be cleaner. It has been blocked for a couple of years now because GCC still emits the wrong debuginfo (link to GCC PR in the GDB PR), so even if this went in, it would not work. The test case on this branch is still worth keeping even if the patch itself needs rewriting.
Stuff extracted from tromey/python/pie. The inferior-additions branch was submitted upstream (but needs changes). The PIE branch isn't polished yet.
A patch from the early days to make gdb multi-threaded and read DWARF in worker threads. I was proud of this branch so I never deleted it. I think it doesn't help any real-world case.
Change mumble_alloc (sizeof (type))
to MUMBLE_NEW (type)
. Attempts to do this everywhere in gdb. It's quite large but I think improves type-safety. This work found two (semi-) bugs in gdb, those fixes I pushed in.
Note that this could go one step further and introduce a _NEW
analogue to TYPE_ALLOC
. This would result in a few more conversions.
Not sure if the patch is complete.
Use yacc -p
instead of the current hacks. Surprisingly tricky to make this work.