aboutsummaryrefslogtreecommitdiff
path: root/contrib/elftoolchain/libdwarf
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2014-12-30 03:25:42 +0000
committerEd Maste <emaste@FreeBSD.org>2014-12-30 03:25:42 +0000
commit4a85c69160aa915853befc1efbcd83618d2eac03 (patch)
treede2207a7e901c24da6991f0a9fdabd4926d15e40 /contrib/elftoolchain/libdwarf
parent952fc99936a2748104ca69f1ba42264ee72d71fe (diff)
parent42bfa111d731278ff40f9ce45298e65a373c2064 (diff)
downloadsrc-4a85c69160aa915853befc1efbcd83618d2eac03.tar.gz
src-4a85c69160aa915853befc1efbcd83618d2eac03.zip
Update elftoolchain to upstream rev 3136
This fixes two strip(1) issues found during ports exp-run and adds a string hash implementation which significantly speeds up certain operations on objects with large numbers of symbols. This also improves libdwarf handling for stripped objects with .eh_frame or .debug_frame (but not other debug) sections. PR: 196107 Sponsored by: The FreeBSD Foundation
Notes
Notes: svn path=/head/; revision=276398
Diffstat (limited to 'contrib/elftoolchain/libdwarf')
-rw-r--r--contrib/elftoolchain/libdwarf/libdwarf_abbrev.c6
-rw-r--r--contrib/elftoolchain/libdwarf/libdwarf_info.c5
-rw-r--r--contrib/elftoolchain/libdwarf/libdwarf_init.c9
3 files changed, 9 insertions, 11 deletions
diff --git a/contrib/elftoolchain/libdwarf/libdwarf_abbrev.c b/contrib/elftoolchain/libdwarf/libdwarf_abbrev.c
index f4a395df0360..abcc2fda9580 100644
--- a/contrib/elftoolchain/libdwarf/libdwarf_abbrev.c
+++ b/contrib/elftoolchain/libdwarf/libdwarf_abbrev.c
@@ -27,7 +27,7 @@
#include "_libdwarf.h"
-ELFTC_VCSID("$Id: libdwarf_abbrev.c 2070 2011-10-27 03:05:32Z jkoshy $");
+ELFTC_VCSID("$Id: libdwarf_abbrev.c 3136 2014-12-24 16:04:38Z kaiwang27 $");
int
_dwarf_abbrev_add(Dwarf_CU cu, uint64_t entry, uint64_t tag, uint8_t children,
@@ -180,7 +180,9 @@ _dwarf_abbrev_find(Dwarf_CU cu, uint64_t entry, Dwarf_Abbrev *abp,
/* Load and search the abbrev table. */
ds = _dwarf_find_section(cu->cu_dbg, ".debug_abbrev");
- assert(ds != NULL);
+ if (ds == NULL)
+ return (DW_DLE_NO_ENTRY);
+
offset = cu->cu_abbrev_offset_cur;
while (offset < ds->ds_size) {
ret = _dwarf_abbrev_parse(cu->cu_dbg, cu, &offset, &ab, error);
diff --git a/contrib/elftoolchain/libdwarf/libdwarf_info.c b/contrib/elftoolchain/libdwarf/libdwarf_info.c
index 261bee6d933e..74765930aaed 100644
--- a/contrib/elftoolchain/libdwarf/libdwarf_info.c
+++ b/contrib/elftoolchain/libdwarf/libdwarf_info.c
@@ -27,7 +27,7 @@
#include "_libdwarf.h"
-ELFTC_VCSID("$Id: libdwarf_info.c 3041 2014-05-18 15:11:03Z kaiwang27 $");
+ELFTC_VCSID("$Id: libdwarf_info.c 3136 2014-12-24 16:04:38Z kaiwang27 $");
int
_dwarf_info_first_cu(Dwarf_Debug dbg, Dwarf_Error *error)
@@ -153,7 +153,8 @@ _dwarf_info_load(Dwarf_Debug dbg, Dwarf_Bool load_all, Dwarf_Bool is_info,
return (ret);
offset = dbg->dbg_info_off;
ds = dbg->dbg_info_sec;
- assert(ds != NULL);
+ if (ds == NULL)
+ return (DW_DLE_NO_ENTRY);
} else {
if (dbg->dbg_types_loaded)
return (ret);
diff --git a/contrib/elftoolchain/libdwarf/libdwarf_init.c b/contrib/elftoolchain/libdwarf/libdwarf_init.c
index 8e3fbbe5db36..b85c87c59af0 100644
--- a/contrib/elftoolchain/libdwarf/libdwarf_init.c
+++ b/contrib/elftoolchain/libdwarf/libdwarf_init.c
@@ -26,7 +26,7 @@
#include "_libdwarf.h"
-ELFTC_VCSID("$Id: libdwarf_init.c 3061 2014-06-02 00:42:41Z kaiwang27 $");
+ELFTC_VCSID("$Id: libdwarf_init.c 3136 2014-12-24 16:04:38Z kaiwang27 $");
static int
_dwarf_consumer_init(Dwarf_Debug dbg, Dwarf_Error *error)
@@ -93,12 +93,7 @@ _dwarf_consumer_init(Dwarf_Debug dbg, Dwarf_Error *error)
}
dbg->dbg_section[cnt].ds_name = NULL;
- if (_dwarf_find_section(dbg, ".debug_abbrev") == NULL ||
- ((dbg->dbg_info_sec = _dwarf_find_section(dbg, ".debug_info")) ==
- NULL)) {
- DWARF_SET_ERROR(dbg, error, DW_DLE_DEBUG_INFO_NULL);
- return (DW_DLE_DEBUG_INFO_NULL);
- }
+ dbg->dbg_info_sec = _dwarf_find_section(dbg, ".debug_info");
/* Try to find the optional DWARF4 .debug_types section. */
dbg->dbg_types_sec = _dwarf_find_next_types_section(dbg, NULL);