* The client should enter state REBINDING only when RENEWING times
out.
* When in RENEWING or REBINDING state do not give up retrying
unless the lease expires.
* Fix bug sending 2^n DHCP requests at n-th lease renewal.
* Use timeout values and renewal/rebinding times suggested by the
RFC.
* Use different XIDs in subsequent transactions.
This is a GNU extension for identifying the case of a template parameter
that is itself a template. We don't currently make use of it, but this
allows us to parse/skip it correctly.
With this change, webcore is loadable/debuggable on x86-64 when built
with -gdwarf-4, with the caveat that ~3-4GB of RAM are currently required.
- DIECompileUnit can also be marked with DW_AT_main_subprogram to
indicate that the main program resides within that particular unit.
- DIEBaseType and DIEMember now have the additional attribute
DW_AT_data_bit_offset which defines the offset in a somewhat different
manner than DWARF2/3's DW_AT_bit_offset, and deprecates the latter.
Unused/untested for the moment, as gcc 4.7.3 doesn't yet appear to be
generating either of the above attributes.
For return values too large to fit into EAX:EDX, the address at which
the value is located is stored in EAX. We were incorrectly assuming
they were at the current stack pointer, which isn't necessarily the
case depending on what optimization/code generation options were
used, leading to us sometimes showing the wrong values for such case.
The same issue showed up with debug binaries generated by Clang.
For DWARF4, gcc now sometimes emits member locations as constant
offsets from their parent rather than as location expressions.
We weren't handling this case properly, rather we were always
assuming that a constant offset implied we were dealing with a
bit field.
Fixes struct/class members not always having correct values on
version 4.
DWARF4 adds two new expression operands for values that are known, but
not located anywhere in memory (e.g. a known constant or a value computed
from a composite of other values/locations in the program). These are
DW_OP_implicit_value, which supplies the value directly as an LEB128 +
data block, and DW_OP_stack_value, which indicates the top of the
expression stack is the value.
Implements corresponding support in DwarfExpressionEvaluator,
ValueLocation and ValueLoader.
DIETypeUnit now inherits from DIECompileUnitBase in order to handle
things like setting the language info properly. This was previously
missing and would lead to occasional crashes with DWARF4.
Depending on how the type unit was actually set up hierarchically,
we sometimes ended up with the unit set to the wrong actual type
object. Instead, we now simply let the unit parse, and then look up
the entry by the offset specified in the header after all is said
and done. Fixes class/struct objects sometimes winding up resolving
to one of their members instead.
Some problems still remain with resolving variable values for such
types though, needs further investigation.
The DIEs generated by gcc sometimes pass a modified type for
DIEPointerToMember's containing type. As such, we need to resolve
the passed in type down to its base type before verifying that it's
indeed a compound type.
Type units need to be finished before compilation units to ensure that e.g.
modified types have their base types already set by the time we get to
compilation unit attributes.
- Add DwarfFile::_GetContainingCompilationUnit() to request a binary
search for the compilation unit containing the passed in global offset.
- DwarfFile::_ResolveReference(): handle global references by first
attempting to find a containing compilation unit, and then seeing if we
can find an entry for the corresponding relative offset within it.
Get rid of AC_EXPRESSION. DW_FORM_exprloc is for all practical intents
and purposes identical to DW_FORM_block except with a more explicit
intent. As such, simply treat it the same as a block attribute. Gets
value resolution working on DWARF4.
* push event requests on the event queue, handles them.
* activate feature VIRTIO_SCSI_F_CHANGE.
* when a capacity data changed event is received, schedule a rescan of the scsi device node
on the scsi dpc queue. we find out unique child node and call the rescan_node() hook.
* Haiku only handles media changed events on removable devices, so the feature
only actually works when the device is defined as such, aka for QEMU the following option:
-device scsi-hd,drive=hd,removable=true
* the processing of requests in drivers is eased a bit with this change, but
this could be improved for instance by enabling a driver to dequeue items
in a service thread instead of the interrupt handler.
* made a few methods const.