Home | History | Annotate | Download | only in config
      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