aboutsummaryrefslogtreecommitdiff
path: root/gcc/libgcc2.c
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@cygnus.com>1998-06-23 10:51:47 +0000
committerAndrew Macleod <amacleod@gcc.gnu.org>1998-06-23 10:51:47 +0000
commit48b24bcdfac371ad5b71ec1bd0aa9d4f90614f9a (patch)
treeaf21d0438b598699c10f5dc4ab0887e3c57866b6 /gcc/libgcc2.c
parentdaf21dfd8018376476559ef65a4ffdf203839cc1 (diff)
downloadgcc-48b24bcdfac371ad5b71ec1bd0aa9d4f90614f9a.zip
gcc-48b24bcdfac371ad5b71ec1bd0aa9d4f90614f9a.tar.gz
gcc-48b24bcdfac371ad5b71ec1bd0aa9d4f90614f9a.tar.bz2
libgcc2.c (__get_eh_table_version, [...]): New functions to return exception descriptor information.
Tue Jun 23 13:38:18 EDT 1998 Andrew MacLeod <amacleod@cygnus.com> * libgcc2.c (__get_eh_table_version, __get_eh_table_language): New functions to return exception descriptor information. (find_exception_handler): Pass match_info field to runtime matcher, not a descriptor table entry. * exception.cc (__cplus_type_matcher): Get a match_info pointer instead of an exception table entry as a parameter. From-SVN: r20673
Diffstat (limited to 'gcc/libgcc2.c')
-rw-r--r--gcc/libgcc2.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c
index 4e17faf..30fa61a 100644
--- a/gcc/libgcc2.c
+++ b/gcc/libgcc2.c
@@ -3358,6 +3358,23 @@ EH_TABLE_LOOKUP
#ifdef DWARF2_UNWIND_INFO
+
+/* Return the table version of an exception descriptor */
+
+short
+__get_eh_table_version (exception_descriptor *table)
+{
+ return table->lang.version;
+}
+
+/* Return the originating table language of an exception descriptor */
+
+short
+__get_eh_table_language (exception_descriptor *table)
+{
+ return table->lang.language;
+}
+
/* This routine takes a PC and a pointer to the exception region TABLE for
its translation unit, and returns the address of the exception handler
associated with the closest exception table handler entry associated
@@ -3424,7 +3441,7 @@ find_exception_handler (void *pc, exception_descriptor *table, void *eh_info)
/* match info but no matcher is NOT a match */
if (matcher)
{
- ret = (*matcher)(eh_info, &tab[pos], table);
+ ret = (*matcher)(eh_info, tab[pos].match_info, table);
if (ret)
return tab[pos].exception_handler;
}