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:
Navdeep Parhar 2009-07-17 21:15:09 +00:00
parent 412c439591
commit d82ccc60d9
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=195747

View File

@ -236,7 +236,7 @@ dwarf_op_num(uint8_t pointer_size, uint8_t *p, int len)
case DW_OP_plus_uconst:
case DW_OP_regx:
case DW_OP_piece:
uval = dwarf_decode_sleb128(&p);
uval = dwarf_decode_uleb128(&p);
break;
/* 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_regx:
case DW_OP_piece:
operand1 = dwarf_decode_sleb128(&p);
operand1 = dwarf_decode_uleb128(&p);
break;
/* Operations with a signed LEB128 operand. */