Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Jun 2019 16:38:30 +0000 (UTC)
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r349424 - head/contrib/elftoolchain/libdwarf
Message-ID:  <201906261638.x5QGcUac051233@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: markj
Date: Wed Jun 26 16:38:30 2019
New Revision: 349424
URL: https://svnweb.freebsd.org/changeset/base/349424

Log:
  libdwarf: Use the cached strtab pointer when reading string attributes.
  
  Previously we would perform a linear search of the DWARF section
  list for ".debug_str".  However, libdwarf always caches a pointer to
  the strtab image in its debug descriptor.  Using it gives a modest
  performance improvement when iterating over the attributes of each
  DIE.
  
  Reviewed by:	emaste
  MFC after:	1 week
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D20759

Modified:
  head/contrib/elftoolchain/libdwarf/libdwarf_attr.c

Modified: head/contrib/elftoolchain/libdwarf/libdwarf_attr.c
==============================================================================
--- head/contrib/elftoolchain/libdwarf/libdwarf_attr.c	Wed Jun 26 16:35:37 2019	(r349423)
+++ head/contrib/elftoolchain/libdwarf/libdwarf_attr.c	Wed Jun 26 16:38:30 2019	(r349424)
@@ -100,7 +100,6 @@ _dwarf_attr_init(Dwarf_Debug dbg, Dwarf_Section *ds, u
     uint64_t form, int indirect, Dwarf_Error *error)
 {
 	struct _Dwarf_Attribute atref;
-	Dwarf_Section *str;
 	int ret;
 
 	ret = DW_DLE_NONE;
@@ -183,9 +182,7 @@ _dwarf_attr_init(Dwarf_Debug dbg, Dwarf_Section *ds, u
 		break;
 	case DW_FORM_strp:
 		atref.u[0].u64 = dbg->read(ds->ds_data, offsetp, dwarf_size);
-		str = _dwarf_find_section(dbg, ".debug_str");
-		assert(str != NULL);
-		atref.u[1].s = (char *) str->ds_data + atref.u[0].u64;
+		atref.u[1].s = _dwarf_strtab_get_table(dbg) + atref.u[0].u64;
 		break;
 	case DW_FORM_ref_sig8:
 		atref.u[0].u64 = 8;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201906261638.x5QGcUac051233>