source: trunk/src/binutils/ld/ldexp.h@ 657

Last change on this file since 657 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 3.5 KB
Line 
1/* ldexp.h -
2 Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002
3 Free Software Foundation, Inc.
4
5 This file is part of GLD, the Gnu Linker.
6
7 GLD is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
10 any later version.
11
12 GLD is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GLD; see the file COPYING. If not, write to the Free
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA. */
21
22#ifndef LDEXP_H
23#define LDEXP_H
24
25/* The result of an expression tree */
26typedef struct {
27 bfd_vma value;
28 char *str;
29 struct lang_output_section_statement_struct *section;
30 bfd_boolean valid_p;
31} etree_value_type;
32
33typedef struct {
34 int node_code;
35 enum {
36 etree_binary,
37 etree_trinary,
38 etree_unary,
39 etree_name,
40 etree_assign,
41 etree_provide,
42 etree_provided,
43 etree_undef,
44 etree_unspec,
45 etree_value,
46 etree_assert,
47 etree_rel
48 } node_class;
49} node_type;
50
51typedef union etree_union {
52 node_type type;
53 struct {
54 node_type type;
55 union etree_union *lhs;
56 union etree_union *rhs;
57 } binary;
58 struct {
59 node_type type;
60 union etree_union *cond;
61 union etree_union *lhs;
62 union etree_union *rhs;
63 } trinary;
64 struct {
65 node_type type;
66 const char *dst;
67 union etree_union *src;
68 } assign;
69 struct {
70 node_type type;
71 union etree_union *child;
72 } unary;
73 struct {
74 node_type type;
75 const char *name;
76 } name;
77 struct {
78 node_type type;
79 bfd_vma value;
80 char *str;
81 } value;
82 struct {
83 node_type type;
84 asection *section;
85 bfd_vma value;
86 } rel;
87 struct {
88 node_type type;
89 union etree_union *child;
90 const char *message;
91 } assert_s;
92} etree_type;
93
94extern struct exp_data_seg {
95 enum {
96 exp_dataseg_none,
97 exp_dataseg_align_seen,
98 exp_dataseg_end_seen,
99 exp_dataseg_adjust
100 } phase;
101 bfd_vma base, end, pagesize;
102} exp_data_seg;
103
104typedef struct _fill_type fill_type;
105
106etree_type *exp_intop
107 PARAMS ((bfd_vma));
108etree_type *exp_bigintop
109 PARAMS ((bfd_vma, char *));
110etree_type *exp_relop
111 PARAMS ((asection *, bfd_vma));
112etree_value_type invalid
113 PARAMS ((void));
114etree_value_type exp_fold_tree
115 PARAMS ((etree_type *, struct lang_output_section_statement_struct *,
116 lang_phase_type, bfd_vma, bfd_vma *));
117etree_type *exp_binop
118 PARAMS ((int, etree_type *, etree_type *));
119etree_type *exp_trinop
120 PARAMS ((int,etree_type *, etree_type *, etree_type *));
121etree_type *exp_unop
122 PARAMS ((int, etree_type *));
123etree_type *exp_nameop
124 PARAMS ((int, const char *));
125etree_type *exp_assop
126 PARAMS ((int, const char *, etree_type *));
127etree_type *exp_provide
128 PARAMS ((const char *, etree_type *));
129etree_type *exp_assert
130 PARAMS ((etree_type *, const char *));
131void exp_print_tree
132 PARAMS ((etree_type *));
133bfd_vma exp_get_vma
134 PARAMS ((etree_type *, bfd_vma, char *, lang_phase_type));
135int exp_get_value_int
136 PARAMS ((etree_type *, int, char *, lang_phase_type));
137fill_type *exp_get_fill
138 PARAMS ((etree_type *, fill_type *, char *, lang_phase_type));
139bfd_vma exp_get_abs_int
140 PARAMS ((etree_type *, int, char *, lang_phase_type));
141bfd_vma align_n
142 PARAMS ((bfd_vma, bfd_vma));
143
144#endif
Note: See TracBrowser for help on using the repository browser.