diff options
Diffstat (limited to 'gas/config/obj-vms.c')
-rw-r--r-- | gas/config/obj-vms.c | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/gas/config/obj-vms.c b/gas/config/obj-vms.c index 2ea43f5..4bbb67d 100644 --- a/gas/config/obj-vms.c +++ b/gas/config/obj-vms.c @@ -332,165 +332,10 @@ s_const () demand_empty_rest_of_line (); } -/* - * stab() - * - * Handle .stabX directives, which used to be open-coded. - * So much creeping featurism overloaded the semantics that we decided - * to put all .stabX thinking in one place. Here. - * - * We try to make any .stabX directive legal. Other people's AS will often - * do assembly-time consistency checks: eg assigning meaning to n_type bits - * and "protecting" you from setting them to certain values. (They also zero - * certain bits before emitting symbols. Tut tut.) - * - * If an expression is not absolute we either gripe or use the relocation - * information. Other people's assemblers silently forget information they - * don't need and invent information they need that you didn't supply. - * - * .stabX directives always make a symbol table entry. It may be junk if - * the rest of your .stabX directive is malformed. - */ -static void -obj_aout_stab (what) - int what; -{ -#ifndef NO_LISTING - extern int listing; -#endif /* NO_LISTING */ - - register symbolS *symbolP = 0; - register char *string; - int saved_type = 0; - int length; - int goof; /* TRUE if we have aborted. */ - long longint; - -/* - * Enter with input_line_pointer pointing past .stabX and any following - * whitespace. - */ - goof = 0; /* JF who forgot this?? */ - if (what == 's') - { - string = demand_copy_C_string (&length); - SKIP_WHITESPACE (); - if (*input_line_pointer == ',') - input_line_pointer++; - else - { - as_bad ("I need a comma after symbol's name"); - goof = 1; - } - } - else - string = ""; - -/* - * Input_line_pointer->after ','. String->symbol name. - */ - if (!goof) - { - symbolP = symbol_new (string, - SEG_UNKNOWN, - 0, - (struct frag *) 0); - switch (what) - { - case 'd': - S_SET_NAME (symbolP, NULL); /* .stabd feature. */ - S_SET_VALUE (symbolP, obstack_next_free (&frags) - frag_now->fr_literal); - symbolP->sy_frag = frag_now; - break; - - case 'n': - symbolP->sy_frag = &zero_address_frag; - break; - - case 's': - symbolP->sy_frag = &zero_address_frag; - break; - - default: - BAD_CASE (what); - break; - } - - if (get_absolute_expression_and_terminator (&longint) == ',') - symbolP->sy_symbol.n_type = saved_type = longint; - else - { - as_bad ("I want a comma after the n_type expression"); - goof = 1; - input_line_pointer--; /* Backup over a non-',' char. */ - } - } - - if (!goof) - { - if (get_absolute_expression_and_terminator (&longint) == ',') - S_SET_OTHER (symbolP, longint); - else - { - as_bad ("I want a comma after the n_other expression"); - goof = 1; - input_line_pointer--; /* Backup over a non-',' char. */ - } - } - - if (!goof) - { - S_SET_DESC (symbolP, get_absolute_expression ()); - if (what == 's' || what == 'n') - { - if (*input_line_pointer != ',') - { - as_bad ("I want a comma after the n_desc expression"); - goof = 1; - } - else - { - input_line_pointer++; - } - } - } - - if ((!goof) && (what == 's' || what == 'n')) - { - pseudo_set (symbolP); - symbolP->sy_symbol.n_type = saved_type; - } - -#ifndef NO_LISTING - if (listing && !goof) - { - if (symbolP->sy_symbol.n_type == N_SLINE) - { - - listing_source_line(symbolP->sy_symbol.n_desc); - } - else if (symbolP->sy_symbol.n_type == N_SO - || symbolP->sy_symbol.n_type == N_SOL) - { - listing_source_file(string); - } - } -#endif - - if (goof) - ignore_rest_of_line (); - else - demand_empty_rest_of_line (); -} /* obj_aout_stab() */ - const pseudo_typeS obj_pseudo_table[] = { - {"stabd", obj_aout_stab, 'd'},/* stabs */ - {"stabn", obj_aout_stab, 'n'},/* stabs */ - {"stabs", obj_aout_stab, 's'},/* stabs */ {"const", s_const, 0}, {0, 0, 0}, - }; /* obj_pseudo_table */ int |