*** cplus-dem.c Thu Jun 27 17:01:05 2002 --- cplus-dem.c.new Thu Jun 27 17:00:53 2002 *************** *** 2711,2716 **** --- 2711,2721 ---- } } } + else if ( (EDG_DEMANGLING) && strncmp(*mangled, "__SO__", 6) == 0) + { + /* it's a ARM global destructor to be executed at program exit */ + (*mangled) += 6; + } else if ((ARM_DEMANGLING || HP_DEMANGLING || EDG_DEMANGLING) && strncmp(*mangled, "__std__", 7) == 0) { /* it's a ARM global destructor to be executed at program exit */ *************** *** 2767,2773 **** /* The ARM says nothing about the mangling of local variables. But cfront mangles local variables by prepending __ to them. As an extension to ARM demangling we handle this case. */ ! if ((LUCID_DEMANGLING || ARM_DEMANGLING || HP_DEMANGLING) && ISDIGIT ((unsigned char)scan[2])) { *mangled = scan + 2; --- 2772,2793 ---- /* The ARM says nothing about the mangling of local variables. But cfront mangles local variables by prepending __ to them. As an extension to ARM demangling we handle this case. */ ! /* MAB 6/1/00 -- hard-coded KCC local variable demangling */ ! if (EDG_DEMANGLING && isdigit((unsigned char)scan[2])) { ! const char *scout = *mangled; ! scout+=2; /* skip __ */ ! consume_count(&scout); ! if ( *scout=='_' ) { ! scout++; ! consume_count(&scout); ! if ( *scout=='_' && *(scout+1)!='\0' ) { ! *mangled=scout+1; ! string_append (declp, *mangled); ! *mangled += strlen (*mangled); ! success = 1; ! } ! } ! } else if ((LUCID_DEMANGLING || ARM_DEMANGLING || HP_DEMANGLING) && ISDIGIT ((unsigned char)scan[2])) { *mangled = scan + 2;