/* ldexp.h -
Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2007, 2011 Free Software Foundation, Inc.
+ 2003, 2004, 2005, 2007, 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU Binutils.
typedef struct {
int node_code;
unsigned int lineno;
- enum node_tree_enum node_class;
+ const char *filename;
+ enum node_tree_enum node_class;
} node_type;
typedef union etree_union {
node_type type;
const char *dst;
union etree_union *src;
+ bfd_boolean defsym;
bfd_boolean hidden;
} assign;
struct {
} assert_s;
} etree_type;
-typedef enum {
+/* Expression evaluation control. */
+typedef enum
+{
+ /* Parsing linker script. Will only return "valid" for expressions
+ that evaluate to a constant. */
lang_first_phase_enum,
+ /* Prior to section sizing. */
lang_mark_phase_enum,
+ /* During section sizing. */
lang_allocating_phase_enum,
+ /* During assignment of symbol values when relaxation in progress. */
+ lang_assigning_phase_enum,
+ /* Final assignment of symbol values. */
lang_final_phase_enum
} lang_phase_type;
/* Working results. */
etree_value_type result;
bfd_vma dot;
- /* Set if an expression contains DEFINED(). */
- bfd_boolean uses_defined;
/* Current dot and section passed to ldexp folder. */
bfd_vma *dotp;
(int, etree_type *);
etree_type *exp_nameop
(int, const char *);
-etree_type *exp_assop
- (int, const char *, etree_type *);
+etree_type *exp_assign
+ (const char *, etree_type *, bfd_boolean);
+etree_type *exp_defsym
+ (const char *, etree_type *);
etree_type *exp_provide
(const char *, etree_type *, bfd_boolean);
etree_type *exp_assert