1  /* This file is obj-evax.h
       2     Copyright (C) 1996-2023 Free Software Foundation, Inc.
       3     Contributed by Klaus K�mpf (kkaempf@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   */