mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-12-16 06:08:09 +08:00
libctf: Sanitize error types for PR 30836
Made sure there is no implicit conversion between signed and unsigned return value for functions setting the ctf_errno value. An example of the problem is that in ctf_member_next, the "offset" value is either 0L or (ctf_id_t)-1L, but it should have been 0L or -1L. The issue was discovered while building a 64 bit ld binary to be executed on the Windows platform. Example object file that demonstrates the issue is attached in the PR. libctf/ Affected functions adjusted. Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com> Co-Authored-By: Yvan ROUX <yvan.roux@foss.st.com>
This commit is contained in:
@@ -243,8 +243,7 @@ ctf_link_lazy_open (ctf_dict_t *fp, ctf_link_input_t *input)
|
||||
#else
|
||||
ctf_err_warn (fp, 0, ECTF_NEEDSBFD, _("cannot open %s lazily"),
|
||||
input->clin_filename);
|
||||
ctf_set_errno (fp, ECTF_NEEDSBFD);
|
||||
return -1;
|
||||
return ctf_set_errno (fp, ECTF_NEEDSBFD);
|
||||
#endif
|
||||
|
||||
/* Having no CTF sections is not an error. We just don't need to do
|
||||
@@ -257,8 +256,7 @@ ctf_link_lazy_open (ctf_dict_t *fp, ctf_link_input_t *input)
|
||||
|
||||
ctf_err_warn (fp, 0, err, _("opening CTF %s failed"),
|
||||
input->clin_filename);
|
||||
ctf_set_errno (fp, err);
|
||||
return -1;
|
||||
return ctf_set_errno (fp, err);
|
||||
}
|
||||
|
||||
if ((count = ctf_archive_count (input->clin_arc)) == 0)
|
||||
@@ -680,8 +678,7 @@ ctf_link_deduplicating_count_inputs (ctf_dict_t *fp, ctf_dynhash_t *cu_names,
|
||||
{
|
||||
ctf_err_warn (fp, 0, err, _("iteration error counting deduplicating "
|
||||
"CTF link inputs"));
|
||||
ctf_set_errno (fp, err);
|
||||
return -1;
|
||||
return ctf_set_errno (fp, err);
|
||||
}
|
||||
|
||||
if (!count)
|
||||
@@ -1355,8 +1352,7 @@ ctf_link_empty_outputs (ctf_dict_t *fp)
|
||||
{
|
||||
fp->ctf_flags &= ~LCTF_LINKING;
|
||||
ctf_err_warn (fp, 1, err, _("iteration error removing old outputs"));
|
||||
ctf_set_errno (fp, err);
|
||||
return -1;
|
||||
return ctf_set_errno (fp, err);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1536,8 +1532,7 @@ ctf_link (ctf_dict_t *fp, int flags)
|
||||
{
|
||||
fp->ctf_flags &= ~LCTF_LINKING;
|
||||
ctf_err_warn (fp, 1, err, _("iteration error creating empty CUs"));
|
||||
ctf_set_errno (fp, err);
|
||||
return -1;
|
||||
return ctf_set_errno (fp, err);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user