X-Git-Url: https://oss.titaniummirror.com/gitweb?p=msp430-binutils.git;a=blobdiff_plain;f=ld%2Fldexp.h;fp=ld%2Fldexp.h;h=a15f64a79cfa093f38bb6bfd9f201d464e71bf7f;hp=5c8bad22d8539f04e3e8e1de35bcf459b33d951c;hb=d5da4f291af551c0b8b79e1d4a9b173d60e5c10e;hpb=7b5ea4fcdf2819e070665ab5610f8b48e3867c10 diff --git a/ld/ldexp.h b/ld/ldexp.h index 5c8bad2..a15f64a 100644 --- a/ld/ldexp.h +++ b/ld/ldexp.h @@ -30,21 +30,23 @@ typedef struct { bfd_boolean valid_p; } etree_value_type; +enum node_tree_enum { + etree_binary, + etree_trinary, + etree_unary, + etree_name, + etree_assign, + etree_provide, + etree_provided, + etree_value, + etree_assert, + etree_rel +}; + typedef struct { int node_code; unsigned int lineno; - enum { - etree_binary, - etree_trinary, - etree_unary, - etree_name, - etree_assign, - etree_provide, - etree_provided, - etree_value, - etree_assert, - etree_rel - } node_class; + enum node_tree_enum node_class; } node_type; typedef union etree_union { @@ -98,6 +100,23 @@ typedef enum { lang_final_phase_enum } lang_phase_type; +union lang_statement_union; + +enum phase_enum { + exp_dataseg_none, + exp_dataseg_align_seen, + exp_dataseg_relro_seen, + exp_dataseg_end_seen, + exp_dataseg_relro_adjust, + exp_dataseg_adjust +}; + +enum relro_enum { + exp_dataseg_relro_none, + exp_dataseg_relro_start, + exp_dataseg_relro_end, +}; + struct ldexp_control { /* Modify expression evaluation depending on this. */ lang_phase_type phase; @@ -115,16 +134,14 @@ struct ldexp_control { /* State machine and results for DATASEG. */ struct { - enum { - exp_dataseg_none, - exp_dataseg_align_seen, - exp_dataseg_relro_seen, - exp_dataseg_end_seen, - exp_dataseg_relro_adjust, - exp_dataseg_adjust - } phase; + enum phase_enum phase; bfd_vma base, min_base, relro_end, end, pagesize, maxpagesize; + + enum relro_enum relro; + + union lang_statement_union *relro_start_stat; + union lang_statement_union *relro_end_stat; } dataseg; };