mirror of
https://github.com/bminor/binutils-gdb.git
synced 2026-04-05 10:20:05 +00:00
libctf: dump: do not stop dumping types on error
If dumping of a single type fails, we obviously can't dump it; but just as obviously this doesn't make the other types in the types section invalid or undumpable. So we should not propagate errors seen when type-dumping, but rather ignore them and carry on, so we dump as many types as we can (leaving out the ones we can't grok). libctf/ChangeLog 2021-10-25 Nick Alcock <nick.alcock@oracle.com> * ctf-dump.c (ctf_dump_type): Do not abort on error.
This commit is contained in:
@@ -1,3 +1,7 @@
|
|||||||
|
2021-10-25 Nick Alcock <nick.alcock@oracle.com>
|
||||||
|
|
||||||
|
* ctf-dump.c (ctf_dump_type): Do not abort on error.
|
||||||
|
|
||||||
2021-09-27 Nick Alcock <nick.alcock@oracle.com>
|
2021-09-27 Nick Alcock <nick.alcock@oracle.com>
|
||||||
|
|
||||||
* ctf-lookup.c (ctf_lookup_by_name_internal): Fix pptrtab bounds.
|
* ctf-lookup.c (ctf_lookup_by_name_internal): Fix pptrtab bounds.
|
||||||
|
|||||||
@@ -564,7 +564,6 @@ ctf_dump_type (ctf_id_t id, int flag, void *arg)
|
|||||||
{
|
{
|
||||||
char *str;
|
char *str;
|
||||||
char *indent;
|
char *indent;
|
||||||
int err = 0;
|
|
||||||
ctf_dump_state_t *state = arg;
|
ctf_dump_state_t *state = arg;
|
||||||
ctf_dump_membstate_t membstate = { &str, state->cds_fp, NULL };
|
ctf_dump_membstate_t membstate = { &str, state->cds_fp, NULL };
|
||||||
|
|
||||||
@@ -619,9 +618,8 @@ ctf_dump_type (ctf_id_t id, int flag, void *arg)
|
|||||||
|
|
||||||
if (asprintf (&bit, "%s: %i\n", enumerand, value) < 0)
|
if (asprintf (&bit, "%s: %i\n", enumerand, value) < 0)
|
||||||
{
|
{
|
||||||
err = ENOMEM;
|
|
||||||
ctf_next_destroy (it);
|
ctf_next_destroy (it);
|
||||||
goto err;
|
goto oom;
|
||||||
}
|
}
|
||||||
str = str_append (str, bit);
|
str = str_append (str, bit);
|
||||||
free (bit);
|
free (bit);
|
||||||
@@ -648,7 +646,15 @@ ctf_dump_type (ctf_id_t id, int flag, void *arg)
|
|||||||
err:
|
err:
|
||||||
free (indent);
|
free (indent);
|
||||||
free (str);
|
free (str);
|
||||||
return ctf_set_errno (state->cds_fp, err);
|
|
||||||
|
/* Swallow the error: don't cause an error in one type to abort all
|
||||||
|
type dumping. */
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
oom:
|
||||||
|
free (indent);
|
||||||
|
free (str);
|
||||||
|
return ctf_set_errno (state->cds_fp, ENOMEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Dump the string table into the cds_items. */
|
/* Dump the string table into the cds_items. */
|
||||||
|
|||||||
Reference in New Issue
Block a user