Commit b139fcfd by Andrew Haley Committed by Andrew Haley

verify.c (verify_jvm_instructions): Allow exception handler inside code that is…

verify.c (verify_jvm_instructions): Allow exception handler inside code that is being protected, but generate a warning.

2002-08-28  Andrew Haley  <aph@redhat.com>

	* verify.c (verify_jvm_instructions): Allow exception handler
	inside code that is being protected, but generate a warning.
	* except.c (link_handler): Initialize `expanded' in new eh_range.
	(binding_depth, is_class_level, current_pc): Declare extern.

From-SVN: r56842
parent f373d4c7
2002-08-28 Andrew Haley <aph@redhat.com>
* verify.c (verify_jvm_instructions): Allow exception handler
inside code that is being protected, but generate a warning.
* except.c (link_handler): Initialize `expanded' in new eh_range.
(binding_depth, is_class_level, current_pc): Declare extern.
2002-09-01 Mark Wielaard <mark@klomp.org> 2002-09-01 Mark Wielaard <mark@klomp.org>
* gcj.texi: Add chapter about system properties. * gcj.texi: Add chapter about system properties.
......
...@@ -61,9 +61,9 @@ static struct eh_range *cache_next_child; ...@@ -61,9 +61,9 @@ static struct eh_range *cache_next_child;
struct eh_range whole_range; struct eh_range whole_range;
#if defined(DEBUG_JAVA_BINDING_LEVELS) #if defined(DEBUG_JAVA_BINDING_LEVELS)
int binding_depth; extern int binding_depth;
int is_class_level; extern int is_class_level;
int current_pc; extern int current_pc;
extern void indent (); extern void indent ();
#endif #endif
...@@ -172,6 +172,7 @@ link_handler (range, outer) ...@@ -172,6 +172,7 @@ link_handler (range, outer)
h->handlers = build_tree_list (TREE_PURPOSE (range->handlers), h->handlers = build_tree_list (TREE_PURPOSE (range->handlers),
TREE_VALUE (range->handlers)); TREE_VALUE (range->handlers));
h->next_sibling = NULL; h->next_sibling = NULL;
h->expanded = 0;
/* Restart both from the top to avoid having to make this /* Restart both from the top to avoid having to make this
function smart about reentrancy. */ function smart about reentrancy. */
link_handler (h, &whole_range); link_handler (h, &whole_range);
......
...@@ -471,7 +471,6 @@ verify_jvm_instructions (jcf, byte_ops, length) ...@@ -471,7 +471,6 @@ verify_jvm_instructions (jcf, byte_ops, length)
if (start_pc < 0 || start_pc >= length if (start_pc < 0 || start_pc >= length
|| end_pc < 0 || end_pc > length || start_pc >= end_pc || end_pc < 0 || end_pc > length || start_pc >= end_pc
|| handler_pc < 0 || handler_pc >= length || handler_pc < 0 || handler_pc >= length
|| (handler_pc >= start_pc && handler_pc < end_pc)
|| ! (instruction_bits [start_pc] & BCODE_INSTRUCTION_START) || ! (instruction_bits [start_pc] & BCODE_INSTRUCTION_START)
|| (end_pc < length && || (end_pc < length &&
! (instruction_bits [end_pc] & BCODE_INSTRUCTION_START)) ! (instruction_bits [end_pc] & BCODE_INSTRUCTION_START))
...@@ -482,6 +481,9 @@ verify_jvm_instructions (jcf, byte_ops, length) ...@@ -482,6 +481,9 @@ verify_jvm_instructions (jcf, byte_ops, length)
return 0; return 0;
} }
if (handler_pc >= start_pc && handler_pc < end_pc)
warning ("exception handler inside code that is being protected");
add_handler (start_pc, end_pc, add_handler (start_pc, end_pc,
lookup_label (handler_pc), lookup_label (handler_pc),
catch_type == 0 ? NULL_TREE catch_type == 0 ? NULL_TREE
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment