mirror of
git://sourceware.org/git/libabigail.git
synced 2024-12-16 06:54:37 +00:00
ctf: ctf_reader::read_corpus now sets a status
This patch makes ctf_reader::read_corpus to get a reference to a `status' variable as an argument, and set it to reflect the result of the read operation. The utilities calling to ctf_reader::read_corpus are updated accordingly. * include/abg-ctf-reader.h: Include abg-elf-reader-common.h. read_corpus now gets an extra argument `status'. * src/abg-ctf-reader.cc (read_corpus): Likewise, and set `status' accordingly when the debug info is not found. * tools/abilint.cc (main): Pass a status argument to ctf_reader::read_corpus. * tools/abidiff.cc (main): Likewise. Signed-off-by: Jose E. Marchesi <jose.marchesi@oracle.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
This commit is contained in:
parent
eea4e92b2d
commit
8324a223df
@ -17,6 +17,7 @@
|
||||
#include <ostream>
|
||||
#include "abg-corpus.h"
|
||||
#include "abg-suppression.h"
|
||||
#include "abg-elf-reader-common.h"
|
||||
|
||||
namespace abigail
|
||||
{
|
||||
@ -26,7 +27,8 @@ namespace ctf_reader
|
||||
class read_context;
|
||||
read_context *create_read_context (std::string elf_path,
|
||||
ir::environment *env);
|
||||
corpus_sptr read_corpus (read_context *ctxt);
|
||||
corpus_sptr read_corpus (read_context *ctxt,
|
||||
elf_reader::status& status);
|
||||
|
||||
} // end namespace ctf_reader
|
||||
} // end namespace abigail
|
||||
|
@ -1070,22 +1070,34 @@ create_read_context(std::string elf_path, ir::environment *env)
|
||||
/// Store the corpus in the same read context.
|
||||
///
|
||||
/// @param ctxt the read context to use.
|
||||
///
|
||||
/// @param status the resulting status of the corpus read.
|
||||
///
|
||||
/// @return a shared pointer to the read corpus.
|
||||
|
||||
corpus_sptr
|
||||
read_corpus(read_context *ctxt)
|
||||
read_corpus(read_context *ctxt, elf_reader::status &status)
|
||||
{
|
||||
corpus_sptr corp
|
||||
= std::make_shared<corpus>(ctxt->ir_env, ctxt->filename);
|
||||
|
||||
/* Be optimist. */
|
||||
status = elf_reader::STATUS_OK;
|
||||
|
||||
/* Open the ELF file. */
|
||||
if (!open_elf_handler(ctxt))
|
||||
return corp;
|
||||
{
|
||||
status = elf_reader::STATUS_DEBUG_INFO_NOT_FOUND;
|
||||
return corp;
|
||||
}
|
||||
|
||||
/* Set some properties of the corpus first. */
|
||||
corp->set_origin(corpus::CTF_ORIGIN);
|
||||
if (!slurp_elf_info(ctxt, corp))
|
||||
return corp;
|
||||
{
|
||||
status = elf_reader::STATUS_NO_SYMBOLS_FOUND;
|
||||
return corp;
|
||||
}
|
||||
|
||||
/* Build the ctfa from the contents of the relevant ELF sections,
|
||||
and process the CTF archive in the read context, if any.
|
||||
@ -1094,7 +1106,9 @@ read_corpus(read_context *ctxt)
|
||||
int errp;
|
||||
ctxt->ctfa = ctf_arc_bufopen(&ctxt->ctf_sect, &ctxt->symtab_sect,
|
||||
&ctxt->strtab_sect, &errp);
|
||||
if (ctxt->ctfa != NULL)
|
||||
if (ctxt->ctfa == NULL)
|
||||
status = elf_reader::STATUS_DEBUG_INFO_NOT_FOUND;
|
||||
else
|
||||
process_ctf_archive(ctxt, corp);
|
||||
|
||||
/* Cleanup and return. */
|
||||
|
@ -1174,7 +1174,7 @@ main(int argc, char* argv[])
|
||||
env.get());
|
||||
|
||||
assert (ctxt);
|
||||
c1 = abigail::ctf_reader::read_corpus (ctxt);
|
||||
c1 = abigail::ctf_reader::read_corpus (ctxt, c1_status);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@ -1257,7 +1257,7 @@ main(int argc, char* argv[])
|
||||
env.get());
|
||||
|
||||
assert (ctxt);
|
||||
c2 = abigail::ctf_reader::read_corpus (ctxt);
|
||||
c2 = abigail::ctf_reader::read_corpus (ctxt, c2_status);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
@ -375,7 +375,7 @@ main(int argc, char* argv[])
|
||||
env.get());
|
||||
|
||||
assert (ctxt);
|
||||
corp = abigail::ctf_reader::read_corpus (ctxt);
|
||||
corp = abigail::ctf_reader::read_corpus (ctxt, s);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user