In D67768/D67492 I added support for entry values having blocks larger
than one byte, but I now noticed that the DIE implementation I added there
was broken. The takeNodes() function, that moves the entry value block
from a temporary buffer to the output buffer, would destroy the input
iterator when transferring the first node, meaning that only that node
was moved.
In practice, this meant that when emitting a call site value using a
DW_OP_entry_value operation with a DWARF register number larger than 31,
that multi-byte DW_OP_regx expression would be truncated.
Is IntrusiveBackList a circularly linked list, with an always-available pointer to the last element? If so, this lgtm, as the loop will terminate after going 'one past' the last node.
(This is outside the scope of this patch, but: it'd be really nice to check in some doxygen for IntrusiveBackList.)