010710.2 | A | D. Anderson | Representation | Change return register in CIE to ULEB |
Given that we are changing the version numbers of the dwarf
sections, it is appropriate to resurrect Felix Burton's proposal to
change the return_address_register in the CIE.
Originally proposed April 2000.
BACKGROUND
The description of the return_address_register in section
6.4.1 specifies that a "ubyte" constant represents the column
in the rule table. To my knowledge this is the only place a
ubyte is used instead of a uleb128.
PROPOSAL
Change the description to:
7. return_address_register
A uleb128 constant that indicates which column in the rule table
represents the return address of the function. Note that this
column might not correspond to an actual machine register.
COMMENTARY
At the time I observed that even with a machine with
lots of registers the 'return address register' could
be assigned a number <256.
However such might well seem unnatural, and we've
determined we will update dwarf-version-numbers, so
lets change this field to leb as Felix originally proposed
(no proposal number was applied at that time AFAICT).
The return address register is 31 for MIPS cpus:
a ubyte 31 and a uleb value of 31 have exactly the same
byte-representation. Few CPUs these days have enough
registers that this change would have any binary value impact.
But it's the right thing to do, as Felix Burton said at the time
he proposed it.
Adopted.