-static void exp_print_token
- PARAMS ((token_code_type code, int infix_p));
-static void make_abs
- PARAMS ((etree_value_type *ptr));
-static etree_value_type new_abs
- PARAMS ((bfd_vma value));
-static void check
- PARAMS ((lang_output_section_statement_type *os, const char *name,
- const char *op));
-static etree_value_type new_rel
- PARAMS ((bfd_vma, char *, lang_output_section_statement_type *section));
-static etree_value_type new_rel_from_section
- PARAMS ((bfd_vma value, lang_output_section_statement_type *section));
-static etree_value_type fold_unary
- PARAMS ((etree_type *tree,
- lang_output_section_statement_type *current_section,
- lang_phase_type allocation_done,
- bfd_vma dot, bfd_vma *dotp));
-static etree_value_type fold_binary
- PARAMS ((etree_type *tree,
- lang_output_section_statement_type *current_section,
- lang_phase_type allocation_done,
- bfd_vma dot, bfd_vma *dotp));
-static etree_value_type fold_trinary
- PARAMS ((etree_type *tree,
- lang_output_section_statement_type *current_section,
- lang_phase_type allocation_done,
- bfd_vma dot, bfd_vma *dotp));
-static etree_value_type fold_name
- PARAMS ((etree_type *tree,
- lang_output_section_statement_type *current_section,
- lang_phase_type allocation_done,
- bfd_vma dot));
-static etree_value_type exp_fold_tree_no_dot
- PARAMS ((etree_type *tree,
- lang_output_section_statement_type *current_section,
- lang_phase_type allocation_done));
-
-struct exp_data_seg exp_data_seg;
+static void exp_fold_tree_1 (etree_type *);
+static bfd_vma align_n (bfd_vma, bfd_vma);
+
+segment_type *segments;
+
+struct ldexp_control expld;
+
+/* This structure records symbols for which we need to keep track of
+ definedness for use in the DEFINED () test. It is also used in
+ making absolute symbols section relative late in the link. */
+
+struct definedness_hash_entry
+{
+ struct bfd_hash_entry root;
+
+ /* If this symbol was assigned from "dot" outside of an output
+ section statement, the section we'd like it relative to. */
+ asection *final_sec;
+
+ /* Low bits of iteration count. Symbols with matching iteration have
+ been defined in this pass over the script. */
+ unsigned int iteration : 8;
+
+ /* Symbol was defined by an object file. */
+ unsigned int by_object : 1;
+};
+
+static struct bfd_hash_table definedness_table;