[RFA 00/42] Remove globals from buildsym
Wed May 23 04:59:00 GMT 2018
I've long wanted to remove the globals from buildsym and generally
clean it up. I've finally tackled this project, and this series is
I'm afraid it is a bit on the long side. However, I tried to make
each patch relativey small. Most of them should be easy to review --
and a few are trivial.
Also, I simultaneously wrote this series and learned about some the
workings of buildsym. So, there are some cases where something is
done -- say, an assertion added or a variable made static -- only to
be un-done later in the series. Reordering seemed generally painful
so I have left it as is.
The general idea behind the patches is to move each global variable
(or related set of global variables) into the existing
buildsym_compunit structure. Along the way, some minor cleanups are
done, for example moving stabs-specific things to stabsread.
Once all of the state is in buildsym_compunit, it is put into
buildsym.h for use by symbol readers. Here, I've converted the DWARF
reader to use the new-style API, leaving the other readers alone.
(The other readers continue to rely on a global, but now only one.)
I haven't tried much to clean up buildsym itself. The API is just as
unwieldy as ever -- it just no longer has global state. I have,
however, replaced some data structures with self-managing ones.
There are some holes with the series that you may wish to consider.
* Perhaps some more comments could be added.
* There are still some stabs-specific hacks in buildsym.c that I have
not attempted to remove.
* There are some remaining calls to set_last_source_file (NULL) that
could perhaps be removed as unnecessary. I did not check.
Regression tested by the buildbot. I also did a reasonable, but not
exhaustive, amount of testing here. I've at least smoke-tested the
stabs reader by running some tests with --target_board=stabs.
More information about the Gdb-patches