- Since BasicTargetInterface is a BReferenceable, we must not create it
on the stack, else it will be destroyed while others still have
references to it. Fixes various random crashes, though most frequently
observable when typecasting with more complex types.
Love this feature, but, color schema is not a thing, it is a color
scheme. Change both the display text and the variable names.
Also changed "Retro Terminal" color scheme to just "Retro". Terminal
is redundant.
The value computed isn't actually used anywhere. It just ensured that
a panic would be triggered if we "skipped" to virtual addresses further
along. This shouldn't be problematic however.
This makes it less likely that uninitialized entries cause troubles.
Also panic if we encounter an unknown entry type instead of defaulting
to 4K pages.
And actually use the virtual address for it later on. This wasn't
problematic as the virtual and physical addresses are identity mapped,
but it seems more correct to do it in this order.
- BListValueNode now also handles BObjectLists. In the latter's case
however, it uses the template type parameters to map the array
elements to their actual type. As before, this requires a debug
libbe to function.
- Keep a unified list in DIEClassBaseType so that the order
of template parameters is preserved in cases when type and
value parameters are mixed. Thanks Ingo for the hint.
- Introduce new base Type TemplateParameter, which represents either
a template type or template value parameter, a list of which is
attached to CompoundType.
- Add DwarfTemplateParameter implementing subclass of TemplateParameter
and adjust DwarfTypeFactory accordingly for the above changes.
- Adjust CompoundType to add accessors for template type and value
parameters.
- Add DwarfCompoundType/DwarfTypeFactory handling for template
template type parameters.
- When a debugging libbe is present, and a BList is encountered,
we now read its internal structure and expose it as if it were an
array of pointers. Combined with typecasting, this means one can
now easily inspect the content of such a list.
* The hashtable stored complete Inode objects (albeit without the actual block).
* Now we only store the block_run which should reduce the memory footprint
considerably; before "recover" could easily run out of memory. In any case,
a 64 bit version would still make sense to have :-)
* Saved an extra hash table traversal by counting the node types directly.
* This isn't that well tested yet, though.
- If a program crashed due to an invalid function pointer, the stack
was being incorrectly unwound such that the top frame would actually
be skipped, preventing one from seeing the actual line of code that
invoked said pointer. On x86, we now check if the IP of the top frame
of the stack lies at a readable location in order to catch this case.