@@ -2644,6 +2644,13 @@ die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
attr = dwarf2_attr (die, DW_AT_external, cu);
if (attr == NULL&& die->parent->tag != DW_TAG_namespace)
return 0;
+ /* A variable in a lexical block of some kind does not need a
+ namespace, even though in C++ such variables may be
+ external and have a mangled name. */
+ if (die->parent->tag == DW_TAG_lexical_block
+ || die->parent->tag == DW_TAG_try_block
+ || die->parent->tag == DW_TAG_catch_block)
+ return 0;
return 1;
}
break;