(root)/
binutils-2.41/
gas/
config/
obj-multi.h
       1  /* Multiple object format emulation.
       2     Copyright (C) 1995-2023 Free Software Foundation, Inc.
       3  
       4     This file is part of GAS, the GNU Assembler.
       5  
       6     GAS is free software; you can redistribute it and/or modify
       7     it under the terms of the GNU General Public License as published by
       8     the Free Software Foundation; either version 3, or (at your option)
       9     any later version.
      10  
      11     GAS is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14     GNU General Public License for more details.
      15  
      16     You should have received a copy of the GNU General Public License
      17     along with GAS; see the file COPYING.  If not, write to the Free
      18     Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
      19     02110-1301, USA.  */
      20  
      21  #ifndef _OBJ_MULTI_H
      22  #define _OBJ_MULTI_H
      23  
      24  #ifdef OBJ_HEADER
      25  #include OBJ_HEADER
      26  #else
      27  
      28  #include "emul.h"
      29  #include "targ-cpu.h"
      30  
      31  #define OUTPUT_FLAVOR					\
      32  	(this_format->flavor)
      33  
      34  #define obj_begin()					\
      35  	(this_format->begin				\
      36  	 ? (*this_format->begin) ()			\
      37  	 : (void) 0)
      38  
      39  #define obj_end()					\
      40  	(this_format->end				\
      41  	 ? (*this_format->end) ()			\
      42  	 : (void) 0)
      43  
      44  #define obj_app_file(NAME)				\
      45  	(this_format->app_file				\
      46  	 ? (*this_format->app_file) (NAME)		\
      47  	 : (void) 0)
      48  
      49  #define obj_frob_symbol(S,P)				\
      50  	(*this_format->frob_symbol) (S, &(P))
      51  
      52  #define obj_frob_file()					\
      53  	(this_format->frob_file				\
      54  	 ? (*this_format->frob_file) ()			\
      55  	 : (void) 0)
      56  
      57  #define obj_frob_file_before_adjust()			\
      58  	(this_format->frob_file_before_adjust		\
      59  	 ? (*this_format->frob_file_before_adjust) ()	\
      60  	 : (void) 0)
      61  
      62  #define obj_frob_file_before_fix()			\
      63  	(this_format->frob_file_before_fix		\
      64  	 ? (*this_format->frob_file_before_fix) ()	\
      65  	 : (void) 0)
      66  
      67  #define obj_frob_file_after_relocs()			\
      68  	(this_format->frob_file_after_relocs		\
      69  	 ? (*this_format->frob_file_after_relocs) ()	\
      70  	 : (void) 0)
      71  
      72  #define obj_ecoff_set_ext				\
      73  	(*this_format->ecoff_set_ext)
      74  
      75  #define obj_pop_insert					\
      76  	(*this_format->pop_insert)
      77  
      78  #define obj_read_begin_hook()				\
      79  	(this_format->read_begin_hook			\
      80  	 ? (*this_format->read_begin_hook) ()		\
      81  	 : (void) 0)
      82  
      83  #define obj_symbol_new_hook(S)				\
      84  	(this_format->symbol_new_hook			\
      85  	 ? (*this_format->symbol_new_hook) (S)		\
      86  	 : (void) 0)
      87  
      88  #define obj_symbol_clone_hook(N, O)			\
      89  	(this_format->symbol_clone_hook			\
      90  	 ? (*this_format->symbol_clone_hook) (N, O)	\
      91  	 : (void) 0)
      92  
      93  #define obj_sec_sym_ok_for_reloc(A)			\
      94  	(this_format->sec_sym_ok_for_reloc		\
      95  	 ? (*this_format->sec_sym_ok_for_reloc) (A)	\
      96  	 : 0)
      97  
      98  #define obj_adjust_symtab()				\
      99  	(this_format->adjust_symtab			\
     100  	 ? (*this_format->adjust_symtab) ()		\
     101  	 : (void) 0)
     102  
     103  #define S_GET_SIZE					\
     104  	(*this_format->s_get_size)
     105  
     106  #define S_SET_SIZE(S, N)				\
     107  	(this_format->s_set_size			\
     108  	 ? (*this_format->s_set_size) (S, N)		\
     109  	 : (void) 0)
     110  
     111  #define S_GET_ALIGN					\
     112  	(*this_format->s_get_align)
     113  
     114  #define S_SET_ALIGN(S, N)				\
     115  	(this_format->s_set_align			\
     116  	 ? (*this_format->s_set_align) (S, N)		\
     117  	 : (void) 0)
     118  
     119  #define S_GET_OTHER					\
     120  	(*this_format->s_get_other)
     121  
     122  #define S_SET_OTHER(S, O)				\
     123  	(this_format->s_set_other			\
     124  	 ? (*this_format->s_set_other) (S, O)		\
     125  	 : (void) 0)
     126  
     127  #define S_GET_DESC					\
     128  	(*this_format->s_get_desc)
     129  
     130  #define S_SET_DESC(S, D)				\
     131  	(this_format->s_set_desc			\
     132  	 ? (*this_format->s_set_desc) (S, D)		\
     133  	 : (void) 0)
     134  
     135  #define S_GET_TYPE					\
     136  	(*this_format->s_get_desc)
     137  
     138  #define S_SET_TYPE(S, T)				\
     139  	(this_format->s_set_type			\
     140  	 ? (*this_format->s_set_type) (S, T)		\
     141  	 : (void) 0)
     142  
     143  #define OBJ_COPY_SYMBOL_ATTRIBUTES(d,s)			\
     144  	(this_format->copy_symbol_attributes		\
     145  	 ? (*this_format->copy_symbol_attributes) (d, s) \
     146  	 : (void) 0)
     147  
     148  #define OBJ_PROCESS_STAB(SEG,W,S,T,O,D)			\
     149  	(this_format->process_stab			\
     150  	 ? (*this_format->process_stab) (SEG,W,S,T,O,D)	\
     151  	 : (void) 0)
     152  
     153  #define SEPARATE_STAB_SECTIONS \
     154  	((*this_format->separate_stab_sections) ())
     155  
     156  #define INIT_STAB_SECTION(S)				\
     157  	(this_format->init_stab_section			\
     158  	 ? (*this_format->init_stab_section) (S)	\
     159  	 : (void) 0)
     160  
     161  #define EMIT_SECTION_SYMBOLS (this_format->emit_section_symbols)
     162  
     163  #ifndef INITIALIZING_EMULS
     164  /* We want to use the default FAKE_LABEL_NAME in as.c.  */
     165  #define FAKE_LABEL_NAME (this_emulation->fake_label_name)
     166  #endif
     167  
     168  #ifdef OBJ_MAYBE_ELF
     169  /* We need OBJ_SYMFIELD_TYPE so that symbol_get_obj is defined in symbol.c
     170     We also need various STAB defines for stab.c  */
     171  #include "obj-elf.h"
     172  #endif
     173  
     174  #ifdef OBJ_MAYBE_AOUT
     175  /* We want aout_process_stab in stabs.c for the aout table.  Defining this
     176     macro will have no other effect.  */
     177  #define AOUT_STABS
     178  #endif
     179  
     180  #endif /* !OBJ_HEADER */
     181  #endif /* _OBJ_MULTI_H */