diff options
author | Ian Lance Taylor <ian@airs.com> | 1997-08-26 19:12:10 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1997-08-26 19:12:10 +0000 |
commit | 4b231a267c4f0f8b8707e880b6e19d8b5ef9b800 (patch) | |
tree | d4e39696fc7ce33b5abcf749e3b05bcaba561f42 | |
parent | a089d2da979c9e8f2db869c30c104c45579fb00a (diff) | |
download | gdb-4b231a267c4f0f8b8707e880b6e19d8b5ef9b800.zip gdb-4b231a267c4f0f8b8707e880b6e19d8b5ef9b800.tar.gz gdb-4b231a267c4f0f8b8707e880b6e19d8b5ef9b800.tar.bz2 |
* config/tc-alpha.c (load_expression): Check explicitly for O_big,
rather than calling abort.
-rw-r--r-- | gas/ChangeLog | 3 | ||||
-rw-r--r-- | gas/config/tc-alpha.c | 62 |
2 files changed, 60 insertions, 5 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 442a9ee..4414d1f 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -7,6 +7,9 @@ Tue Aug 26 09:46:22 1997 Nick Clifton <nickc@cygnus.com> end-sanitize-v850 Tue Aug 26 12:23:25 1997 Ian Lance Taylor <ian@cygnus.com> + * config/tc-alpha.c (load_expression): Check explicitly for O_big, + rather than calling abort. + * as.h: Don't define alloca if __GNUC__. Just declare it. * macro.c: Copy alloca handling from as.h. diff --git a/gas/config/tc-alpha.c b/gas/config/tc-alpha.c index 9a17444..d15857f 100644 --- a/gas/config/tc-alpha.c +++ b/gas/config/tc-alpha.c @@ -372,6 +372,9 @@ static int alpha_current_align; /* These are exported to ECOFF code. */ unsigned long alpha_gprmask, alpha_fprmask; +/* Whether the debugging option was seen. */ +static int alpha_debug; + #ifdef OBJ_EVAX /* Collect information about current procedure here. */ static struct { @@ -806,6 +809,8 @@ md_section_align (seg, size) /* Equal to MAX_PRECISION in atof-ieee.c */ #define MAX_LITTLENUMS 6 +extern char *vax_md_atof PARAMS ((int, char *, int *)); + char * md_atof (type, litP, sizeP) char type; @@ -816,7 +821,6 @@ md_atof (type, litP, sizeP) LITTLENUM_TYPE words[MAX_LITTLENUMS]; LITTLENUM_TYPE *wordP; char *t; - char *atof_ieee (), *vax_md_atof (); switch (type) { @@ -883,9 +887,7 @@ md_parse_option (c, arg) break; case 'g': - /* Ignore `-g' so gcc can provide this option to the Digital - UNIX assembler, which otherwise would throw away info that - mips-tfile needs. */ + alpha_debug = 1; break; case 'm': @@ -1426,6 +1428,24 @@ found: return framereg; } +/* This is called before the symbol table is processed. In order to + work with gcc when using mips-tfile, we must keep all local labels. + However, in other cases, we want to discard them. If we were + called with -g, but we didn't see any debugging information, it may + mean that gcc is smuggling debugging information through to + mips-tfile, in which case we must generate all local labels. */ + +#ifdef OBJ_ECOFF + +void +alpha_frob_file_before_adjust () +{ + if (alpha_debug != 0 + && ! ecoff_debugging_seen) + flag_keep_locals = 1; +} + +#endif /* OBJ_ECOFF */ /* Parse the arguments to an opcode. */ @@ -2327,6 +2347,12 @@ load_expression (targreg, exp, pbasereg, poffset) set_tok_const (*poffset, 0); return 0; + case O_big: + as_bad ("%s number invalid; zero assumed", + exp->X_add_number > 0 ? "bignum" : "floating point"); + addend = 0; + break; + default: abort(); } @@ -3336,7 +3362,7 @@ s_alpha_comm (ignore) symbolP = symbol_find_or_make (name); *p = c; - if (S_IS_DEFINED (symbolP)) + if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP)) { as_bad ("Ignoring attempt to re-define symbol"); ignore_rest_of_line (); @@ -4174,6 +4200,20 @@ alpha_cons_align (size) alpha_current_align = log_size; alpha_insn_label = NULL; } + +/* Here come the .uword, .ulong, and .uquad explicitly unaligned + pseudos. We just turn off auto-alignment and call down to cons. */ + +static void +s_alpha_ucons (bytes) + int bytes; +{ + int hold = alpha_auto_align_on; + alpha_auto_align_on = 0; + cons (bytes); + alpha_auto_align_on = hold; +} + #ifdef DEBUG1 @@ -4275,6 +4315,18 @@ const pseudo_typeS md_pseudo_table[] = {"skip", s_alpha_space, 0}, {"zero", s_alpha_space, 0}, +/* Unaligned data pseudos. */ + {"uword", s_alpha_ucons, 2}, + {"ulong", s_alpha_ucons, 4}, + {"uquad", s_alpha_ucons, 8}, + +#ifdef OBJ_ELF +/* Dwarf wants these versions of unaligned. */ + {"2byte", s_alpha_ucons, 2}, + {"4byte", s_alpha_ucons, 4}, + {"8byte", s_alpha_ucons, 8}, +#endif + /* We don't do any optimizing, so we can safely ignore these. */ {"noalias", s_ignore, 0}, {"alias", s_ignore, 0}, |