diff options
Diffstat (limited to 'contrib/binutils/gas/expr.h')
-rw-r--r-- | contrib/binutils/gas/expr.h | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/contrib/binutils/gas/expr.h b/contrib/binutils/gas/expr.h index a963148..0ed6af6 100644 --- a/contrib/binutils/gas/expr.h +++ b/contrib/binutils/gas/expr.h @@ -1,5 +1,5 @@ /* expr.h -> header file for expr.c - Copyright (C) 1987, 92-97, 1998 Free Software Foundation, Inc. + Copyright (C) 1987, 92-98, 1999 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -102,6 +102,11 @@ typedef enum O_logical_and, /* (X_add_symbol || X_op_symbol) + X_add_number. */ O_logical_or, + /* X_op_symbol [ X_add_symbol ] */ + O_index, + /* machine dependent operators */ + O_md1, O_md2, O_md3, O_md4, O_md5, O_md6, O_md7, O_md8, + O_md9, O_md10, O_md11, O_md12, O_md13, O_md14, O_md15, O_md16, /* this must be the largest value */ O_max } operatorT; @@ -109,25 +114,32 @@ typedef enum typedef struct expressionS { /* The main symbol. */ - struct symbol *X_add_symbol; + symbolS *X_add_symbol; /* The second symbol, if needed. */ - struct symbol *X_op_symbol; + symbolS *X_op_symbol; /* A number to add. */ offsetT X_add_number; + /* The type of the expression. We can't assume that an arbitrary compiler can handle a bitfield of enum type. FIXME: We could check this using autoconf. */ #ifdef __GNUC__ - operatorT X_op : 5; + operatorT X_op : 8; #else - unsigned X_op : 5; + unsigned char X_op; #endif + /* Non-zero if X_add_number should be regarded as unsigned. This is only valid for O_constant expressions. It is only used when an O_constant must be extended into a bignum (i.e., it is not used when performing arithmetic on these values). FIXME: This field is not set very reliably. */ unsigned int X_unsigned : 1; + + /* 7 additional bits can be defined if needed. */ + + /* Machine dependent field */ + unsigned short X_md; } expressionS; /* "result" should be type (expressionS *). */ @@ -146,15 +158,16 @@ typedef char operator_rankT; extern char get_symbol_end PARAMS ((void)); extern void expr_begin PARAMS ((void)); +extern void expr_set_precedence PARAMS ((void)); extern segT expr PARAMS ((int rank, expressionS * resultP)); extern unsigned int get_single_number PARAMS ((void)); -extern struct symbol *make_expr_symbol PARAMS ((expressionS * expressionP)); +extern symbolS *make_expr_symbol PARAMS ((expressionS * expressionP)); extern int expr_symbol_where - PARAMS ((struct symbol *, char **, unsigned int *)); + PARAMS ((symbolS *, char **, unsigned int *)); -extern struct symbol * expr_build_uconstant PARAMS ((offsetT)); -extern struct symbol * expr_build_unary PARAMS ((operatorT, struct symbol *)); -extern struct symbol * expr_build_binary - PARAMS ((operatorT, struct symbol *, struct symbol *)); +extern symbolS *expr_build_uconstant PARAMS ((offsetT)); +extern symbolS *expr_build_unary PARAMS ((operatorT, symbolS *)); +extern symbolS *expr_build_binary PARAMS ((operatorT, symbolS *, symbolS *)); +extern symbolS *expr_build_dot PARAMS ((void)); /* end of expr.h */ |