mirror of
git://sourceware.org/git/libabigail.git
synced 2025-03-05 06:07:49 +00:00
ir: Add a debug_comp_stack debugging function
When debugging type comparison, it can useful to see what the comparison stack is. This patch adds the a debug_comp_stack to dump the comparison stack as a string. * include/abg-fwd.h (debug_comp_stack): Declare function. * src/abg-ir.cc (debug_comp_vec, print_comp_stack): Define static functions. (debug_comp_stack): Define new function. Signed-off-by: Dodji Seketeli <dodji@seketeli.org>
This commit is contained in:
parent
c2cab36429
commit
fd821dd4db
@ -1056,6 +1056,9 @@ debug(const decl_base* artifact);
|
|||||||
bool
|
bool
|
||||||
debug_equals(const type_or_decl_base *l, const type_or_decl_base *r);
|
debug_equals(const type_or_decl_base *l, const type_or_decl_base *r);
|
||||||
|
|
||||||
|
void
|
||||||
|
debug_comp_stack(const environment& env);
|
||||||
|
|
||||||
bool
|
bool
|
||||||
odr_is_relevant(const type_or_decl_base&);
|
odr_is_relevant(const type_or_decl_base&);
|
||||||
|
|
||||||
|
@ -9533,6 +9533,52 @@ debug_equals(const type_or_decl_base *l, const type_or_decl_base *r)
|
|||||||
return (*l == *r);
|
return (*l == *r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Emit a trace of a comparison operand stack.
|
||||||
|
///
|
||||||
|
/// @param vect the operand stack to emit the trace for.
|
||||||
|
///
|
||||||
|
/// @param o the output stream to emit the trace to.
|
||||||
|
static void
|
||||||
|
debug_comp_vec(const vector<const type_base*>& vect, std::ostringstream& o)
|
||||||
|
{
|
||||||
|
for (auto t : vect)
|
||||||
|
{
|
||||||
|
o << "|" << t->get_pretty_representation()
|
||||||
|
<< "@" << std::hex << t << std::dec;
|
||||||
|
}
|
||||||
|
if (!vect.empty())
|
||||||
|
o << "|";
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Construct a trace of the two comparison operand stacks.
|
||||||
|
///
|
||||||
|
/// @param the environment in which the comparison operand stacks are.
|
||||||
|
///
|
||||||
|
/// @return a string representing the trace.
|
||||||
|
static string
|
||||||
|
print_comp_stack(const environment& env)
|
||||||
|
{
|
||||||
|
std::ostringstream o;
|
||||||
|
o << "left-operands: ";
|
||||||
|
debug_comp_vec(env.priv_->left_type_comp_operands_, o);
|
||||||
|
o << "\n" << "right-operands: ";
|
||||||
|
debug_comp_vec(env.priv_->right_type_comp_operands_, o);
|
||||||
|
o << "\n";
|
||||||
|
return o.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Emit a trace of the two comparison operands stack on the standard
|
||||||
|
/// error stream.
|
||||||
|
///
|
||||||
|
/// @param env the environment the comparison operands stack belong
|
||||||
|
/// to.
|
||||||
|
void
|
||||||
|
debug_comp_stack(const environment& env)
|
||||||
|
{
|
||||||
|
std::cerr << print_comp_stack(env);
|
||||||
|
std::cerr << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
/// By looking at the language of the TU a given ABI artifact belongs
|
/// By looking at the language of the TU a given ABI artifact belongs
|
||||||
/// to, test if the ONE Definition Rule should apply.
|
/// to, test if the ONE Definition Rule should apply.
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user