svn commit: r195747 - head/lib/libdwarf

Navdeep Parhar np at FreeBSD.org
Fri Jul 17 21:15:10 UTC 2009


Author: np
Date: Fri Jul 17 21:15:09 2009
New Revision: 195747
URL: http://svn.freebsd.org/changeset/base/195747

Log:
  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

Modified:
  head/lib/libdwarf/dwarf_loc.c

Modified: head/lib/libdwarf/dwarf_loc.c
==============================================================================
--- head/lib/libdwarf/dwarf_loc.c	Fri Jul 17 21:11:08 2009	(r195746)
+++ head/lib/libdwarf/dwarf_loc.c	Fri Jul 17 21:15:09 2009	(r195747)
@@ -236,7 +236,7 @@ dwarf_op_num(uint8_t pointer_size, uint8
 		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, uint
 		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. */


More information about the svn-src-head mailing list