sewardj | eadcd86 | 2006-04-04 15:12:44 +0000 | [diff] [blame] | 1 | |
| 2 | On 4 Apr 06, the debuginfo reader (m_debuginfo) was majorly cleaned up |
| 3 | and restructured. It has been a bit of a tangle for a while. The new |
| 4 | structure looks like this: |
| 5 | |
| 6 | debuginfo.c |
| 7 | |
| 8 | readelf.c |
| 9 | |
| 10 | readdwarf.c readstabs.c |
| 11 | |
| 12 | storage.c |
| 13 | |
| 14 | Each .c can only call those below it on the page. |
| 15 | |
| 16 | storage.c contains the SegInfo structure and stuff for |
| 17 | maintaining/searching arrays of symbols, line-numbers, and Dwarf CF |
| 18 | info records. |
| 19 | |
| 20 | readdwarf.c and readstabs.c parse the relevant kind of info and |
| 21 | call storage.c to store the results. |
| 22 | |
| 23 | readelf.c reads ELF format, hands syms directly to storage.c, |
| 24 | then delegates to readdwarf.c/readstabs.c for debug info. All |
| 25 | straightforward. |
| 26 | |
| 27 | debuginfo.c is the top-level file, and is quite small. |
| 28 | |
| 29 | There are 3 goals to this: |
| 30 | |
| 31 | (1) Generally tidy up something which needs tidying up |
| 32 | |
| 33 | (2) Introduce more modularity, so as to make it easier to add |
| 34 | readers for other formats, if needed |
| 35 | |
| 36 | (3) Simplify the stabs reader. |
| 37 | |
| 38 | Rationale for (1) and (2) are obvious. |
| 39 | |
| 40 | Re (3), the stabs reader has for a good year contained a sophisticated |
| 41 | and impressive parser for stabs strings, with the aim of recording in |
| 42 | detail the types of variables (I think) (Jeremy's work). Unfortunately |
| 43 | that has caused various segfaults reading stabs info in the past few months |
| 44 | (#77869, #117936, #119914, #120345 and another to do with deeply nested |
| 45 | template types). |
| 46 | |
| 47 | The worst thing is that it is the stabs type reader that is crashing, |
| 48 | not the stabs line-number reader, but the type info is only used by |
| 49 | Helgrind, which is looking pretty dead at the moment. So I have lifed |
| 50 | out the type-reader code and put it in UNUSED_STABS.txt for safe |
| 51 | storage, just leaving the line-number reader in place. |
| 52 | |
| 53 | If Helgrind ever does come back to life we will need to reinstate the |
| 54 | type storage/reader stuff but with DWARF as its primary target. |
| 55 | Placing the existing stabs type-reader in hibernation improves |
| 56 | stability whilst retaining the development effort/expertise that went |
| 57 | into it for possible future reinstatement. |