1 /* This file is obj-evax.h 2 Copyright (C) 1996-2014 Free Software Foundation, Inc. 3 Contributed by Klaus Kmpf (kkaempf (at) progis.de) of 4 proGIS Software, Aachen, Germany. 5 6 This file is part of GAS, the GNU Assembler. 7 8 GAS is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 3, or (at your option) 11 any later version. 12 13 GAS is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with GAS; see the file COPYING. If not, write to 20 the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, 21 MA 02110-1301, USA. */ 22 23 /* 24 * This file is obj-evax.h and is intended to be a template for 25 * object format specific header files. 26 */ 27 28 #include "as.h" 29 30 /* define an obj specific macro off which target cpu back ends may key. */ 31 #define OBJ_EVAX 1 32 33 /* include whatever target cpu is appropriate. */ 34 #include "targ-cpu.h" 35 36 #define OUTPUT_FLAVOR bfd_target_evax_flavour 37 38 struct fix; 39 40 /* Simply linked list of .linkage. */ 41 struct alpha_linkage_fixups 42 { 43 /* Next entry. */ 44 struct alpha_linkage_fixups *next; 45 46 /* Corresponding fixup. */ 47 struct fix *fixp; 48 49 /* Label that designates this entry. 50 Note that a linkage entry can only be designated by one label. 51 Also, s_alpha_linkage force the creation of a label. */ 52 symbolS *label; 53 }; 54 55 /* 56 * SYMBOLS 57 */ 58 59 /* 60 * If your object format needs to reorder symbols, define this. When 61 * defined, symbols are kept on a doubly linked list and functions are 62 * made available for push, insert, append, and delete. If not defined, 63 * symbols are kept on a singly linked list, only the append and clear 64 * facilities are available, and they are macros. 65 */ 66 67 /* #define SYMBOLS_NEED_PACKPOINTERS */ 68 69 #define OBJ_EMIT_LINENO(a,b,c) /* must be *something*. This no-op's it out. */ 70 71 #define obj_symbol_new_hook(s) evax_symbol_new_hook (s) 72 #define obj_frob_symbol(s,p) evax_frob_symbol (s, &p) 73 #define obj_frob_file_before_adjust evax_frob_file_before_adjust 74 #define obj_frob_file_before_fix evax_frob_file_before_fix 75 76 #define S_GET_OTHER(S) 0 77 #define S_GET_TYPE(S) 0 78 #define S_GET_DESC(S) 0 79 80 #define PDSC_S_K_KIND_FP_STACK 9 81 #define PDSC_S_K_KIND_FP_REGISTER 10 82 #define PDSC_S_K_KIND_NULL 8 83 84 #define PDSC_S_K_MIN_STACK_SIZE 32 85 #define PDSC_S_K_MIN_REGISTER_SIZE 24 86 #define PDSC_S_K_NULL_SIZE 16 87 88 #define PDSC_S_M_HANDLER_VALID 0x10 /* low byte */ 89 #define PDSC_S_M_HANDLER_DATA_VALID 0x40 /* low byte */ 90 #define PDSC_S_M_BASE_REG_IS_FP 0x80 /* low byte */ 91 #define PDSC_S_M_NATIVE 0x10 /* high byte */ 92 #define PDSC_S_M_NO_JACKET 0x20 /* high byte */ 93 94 #define LKP_S_K_SIZE 16 95 96 extern segT alpha_link_section; 97 extern struct alpha_linkage_fixups *alpha_linkage_fixup_root; 98 99 extern void evax_section (int); 100 extern void evax_symbol_new_hook (symbolS *); 101 extern void evax_frob_symbol (symbolS *, int *); 102 extern void evax_frob_file_before_adjust (void); 103 extern void evax_frob_file_before_fix (void); 104 extern char *evax_shorten_name (char *); 105 106 /* 107 * Local Variables: 108 * comment-column: 0 109 * fill-column: 131 110 * End: 111 */ 112