diff options
author | David Henkel-Wallace <gumby@cygnus> | 1991-03-21 21:29:06 +0000 |
---|---|---|
committer | David Henkel-Wallace <gumby@cygnus> | 1991-03-21 21:29:06 +0000 |
commit | 2fa0b342a5cd580781d2b9348a87f33a92d363fa (patch) | |
tree | e9729ab1630b7dbad885ed5601c51bf34c8ff8f4 /ld/ldexp.h | |
parent | 6fd9467324a5ebe73ee7e88e0b2e3a2049e4023f (diff) | |
download | gdb-2fa0b342a5cd580781d2b9348a87f33a92d363fa.zip gdb-2fa0b342a5cd580781d2b9348a87f33a92d363fa.tar.gz gdb-2fa0b342a5cd580781d2b9348a87f33a92d363fa.tar.bz2 |
Initial revision
Diffstat (limited to 'ld/ldexp.h')
-rw-r--r-- | ld/ldexp.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/ld/ldexp.h b/ld/ldexp.h new file mode 100644 index 0000000..f7e1321 --- /dev/null +++ b/ld/ldexp.h @@ -0,0 +1,99 @@ +/* ldexp.h - + + Copyright (C) 1991 Free Software Foundation, Inc. + + This file is part of GLD, the Gnu Linker. + + GLD is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + GLD is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GLD; see the file COPYING. If not, write to + the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + + + + +/* The result of an expression tree */ +typedef struct +{ + bfd_vma value; + struct lang_output_section_statement_struct *section; + boolean valid; +} etree_value_type; + + + +typedef struct +{ + int node_code; + enum { etree_binary, + etree_trinary, + etree_unary, + etree_name, + etree_assign, + etree_undef, + etree_unspec, + etree_value } node_class; +} node_type; + + + +typedef union etree_union +{ + node_type type; + struct { + node_type type; + union etree_union *lhs; + union etree_union *rhs; + } binary; + struct { + node_type type; + union etree_union *cond; + union etree_union *lhs; + union etree_union *rhs; + } trinary; + struct { + node_type type; + char *dst; + union etree_union *src; + } assign; + + struct { + node_type type; + union etree_union *child; + } unary; + struct { + node_type type; + char *name; + } name; + struct { + node_type type; + bfd_vma value; + } value; + +} etree_type; + + +PROTO(etree_type *,exp_intop,(bfd_vma)); + +PROTO(etree_value_type, invalid,(void)); +PROTO(etree_value_type, exp_fold_tree,(etree_type *, struct + lang_output_section_statement_struct *, lang_phase_type, + bfd_vma, bfd_vma *)); + +PROTO(etree_type *, exp_binop,(int, etree_type *, etree_type *)); +PROTO(etree_type *,exp_trinop,(int,etree_type *, etree_type *, etree_type *)); +PROTO(etree_type *,exp_unop,(int, etree_type *)); +PROTO(etree_type *,exp_nameop,(int, char *)); +PROTO(etree_type *,exp_assop,(int, char *, etree_type *)); +PROTO(void, exp_print_tree,(struct _iobuf *, etree_type *)); +PROTO(bfd_vma, exp_get_vma,(etree_type *, bfd_vma, char *, enum boolean)); +PROTO(int, exp_get_value_int,(etree_type *, int, char *, enum boolean)); |