diff options
author | Tristan Gingold <gingold@adacore.com> | 2009-03-03 10:04:58 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@adacore.com> | 2009-03-03 10:04:58 +0000 |
commit | 198f1251457bf99a3f3aec2d2db1977b99e6f519 (patch) | |
tree | bb675f11b07ece8dcefe50aed8284f06ab32ab16 /gas/config/obj-evax.h | |
parent | 54b70fa3143fa8c444e8d4bec971f868becf7e49 (diff) | |
download | gdb-198f1251457bf99a3f3aec2d2db1977b99e6f519.zip gdb-198f1251457bf99a3f3aec2d2db1977b99e6f519.tar.gz gdb-198f1251457bf99a3f3aec2d2db1977b99e6f519.tar.bz2 |
2009-03-03 Tristan Gingold <gingold@adacore.com>
Eric Botcazou <ebotcazou@adacore.com>
Douglas B Rupp <rupp@gnat.com>
* doc/as.texinfo (Overview): Mention -replace/-noreplace options
for Alpha.
* doc/c-alpha.texi (Alpha Options): Document -replace/-noreplace.
* config/tc-alpha.h (TC_VALIDATE_FIX_SUB): Define to 1 (evax).
(OBJ_SYMFIELD_TYPE): Remove.
(tc_canonicalize_symbol_name): Define to evax_shorten_name.
(TC_IMPLICIT_LCOMM_ALIGNMENT): For alignment to 3 on evax.
(tc_frob_file_before_fix): Do not defined on evax.
* config/tc-alpha.c: Always includes dwarf2dbg.h.
Include vms.h if OBJ_EVAX.
(struct alpha_fixup): Add xtrasym and procsym (evax only).
(enum alpha_macro_arg): Remove trailing comma.
(md_longopts): Add replace and noreplace arguments (evax only).
(alpha_evax_proc_hash): New variable.
(alpha_link_section): Make it global.
(alpha_ctors_section, alpha_dtors_section): Removed.
(alpha_ctors_symbol, alpha_dtors_symbol): Ditto.
(alpha_lit8_section): Ifndef'ed on evax.
(alpha_lit8_symbol): Ditto.
(alpha_prologue_label): New variable.
(alpha_linkage_symbol): New variable (evax only).
(alpha_flag_replace): Ditto.
(struct alpha_evax_procs): Add handler and handler_data field.
(alpha_evax_proc): Now of type pointer.
(alpha_linkage_fixup_root, alpha_linkage_fixup_tail): New variables.
(struct alpha_reloc_tag): Add sym and psym fields (evax only).
(get_alpha_reloc_tag): Initialize sym and psym fields (evax only).
(alpha_adjust_relocs): Ifndef'ed on evax.
(load_expression): Add opname argument.
Implement LDA/BSR optimization for evax.
(emit_lda): Adjust for new prototype of load_expression.
(emit_ir_load): Ditto. Do not nothing for GP if ..lk symbols.
(emit_loadstore): Likewise.
(emit_ldXu): Likewise.
(emit_stX): Likewise.
(emit_jsrjmp): Likewise. Implement LDA/BSR optimization for evax.
(emit_ldgp): Avoid warning in evax case.
(add_to_link_pool): Make it static. Return symbolic expression rather
than number expression for the offset.
(s_alpha_text): Create .text symbol for evax if not already created.
(s_alpha_comm): Do not create specific section for common symbol.
Fill common area with zeros for evax.
(s_alpha_prologue): Create alpha_prologue_label.
(s_alpha_section_name): New function (evax).
(s_alpha_section_word): Likewise.
(section_name): New static variabke moved out from ...
(s_alpha_section): ... here. Create new sections on demand.
(s_alpha_literals): New function (evax).
(s_alpha_ent): Create alpha_evax_proc instance and insert it in the
alpha_evax_proc_hash table.
(s_alpha_handler): New function (evax).
(s_alpha_frame): Adjust for new type of alpha_evax_proc.
(s_alpha_prologue): New function (evax).
(s_alpha_pdesc): Adjust for new type of alpha_evax_proc and new
handling of procedures with hash table.
Add support for condition handlers.
(s_alpha_linkage): Create linkage_fixup instance and chain it.
(s_alpha_fp_save): Adjust for new type of alpha_evax_proc.
(s_alpha_mask): Likewise.
(s_alpha_fmask): Likewise.
(s_alpha_end): Clear alpha_evax_proc.
(s_alpha_align): Increase max_alignment to 16.
(alpha_print_token): Call print_expr_1 instead of print_expr.
(md_pseudo_table): Add "section", "literals", "handler" and
"handler_data" (evax). Do not ignore "prologue" on evax.
Fix indentation.
(md_begin): Create hash table for alpha_evax_proc_hash.
(md_parse_option): Handle OPTION_REPLACE and OPTION_NOREPLACE.
(md_show_usage): Mention -replace/-noreplace for evax.
(md_apply_fix): Handle evax relocs (_NOP, _LDA, _BSR and _BOH).
(alpha_force_relocation): Likewise.
(alpha_fix_adjustable): Likewise. Add BFD_RELOC_16 case.
(tc_gen_reloc): Likewise. Add BFD_RELOC_ALPHA_LINKAGE for evax.
(emit_insn): New cases for evax specific relocs.
(assemble_insn): Fix indentation.
Take care of -MDISP in operand table.
* config/obj-evax.h (struct alpha_linkage_fixups): New struct.
(OBJ_SYMFIELD_TYPE): New macro.
(obj_symbol_new_hook): Define.
(obj_frob_symbol, obj_frob_file_before_adjust): Ditto.
(obj_frob_file_before_fix): Ditto.
(PDSC_S_M_HANDLER_VALID): New macro.
(PDSC_S_M_HANDLER_DATA_VALID): Ditto.
(TC_IMPLICIT_LCOMM_ALIGNMENT): Remove.
Add prototypes for functions declared in obj-evax.c
* config/obj-evax.c: Include subsegs.h, struc-symbol.h, safe-ctype.h.
(s_evax_weak): Convert to ansi-C.
(evax_symbol_new_hook): New function.
(evax_frob_symbol): Ditto.
(evax_frob_file_before_adjust): Ditto.
(evax_frob_file_before_fix): Ditto.
(evax_shorten_name): Ditto.
(crc32): Ditto.
(encode_32): Ditto.
(encode_16): Ditto.
(decode_16): Ditto.
(shorten_identifier): Ditto.
(is_truncated_identifier): Ditto.
* dwarf2dbg.c (out_debug_info): Do not append trailing slash on VMS.
* as.c (close_output_file): Remove #ifndef OBJ_VMS.
(main): Ditto.
Diffstat (limited to 'gas/config/obj-evax.h')
-rw-r--r-- | gas/config/obj-evax.h | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/gas/config/obj-evax.h b/gas/config/obj-evax.h index 824eeac..162d566 100644 --- a/gas/config/obj-evax.h +++ b/gas/config/obj-evax.h @@ -25,6 +25,8 @@ * object format specific header files. */ +#include "as.h" + /* define an obj specific macro off which target cpu back ends may key. */ #define OBJ_EVAX 1 @@ -33,6 +35,16 @@ #define OUTPUT_FLAVOR bfd_target_evax_flavour +struct fix; + +struct alpha_linkage_fixups +{ + struct alpha_linkage_fixups *next; + struct fix *fixp; + segT seg; + symbolS *label; +}; + /* * SYMBOLS */ @@ -58,7 +70,13 @@ typedef void *object_headers; #define OBJ_EMIT_LINENO(a,b,c) /* must be *something*. This no-op's it out. */ -#define obj_symbol_new_hook(s) {;} +/* This field keeps the symbols position in the link section. */ +#define OBJ_SYMFIELD_TYPE valueT + +#define obj_symbol_new_hook(s) evax_symbol_new_hook (s) +#define obj_frob_symbol(s,p) evax_frob_symbol (s, &p) +#define obj_frob_file_before_adjust evax_frob_file_before_adjust +#define obj_frob_file_before_fix evax_frob_file_before_fix #define S_SET_OTHER(S,V) #define S_SET_TYPE(S,T) @@ -75,13 +93,23 @@ typedef void *object_headers; #define PDSC_S_K_MIN_REGISTER_SIZE 24 #define PDSC_S_K_NULL_SIZE 16 -#define PDSC_S_M_BASE_REG_IS_FP 0x80 /* low byte */ +#define PDSC_S_M_HANDLER_VALID 0x10 /* low byte */ +#define PDSC_S_M_HANDLER_DATA_VALID 0x40 /* low byte */ +#define PDSC_S_M_BASE_REG_IS_FP 0x80 /* low byte */ #define PDSC_S_M_NATIVE 0x10 /* high byte */ #define PDSC_S_M_NO_JACKET 0x20 /* high byte */ #define LKP_S_K_SIZE 16 -#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) (P2VAR) = 3 +extern segT alpha_link_section; +extern struct alpha_linkage_fixups *alpha_linkage_fixup_root; + +extern void evax_section (int); +extern void evax_symbol_new_hook (symbolS *); +extern void evax_frob_symbol (symbolS *, int *); +extern void evax_frob_file_before_adjust (void); +extern void evax_frob_file_before_fix (void); +extern char *evax_shorten_name (char *); /* * Local Variables: |