btrace: Export btrace_decode_error function.

Signed-off-by: Tim Wiederhake <tim.wiederhake@intel.com>

gdb/ChangeLog:

	* record-btrace.c (btrace_ui_out_decode_error): Move most of it ...
	* btrace.c (btrace_decode_error): ... here.  New function.
	* btrace.h (btrace_decode_error): New export.

Change-Id: I2b4b43a55dbfd9f526a540d2ad52a6708f31feba
This commit is contained in:
Tim Wiederhake 2016-11-21 16:39:57 +01:00
parent 69090ceead
commit 508352a9bf
3 changed files with 57 additions and 55 deletions

View File

@ -1725,6 +1725,55 @@ btrace_maint_clear (struct btrace_thread_info *btinfo)
/* See btrace.h. */
const char *
btrace_decode_error (enum btrace_format format, int errcode)
{
switch (format)
{
case BTRACE_FORMAT_BTS:
switch (errcode)
{
case BDE_BTS_OVERFLOW:
return _("instruction overflow");
case BDE_BTS_INSN_SIZE:
return _("unknown instruction");
default:
break;
}
break;
#if defined (HAVE_LIBIPT)
case BTRACE_FORMAT_PT:
switch (errcode)
{
case BDE_PT_USER_QUIT:
return _("trace decode cancelled");
case BDE_PT_DISABLED:
return _("disabled");
case BDE_PT_OVERFLOW:
return _("overflow");
default:
if (errcode < 0)
return pt_errstr (pt_errcode (errcode));
break;
}
break;
#endif /* defined (HAVE_LIBIPT) */
default:
break;
}
return _("unknown");
}
/* See btrace.h. */
void
btrace_fetch (struct thread_info *tp)
{

View File

@ -384,6 +384,11 @@ extern void btrace_disable (struct thread_info *);
target_teardown_btrace instead of target_disable_btrace. */
extern void btrace_teardown (struct thread_info *);
/* Return a human readable error string for the given ERRCODE in FORMAT.
The pointer will never be NULL and must not be freed. */
extern const char *btrace_decode_error (enum btrace_format format, int errcode);
/* Fetch the branch trace for a single thread. */
extern void btrace_fetch (struct thread_info *);

View File

@ -468,63 +468,11 @@ static void
btrace_ui_out_decode_error (struct ui_out *uiout, int errcode,
enum btrace_format format)
{
const char *errstr;
int is_error;
errstr = _("unknown");
is_error = 1;
switch (format)
{
default:
break;
case BTRACE_FORMAT_BTS:
switch (errcode)
{
default:
break;
case BDE_BTS_OVERFLOW:
errstr = _("instruction overflow");
break;
case BDE_BTS_INSN_SIZE:
errstr = _("unknown instruction");
break;
}
break;
#if defined (HAVE_LIBIPT)
case BTRACE_FORMAT_PT:
switch (errcode)
{
case BDE_PT_USER_QUIT:
is_error = 0;
errstr = _("trace decode cancelled");
break;
case BDE_PT_DISABLED:
is_error = 0;
errstr = _("disabled");
break;
case BDE_PT_OVERFLOW:
is_error = 0;
errstr = _("overflow");
break;
default:
if (errcode < 0)
errstr = pt_errstr (pt_errcode (errcode));
break;
}
break;
#endif /* defined (HAVE_LIBIPT) */
}
const char *errstr = btrace_decode_error (format, errcode);
uiout->text (_("["));
if (is_error)
/* ERRCODE > 0 indicates notifications on BTRACE_FORMAT_PT. */
if (!(format == BTRACE_FORMAT_PT && errcode > 0))
{
uiout->text (_("decode error ("));
uiout->field_int ("errcode", errcode);