diff --git a/coregrind/vg_errcontext.c b/coregrind/vg_errcontext.c index 49d208fbf..6ba7343a9 100644 --- a/coregrind/vg_errcontext.c +++ b/coregrind/vg_errcontext.c @@ -315,8 +315,7 @@ void VG_(maybe_record_error) ( ThreadState* tst, /* OK, we're really going to collect it. First make a copy, because the error context is on the stack and will disappear shortly. We can duplicate the main part ourselves, but use - SK_(dup_extra_and_update) to duplicate the `extra' part (unless it's - NULL). + SK_(dup_extra_and_update) to duplicate the `extra' part. SK_(dup_extra_and_update) can also update the `extra' part. This is for when there are more details to fill in which take time to work out @@ -326,9 +325,7 @@ void VG_(maybe_record_error) ( ThreadState* tst, */ p = VG_(arena_malloc)(VG_AR_ERRORS, sizeof(Error)); *p = err; - if (NULL != err.extra) - p->extra = SK_(dup_extra_and_update)(p); - + p->extra = SK_(dup_extra_and_update)(p); p->next = vg_errors; p->supp = is_suppressible_error(&err); vg_errors = p; diff --git a/coregrind/vg_include.h b/coregrind/vg_include.h index 509697d9f..dcd03265c 100644 --- a/coregrind/vg_include.h +++ b/coregrind/vg_include.h @@ -1188,7 +1188,6 @@ struct _Error { /* NULL if unsuppressed; or ptr to suppression record. */ Supp* supp; Int count; - ExeContext* where; ThreadId tid; /* These record %EIP, %ESP and %EBP at the error point. They are only used to make GDB-attaching convenient; there is no @@ -1199,6 +1198,8 @@ struct _Error { UInt m_ebp; /* The skin-specific part */ + /* Initialised by core */ + ExeContext* where; /* Used by ALL. Must be in the range (0..) */ Int ekind; /* Used frequently */ diff --git a/coregrind/vg_needs.c b/coregrind/vg_needs.c index c725f9541..2caea8dfc 100644 --- a/coregrind/vg_needs.c +++ b/coregrind/vg_needs.c @@ -277,6 +277,11 @@ void VG_(set_supp_extra) ( Supp* su, void* extra ) /*--------------------------------------------------------------------*/ /* Errors */ +ExeContext* VG_(get_error_where) ( Error* err ) +{ + return err->ekind; +} + ErrorKind VG_(get_error_kind) ( Error* err ) { return err->ekind;