diff --git a/mach/sun2/cv/cv.c b/mach/sun2/cv/cv.c index 690c6aba3..7d211b42e 100644 --- a/mach/sun2/cv/cv.c +++ b/mach/sun2/cv/cv.c @@ -517,7 +517,8 @@ emit_symtab() ACKnames = A; for (; i; i--, A++) { M->value = A->on_valu; - if (A->on_type & S_SCT || + M->desc = A->on_desc; + if ((A->on_type & S_SCT) || (A->on_type & S_ETC) == S_FIL) { static int rest_local; if (! unresolved || rest_local || (rest_local = is_rest_local(A, i))) { @@ -525,7 +526,10 @@ emit_symtab() continue; } } - if (A->on_type & S_COM) { + if (A->on_type & S_STB) { + M->type = A->on_type >> 8; + } + else if (A->on_type & S_COM) { M->type = N_UNDF | N_EXT; } else switch(A->on_type & S_TYP) { diff --git a/mach/sun3/cv/cv.c b/mach/sun3/cv/cv.c index 690c6aba3..7d211b42e 100644 --- a/mach/sun3/cv/cv.c +++ b/mach/sun3/cv/cv.c @@ -517,7 +517,8 @@ emit_symtab() ACKnames = A; for (; i; i--, A++) { M->value = A->on_valu; - if (A->on_type & S_SCT || + M->desc = A->on_desc; + if ((A->on_type & S_SCT) || (A->on_type & S_ETC) == S_FIL) { static int rest_local; if (! unresolved || rest_local || (rest_local = is_rest_local(A, i))) { @@ -525,7 +526,10 @@ emit_symtab() continue; } } - if (A->on_type & S_COM) { + if (A->on_type & S_STB) { + M->type = A->on_type >> 8; + } + else if (A->on_type & S_COM) { M->type = N_UNDF | N_EXT; } else switch(A->on_type & S_TYP) {