Store accurate offset information in CTF data. A large number of
structs had incorrect member offsets, limiting dtrace's usefulness when working with them. An example of incorrect info (struct rtentry) from before this fix: <1738> STRUCT rtentry (200 bytes) rt_nodes type=1731 off=0 rt_gateway type=849 off=65280 <== WRONG, should be 8 * 96 rt_flags type=3 off=65344 <== wrong again, and so on.. ... Approved by: re (kib), gnn (mentor) MFC after: 2 weeks
This commit is contained in:
parent
412c439591
commit
d82ccc60d9
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=195747
@ -236,7 +236,7 @@ dwarf_op_num(uint8_t pointer_size, uint8_t *p, int len)
|
|||||||
case DW_OP_plus_uconst:
|
case DW_OP_plus_uconst:
|
||||||
case DW_OP_regx:
|
case DW_OP_regx:
|
||||||
case DW_OP_piece:
|
case DW_OP_piece:
|
||||||
uval = dwarf_decode_sleb128(&p);
|
uval = dwarf_decode_uleb128(&p);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Operations with a signed LEB128 operand. */
|
/* Operations with a signed LEB128 operand. */
|
||||||
@ -458,7 +458,7 @@ dwarf_loc_fill(Dwarf_Locdesc *lbuf, uint8_t pointer_size, uint8_t *p, int len)
|
|||||||
case DW_OP_plus_uconst:
|
case DW_OP_plus_uconst:
|
||||||
case DW_OP_regx:
|
case DW_OP_regx:
|
||||||
case DW_OP_piece:
|
case DW_OP_piece:
|
||||||
operand1 = dwarf_decode_sleb128(&p);
|
operand1 = dwarf_decode_uleb128(&p);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Operations with a signed LEB128 operand. */
|
/* Operations with a signed LEB128 operand. */
|
||||||
|
Loading…
Reference in New Issue
Block a user