static char *rcsid
= "$Header: /f/osi/pepsy/RCS/ptabs.c,v 7.8 91/02/22 09:49:58 mrose Interim $";
* $Header: /f/osi/pepsy/RCS/ptabs.c,v 7.8 91/02/22 09:49:58 mrose Interim $
* Revision 7.8 91/02/22 09:49:58 mrose
* Revision 7.7 91/01/08 12:50:56 mrose
* Revision 7.6 90/12/23 17:25:26 mrose
* Revision 7.5 90/12/11 10:41:09 mrose
* Revision 7.4 90/11/11 10:54:20 mrose
* Revision 7.3 90/11/04 19:21:09 mrose
* Revision 7.2 90/07/27 08:49:29 mrose
* Revision 7.1 90/07/09 14:53:16 mrose
* Acquisition, use, and distribution of this module and related
* materials are subject to the restrictions of a license agreement.
* Consult the Preface in the User's Manual for the full terms of
extern char *c_tag(), *c_class();
extern char *ec_tag(), *ec_class(), *pec_class();
extern char *strip_last();
extern char *str_yp_code
[];
extern char *get_val(), *get_comp(), *strp2name();
extern s_table
*lookup_list(), *get_offset();
extern char *my_strcat();
extern char *rm_indirect();
static int cons_type
= 0;
* Marshall's three extra conditions for changing the printing output
static int mrose1
; /* if NamedType */
static int mrose2
; /* !mrose1 && -h && DefinedType */
static int mrose3
; /* (mrose1 || !mrose2) && TAG && (OPTIONAL|DEFAULT) */
* table printe a type. generate tables for the printing of a type
tprnt_typ(fp
, yp
, id
, type
)
if (yp
->yp_code
< 0 || yp
->yp_code
> YP_REAL
)
ferrd(1, "tdec_typ: unimplemented type %d\n", yp
->yp_code
);
ferr(0, "tprnt_typ:NULL arguement\n");
if (yp
->yp_bef_alist
&& yp
->yp_bef_alist
->yal_prn
)
gen_act(fp
, yp
->yp_bef_alist
->yal_prn
);
if (yp
->yp_flags
& YP_ID
)
if (!mrose1
&& hflag
&& yp
->yp_code
== YP_IDEFINED
)
if ((mrose1
|| !mrose2
) && yp
->yp_flags
& YP_TAG
&& yp
->yp_flags
& (YP_OPTIONAL
|YP_DEFAULT
))
else if (yp
->yp_param_type
) {
/* we have a [[ P type ]] specification */
if ((t1
= rm_indirect(yp
->yp_param_type
)) == NULLCP
) {
"\ntenc_typ:SETLIST can't extract direct type from %s\n",
t
= my_strcat("struct ", modsym(mymodule
, id
, "type"));
if ((yp
->yp_flags
& YP_PARMVAL
) && yp
->yp_parm
) {
if ((f
= getfield(yp
->yp_parm
)) == NULLCP
) {
fprintf(stderr
, "\ntprnt_typ:can't extract field from %s\n",
if ((yp
->yp_flags
& (YP_OPTIONAL
|YP_OPTCONTROL
|YP_DEFAULT
))
== (YP_OPTIONAL
|YP_OPTCONTROL
)) {
yp
->yp_flags
&= ~YP_OPTCONTROL
;
if (yp
->yp_flags
& YP_TAG
&& !(yp
->yp_flags
& YP_IMPLICIT
)) {
prte_enoff(fp
, "ETAG", yp
, ptr_tblidx
);
if (yp
->yp_yfn
&& yp
->yp_yfn
->yfn_prt
) {
gen_fn(fp
, yp
, yp
->yp_yfn
->yfn_prt
);
if (yp
->yp_flags
& YP_DEFAULT
)
if (yp
->yp_aft_alist
&& yp
->yp_aft_alist
->yal_prn
)
gen_act(fp
, yp
->yp_aft_alist
->yal_prn
);
ferr(1, "tprnt_typ:Undefined type\n");
f
= setfield(yp
->yp_intexp
);
ferr(1, "tdec_typ:BOOL: must specify a field [[ b .. ]]\n");
if (yp
->yp_varexp
|| (yp
->yp_intexp
&& !noindirect(f
)))
ferr(1, "tdec_typ:BOOL: can't find a type for boolean\n");
/* This needs to be fixed up in the action generating area */
f
= setfield(yp
->yp_intexp
);
ferr(1, "tdec_typ:INT: must specify a field [[ i .. ]]\n");
if (yp
->yp_varexp
|| (yp
->yp_intexp
&& !noindirect(f
)))
ferr(1, "tdec_typ:INT: couldn't determine type\n");
f
= setfield(yp
->yp_strexp
);
ferr(1, "tdec_typ:REAL: must specify a field [[ r .. ]]\n");
if (yp
->yp_varexp
|| (yp
->yp_strexp
&& !noindirect(f
)))
ferr(1, "tdec_typ:INT: couldn't determine type\n");
ptr_tblidx
= addptr (modsym(mymodule
,
yp
->yp_varexp
? yp
-> yp_varexp
: id
,
if (yp
->yp_strexp
&& yp
->yp_intexp
) {
f
= setfield(yp
->yp_strexp
);
ferr(1, "tdec_typ:BIT: must specify a field [[ x .. ]]\n");
prte_off(fp
, p1
, yp
, t
, f
, ptr_tblidx
);
f
= setfield(yp
->yp_intexp
);
ferr(1, "tdec_typ:BIT: must specify a field [[ x .. ]]\n");
if (yp
->yp_strexp
== NULLCP
&& yp
->yp_intexp
)
f
= setfield(yp
->yp_intexp
);
if (yp
->yp_varexp
|| (yp
->yp_strexp
&& !noindirect(f
))) {
(void) fprintf(fp
, "\t{ SBITSTRING, %d, %s, %s, NULL },\n",
ptr_tblidx
, c_tag(yp
), c_class(yp
));
case 'q': /* [[ q parm->qbufptr ]] */
f
= setfield(yp
->yp_strexp
);
case 's': /* [[ s ptr ]] */
f
= setfield(yp
->yp_strexp
);
ferr(1, "tdec_typ:OCT: must specify a field [[ s .. ]]\n");
case 'o': /* [[ o ptr $ length ]] */
f
= setfield(yp
->yp_strexp
);
ferr(1, "tdec_typ:OCT: must specify a field [[ o .. ]]\n");
prte_off(fp
, p1
, yp
, t
, f
, ptr_tblidx
);
f
= setfield(yp
->yp_intexp
);
ferr(1, "tdec_typ:OCT: must specify a field [[ o .. ]]\n");
fprintf(stderr
,"\ntprnt_typ:Unknown Octet string specifier %c\n",
if (f
&& !noindirect(f
)) {
prte_noff(fp
, "SOCTETSTRING", yp
, ptr_tblidx
);
f
= setfield(yp
->yp_strexp
);
if (yp
->yp_varexp
|| (yp
->yp_strexp
&& !noindirect(f
))) {
prte_noff(fp
, "SOBJID", yp
, ptr_tblidx
);
f
= setfield(yp
->yp_strexp
);
if (yp
->yp_varexp
|| (yp
->yp_strexp
&& !noindirect(f
))) {
prte_noff(fp
, "SANY", yp
, ptr_tblidx
);
if ((yp
->yp_flags
& YP_PARMVAL
) && yp
->yp_prfexp
)
"\n[[ ? reference ]] [[ p reference ]] is illegal\n\t only one allowed\n");
if (yp
->yp_prfexp
) { /* [[ ? parm->field ]] - complex to process */
gen_identry(fp
, t
, f
, yp
, gen_pentry
);
if (yp
->yp_flags
& YP_DEFAULT
)
if (yp
->yp_flags
& YP_DEFAULT
)
/* support for -h flag */
if (yp
->yp_varexp
== NULL
&& type
!= NULL
)
ferr(1, "tprnt_typ:YP_SEQLIST:NULL varexp pointer\n");
prte_noff(fp
, "SSEQ_START", yp
, ptr_tblidx
);
prte_noff(fp
, "SSEQ_START", yp
, ptr_tblidx
);
prte_off(fp
, "SEQ_START", yp
, t
, f
, ptr_tblidx
);
if (yp
->yp_flags
& YP_DEFAULT
)
/* we have a [[ P type ]] specification */
if ((t1
= rm_indirect(yp
->yp_param_type
)) == NULLCP
) {
"\ntprnt_typ:SEQLIST can't extract direct type from %s\n",
yp
->yp_structname
= strdup(t1
);
if (yp
->yp_declexp
== NULL
)
ferr(1, "tprnt_typ:YP_SEQLIST:no declexp\n");
yp
->yp_structname
= my_strcat("struct ", yp
->yp_declexp
);
"\t{ OPTL, OFFSET(%s, optionals), 0, 0, NULL },\n",
tprnt_loop(fp
, y
, id
, yp
->yp_structname
);
(void) fprintf(fp
, "\t{ PE_END, 0, 0, 0, NULL },\n");
/* support for -h flag */
if (yp
->yp_varexp
== NULL
&& type
!= NULL
)
ferr(1, "tprnt_typ:YP_SETLIST:NULL varexp pointer\n");
prte_noff(fp
, "SSET_START", yp
, ptr_tblidx
);
prte_noff(fp
, "SSET_START", yp
, ptr_tblidx
);
prte_off(fp
, "SET_START", yp
, t
, f
, ptr_tblidx
);
if (yp
->yp_flags
& YP_DEFAULT
)
/* we have a [[ P type ]] specification */
if ((t1
= rm_indirect(yp
->yp_param_type
)) == NULLCP
) {
"\ntprnt_typ:SETLIST can't extract direct type from %s\n",
yp
->yp_structname
= strdup(t1
);
if (yp
->yp_declexp
== NULL
)
ferr(1, "tprnt_typ:YP_SETLIST:no declexp\n");
yp
->yp_structname
= my_strcat("struct ", yp
->yp_declexp
);
"\t{ OPTL, OFFSET(%s, optionals), 0, 0, NULL },\n",
tprnt_loop(fp
, y
, id
, yp
->yp_structname
);
(void) fprintf(fp
, "\t{ PE_END, 0, 0, 0, NULL },\n");
case YP_SEQTYPE
: /* What is the difference ?? */
prte_noff(fp
, "SSEQOF_START", yp
, ptr_tblidx
);
prte_noff(fp
, "SSEQOF_START", yp
, ptr_tblidx
);
prte_off(fp
, "SEQOF_START", yp
, t
, f
, ptr_tblidx
);
if (yp
->yp_flags
& YP_DEFAULT
)
/* we have a [[ P type ]] specification */
if ((t1
= rm_indirect(yp
->yp_param_type
)) == NULLCP
) {
"\ntprnt_typ:SEQTYPE can't extract direct type from %s\n",
yp
->yp_structname
= strdup(t1
);
if (yp
->yp_declexp
== NULL
)
ferr(1, "tprnt_typ:YP_SEQTYPE:no declexp\n");
yp
->yp_structname
= my_strcat("struct ", yp
->yp_declexp
);
tprnt_loop(fp
, y
, id
, yp
->yp_structname
);
if (yp
->yp_flags
& YP_CONTROLLED
) {
if ((f1
= getfield(yp
->yp_control
)) == NULLCP
) {
fprintf(stderr
, "\ntprnt_typ:SEQ OF: can't extract field from %s\n",
(void) fprintf(fp
, "\t{ PE_END, OFFSET(%s, %s), 0, 0 },\n",
} else if (yp
->yp_structname
!= NULL
)
"\t{ PE_END, OFFSET(%s, next), 0, 0, NULL },\n",
(void) fprintf(fp
, "\t{ PE_END, 0, 0, 0, NULL },\n");
prte_noff(fp
, "SSETOF_START", yp
, ptr_tblidx
);
prte_noff(fp
, "SSETOF_START", yp
, ptr_tblidx
);
prte_off(fp
, "SETOF_START", yp
, t
, f
, ptr_tblidx
);
if (yp
->yp_flags
& YP_DEFAULT
)
/* we have a [[ P type ]] specification */
if ((t1
= rm_indirect(yp
->yp_param_type
)) == NULLCP
) {
"\ntprnt_typ:SETTYPE can't extract direct type from %s\n",
yp
->yp_structname
= strdup(t1
);
if (yp
->yp_declexp
== NULL
)
ferr(1, "tprnt_typ:YP_SETTYPE:no declexp\n");
yp
->yp_structname
= my_strcat("struct ", yp
->yp_declexp
);
tprnt_loop(fp
, y
, id
, yp
->yp_structname
);
if (yp
->yp_flags
& YP_CONTROLLED
) {
if ((f1
= getfield(yp
->yp_control
)) == NULLCP
) {
fprintf(stderr
, "\ntprnt_typ:SET OF: can't extract field from %s\n",
(void) fprintf(fp
, "\t{ PE_END, OFFSET(%s, %s), 0, 0 },\n",
} else if (yp
->yp_structname
!= NULL
)
"\t{ PE_END, OFFSET(%s, next), 0, 0, NULL },\n",
(void) fprintf(fp
, "\t{ PE_END, 0, 0, 0, NULL },\n");
/* support for -h flag */
if (hflag
&& (y
= yp
->yp_type
) && !y
->yp_next
) {
tprnt_typ(fp
, y
, id
, yp
->yp_structname
);
/* Generates an unused tags field - so beware */
prte_noff(fp
, "SCHOICE_START", yp
, ptr_tblidx
);
prte_noff(fp
, "SCHOICE_START", yp
, ptr_tblidx
);
prte_off(fp
, "CHOICE_START", yp
, t
, f
, ptr_tblidx
);
if (yp
->yp_flags
& YP_DEFAULT
)
if (yp
->yp_flags
& YP_CONTROLLED
) {
if ((f1
= getfield(yp
->yp_control
)) == NULLCP
) {
"\ntprnt_typ:CHOICE: can't extract field from %s\n",
if ((yp
->yp_flags
& YP_ID
) && yp
->yp_id
)
"\t{ SCTRL, OFFSET(%s, %s), 0, 0, \"%s\" },\n",
yp
->yp_structname
, f1
, yp
->yp_id
);
"\t{ SCTRL, OFFSET(%s, %s), 0, 0, NULL },\n",
if ((yp
->yp_flags
& YP_ID
) && yp
->yp_id
)
(void) fprintf(fp
,"\t{ SCTRL, 0, 0, 0, \"%s\" },\n",
(void) fprintf(fp
, "\t{ SCTRL, 0, 0, 0, NULL },\n");
/* we have a [[ P type ]] specification */
if ((t1
= rm_indirect(yp
->yp_param_type
)) == NULLCP
) {
"\ntprnt_typ:CHOICE can't extract direct type from %s\n",
yp
->yp_structname
= strdup(t1
);
if (yp
->yp_declexp
== NULL
)
ferr(1, "tprnt_typ:YP_CHOICE:no declexp\n");
yp
->yp_structname
= my_strcat("struct ", yp
->yp_declexp
);
tprnt_loop(fp
, y
, id
, yp
->yp_structname
);
(void) fprintf(fp
, "\t{ PE_END, 0, 0, 0, NULL },\n");
ferrd(1, "tprnt_typ: yp_code = %d not implemented\n", yp
->yp_code
);
prte_off(fp
, p1
, yp
, t
, f
, ptr_tblidx
);
prte_noff(fp
, p1
, yp
, ptr_tblidx
);
if (yp
->yp_flags
& YP_DEFAULT
)
yp
->yp_flags
|= YP_OPTCONTROL
;
if (yp
->yp_aft_alist
&& yp
->yp_aft_alist
->yal_prn
)
gen_act(fp
, yp
->yp_aft_alist
->yal_prn
);
0, 1, 2, 2, 3, 3, 4, 5, 16, 16, 16, 17, 17, 17,
* generate tables for printing a contructed type
tprnt_loop(fp
, yp
, id
, type
)
for (; yp
!= NULL
; yp
= yp
->yp_next
) {
tprnt_typ(fp
, yp
, id
, type
);
(void) fprintf(fp
, "\t{DFLT_B, %d, 0, 0 },\n",
yp
->yp_default
->yv_number
);
(void) fprintf(fp
, "\t{DFLT_B, 0, 0, 0 },\n");
ferr(1, "ddflt:unknown type %d\n", yp
->yp_code
);
* print a Non offset table entry
prte_noff(fp
, type
, yp
, idx
)
if (mrose3
) { /* need to append FL_PRTAG flag */
strncpy(buf1
, flags
, BUFSIZ
);
strncat(buf1
, "|FL_PRTAG", BUFSIZ
);
typename
= yp
->yp_identifier
;
(void) fprintf(fp
, "\t{ %s, %d, %s, %s, \"%s\" },\n",
type
, idx
, tag
, flags
, typename
);
(void) fprintf(fp
, "\t{ %s, %d, %s, %s, NULL},\n",
* print a Non offset table entry for an ETAG - special case
prte_enoff(fp
, type
, yp
, idx
)
if (mrose3
) { /* need to append FL_PRTAG flag */
strncpy(buf1
, flags
, BUFSIZ
);
strncat(buf1
, "|FL_PRTAG", BUFSIZ
);
mrose3
= 0; /* don't want the next tag */
typename
= yp
->yp_identifier
;
(void) fprintf(fp
, "\t{ %s, %d, %s, %s, \"%s\" },\n",
type
, idx
, tag
, flags
, typename
);
(void) fprintf(fp
, "\t{ %s, %d, %s, %s, NULL },\n",
* print an offset table entry
prte_off(fp
, type
, yp
, t
, f
, idx
)
if (mrose3
) { /* need to append FL_PRTAG flag */
strncpy(buf1
, flags
, BUFSIZ
);
strncat(buf1
, "|FL_PRTAG", BUFSIZ
);
typename
= yp
->yp_identifier
;
(void) fprintf(fp
, "\t{ %s, OFFSET(%s, %s), %s, %s, \"%s\" },\n",
type
, t
, f
, tag
, flags
, typename
);
(void) fprintf(fp
, "\t{ %s, OFFSET(%s, %s), %s, %s, NULL},\n",
(void) fprintf(fp
, "\t{ %s, %d, %s, %s, \"%s\" },\n",
type
, idx
, tag
, flags
, typename
);
(void) fprintf(fp
, "\t{ %s, %d, %s, %s, NULL},\n",
* handle the very complex task of defined types.
* Basically generating object calls
/* Predefined Universal Type */
struct univ_typ
*p
, *univtyp();
if ((p
= univtyp(yp
->yp_identifier
))) {
if (p
->univ_flags
& UNF_EXTMOD
) {
yp
->yp_module
= p
->univ_mod
;
prte_univt(fp
, p
, yp
, t
, f
);
if (yp
->yp_flags
& YP_TAG
&& yp
->yp_flags
& YP_IMPLICIT
)
prte_noff(fp
, "IMP_OBJ", yp
, -1);
* print an offset table entry for an OBJECT type entry
if (yp
->yp_module
== NULL
|| strcmp(yp
->yp_module
, mymodule
) == 0) {
obj
= proc_name(yp
->yp_identifier
, 0);
obj
= strp2name(yp
->yp_identifier
, yp
->yp_module
);
if (mrose3
) { /* need to append FL_PRTAG flag */
strncpy(buf1
, flags
, BUFSIZ
);
strncat(buf1
, "|FL_PRTAG", BUFSIZ
);
typename
= yp
->yp_identifier
;
if (f
&& !noindirect(f
)) {
sprintf(buf2
, "OFFSET(%s, %s)", t
, f
);
} else if (f
&& *f
== '&') {
sprintf(buf2
, "OFFSET(%s, %s)", t
, f
+ 1);
(void) fprintf(fp
, "\t{ %s, %s, _Z%s, %s, \"%s\" },\n",
type
, off
, obj
, flags
, typename
);
(void) fprintf(fp
, "\t{ %s, %s, _Z%s, %s, NULL},\n",
(void) fprintf(fp
, "\t{ EXTMOD, %d, 0, 0, NULL },\n",
gen_modref(yp
->yp_module
));
* print an table entry for Universal type with the given entry
prte_univt(fp
, p
, yp
, t
, f
)
if (f
== NULL
|| noindirect(f
)) {
sprintf(buf3
, "S%s", p
->univ_tab
);
if (yp
->yp_flags
& YP_TAG
&& yp
->yp_flags
& YP_IMPLICIT
) {
tag
= yp
->yp_tag
->yt_value
->yv_number
;
class = yp
->yp_tag
->yt_class
;
strncpy(buf1
, c_flags(yp
, class), BUFSIZ
);
if (mrose3
) { /* need to append FL_PRTAG flag */
strncat(buf1
, "|FL_PRTAG", BUFSIZ
);
typename
= yp
->yp_identifier
;
if (f
&& !noindirect(f
)) {
sprintf(buf2
, "OFFSET(%s, %s)", t
, f
);
} else if (f
&& *f
== '&') {
sprintf(buf2
, "OFFSET(%s, %s)", t
, f
+ 1);
(void) fprintf(fp
, "\t{ %s, %s, %d, %s, \"%s\" },\n",
type
, off
, tag
, flags
, typename
);
(void) fprintf(fp
, "\t{ %s, %s, %d, %s, NULL},\n",
* generate the table entry for a value passing defined type which
* is equivalent to the given primative type
gen_pentry(fp
, oyp
, yp
, t
, f
)
register char s
= oyp
->yp_prfexp
; /* type of value passing */
if (noindirect(f
) && s
!= 'q' && s
!= 'a')
"gen_ventry: must specify a field for primative value- not %s\n", f
);
/* can't get id from in here - yet */
if (yp
->yp_code
== YP_BITLIST
) {
idx
= addptr (modsym(mymodule
, yp
->yp_varexp
? yp
-> yp_varexp
: id
,
case 'q': /* [[ q parm->qbufptr ]] */
if (yp
->yp_code
!= YP_OCT
)
warning("qbuf pointer passed for a %s by type %s",
code2name(yp
->yp_code
), yp2name(oyp
));
f
= setfield(oyp
->yp_strexp
);
case 's': /* [[ s ptr ]] */
if (yp
->yp_code
!= YP_OCT
)
warning("string pointer passed for a %s by type %s",
code2name(yp
->yp_code
), yp2name(oyp
));
f
= setfield(oyp
->yp_strexp
);
case 'o': /* [[ o ptr $ length ]] */
if (yp
->yp_code
!= YP_OCT
)
warning("octet/length pair passed for a %s by type %s",
code2name(yp
->yp_code
), yp2name(oyp
));
f
= setfield(oyp
->yp_strexp
);
prte_off(fp
, p1
, yp
, t
, f
, idx
);
f
= setfield(oyp
->yp_intexp
);
ferr(1, "gen_ventry:OCT: must specify a field [[ s .. ]]\n");
case 'x': /* [[ x ptr $ length ]] */
if (yp
->yp_code
!= YP_BIT
&& yp
->yp_code
!= YP_BITLIST
)
warning("bit string/length pair passed for a %s by type %s",
code2name(yp
->yp_code
), yp2name(oyp
));
f
= setfield(oyp
->yp_strexp
);
prte_off(fp
, p1
, yp
, t
, f
, idx
);
f
= setfield(oyp
->yp_intexp
);
ferr(1, "tenc_typ:BIT: must specify a field [[ x .. ]]\n");
case 'r': /* [[ r REAL ]] */
if (yp
->yp_code
!= YP_REAL
)
warning("Real passed for a %s by type %s",
code2name(yp
->yp_code
), yp2name(oyp
));
f
= setfield(oyp
->yp_strexp
);
case 'i': /* [[ i INTEGER ]] */
if (yp
->yp_code
!= YP_INT
&& yp
->yp_code
!= YP_INTLIST
&& yp
->yp_code
!= YP_ENUMLIST
)
warning("integer passed for a %s by type %s",
code2name(yp
->yp_code
), yp2name(oyp
));
f
= setfield(oyp
->yp_intexp
);
case 't': /* [[ t Bitvector ]] */
if (yp
->yp_code
!= YP_BIT
&& yp
->yp_code
!= YP_BITLIST
)
warning("Bitvector (PE) passed for a %s by type %s",
code2name(yp
->yp_code
), yp2name(oyp
));
f
= setfield(oyp
->yp_intexp
);
if (oyp
->yp_varexp
&& !noindirect(f
))
case 'b': /* [[ b BOOLEAN ]] */
if (yp
->yp_code
!= YP_BOOL
)
warning("Boolean passed for a %s by type %s",
code2name(yp
->yp_code
), yp2name(oyp
));
f
= setfield(oyp
->yp_intexp
);
case 'O': /* [[ O Object Identifier ]] */
if (yp
->yp_code
!= YP_OID
)
warning("Object Identifier pointer passed for a %s by type %s",
code2name(yp
->yp_code
), yp2name(oyp
));
f
= setfield(oyp
->yp_strexp
);
case 'a': /* [[ a ANY ]] */
if (yp
->yp_code
!= YP_ANY
)
warning("PE pointer passed for a %s by type %s",
code2name(yp
->yp_code
), yp2name(oyp
));
f
= setfield(oyp
->yp_strexp
);
ferrd("gen_vident:unknown Value passed %d\n", (int )s
);
prte_off(fp
, p1
, yp
, t
, f
, idx
);