133965Sjdp/* ECOFF object file format header file.
2218822Sdim   Copyright 1993, 1994, 1995, 1996, 1997, 1999, 2002, 2004, 2005
378828Sobrien   Free Software Foundation, Inc.
433965Sjdp   Contributed by Cygnus Support.
533965Sjdp   Written by Ian Lance Taylor <ian@cygnus.com>.
633965Sjdp
733965Sjdp   This file is part of GAS.
833965Sjdp
933965Sjdp   GAS is free software; you can redistribute it and/or modify
1033965Sjdp   it under the terms of the GNU General Public License as published by
1133965Sjdp   the Free Software Foundation; either version 2, or (at your option)
1233965Sjdp   any later version.
1333965Sjdp
1433965Sjdp   GAS is distributed in the hope that it will be useful,
1533965Sjdp   but WITHOUT ANY WARRANTY; without even the implied warranty of
1633965Sjdp   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1733965Sjdp   GNU General Public License for more details.
1833965Sjdp
1933965Sjdp   You should have received a copy of the GNU General Public License
2033965Sjdp   along with GAS; see the file COPYING.  If not, write to the Free
21218822Sdim   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
22218822Sdim   02110-1301, USA.  */
2333965Sjdp
2433965Sjdp#define OBJ_ECOFF 1
2533965Sjdp
2633965Sjdp/* Use the generic ECOFF debugging code.  */
2733965Sjdp#define ECOFF_DEBUGGING 1
2833965Sjdp
2933965Sjdp#define OUTPUT_FLAVOR bfd_target_ecoff_flavour
3033965Sjdp
3133965Sjdp#include "targ-cpu.h"
3233965Sjdp
3333965Sjdp#include "ecoff.h"
3433965Sjdp
3533965Sjdp/* For each gas symbol we keep track of which file it came from, of
3633965Sjdp   whether we have generated an ECOFF symbol for it, and whether the
3733965Sjdp   symbols is undefined (this last is needed to distinguish a .extern
3833965Sjdp   symbols from a .comm symbol).  */
3933965Sjdp
4060484Sobrienstruct ecoff_sy_obj
4160484Sobrien{
4260484Sobrien  struct efdr *ecoff_file;
4360484Sobrien  struct localsym *ecoff_symbol;
4433965Sjdp  valueT ecoff_extern_size;
4560484Sobrien};
4633965Sjdp
4760484Sobrien#define OBJ_SYMFIELD_TYPE struct ecoff_sy_obj
4860484Sobrien
4933965Sjdp/* Modify the ECOFF symbol.  */
5033965Sjdp#define obj_frob_symbol(symp, punt) ecoff_frob_symbol (symp)
5133965Sjdp
52130561Sobrien/* Set section VMAs and GP.  */
53130561Sobrien#define obj_frob_file_before_fix() ecoff_frob_file_before_fix ()
54130561Sobrien
5533965Sjdp/* This is used to write the symbolic data in the format that BFD
5633965Sjdp   expects it.  */
5733965Sjdp#define obj_frob_file() ecoff_frob_file ()
5833965Sjdp
5933965Sjdp/* We use the ECOFF functions as our hooks.  */
6033965Sjdp#define obj_read_begin_hook ecoff_read_begin_hook
6133965Sjdp#define obj_symbol_new_hook ecoff_symbol_new_hook
6233965Sjdp
6333965Sjdp/* Record file switches in the ECOFF symbol table.  */
64218822Sdim#define obj_app_file(name, app) ecoff_new_file (name, app)
6533965Sjdp
6633965Sjdp/* At the moment we don't want to do any stabs processing in read.c.  */
6733965Sjdp#define OBJ_PROCESS_STAB(seg, what, string, type, other, desc) \
6833965Sjdp  ecoff_stab ((seg), (what), (string), (type), (other), (desc))
6933965Sjdp
7033965Sjdp#define EMIT_SECTION_SYMBOLS		0
7133965Sjdp#define obj_sec_sym_ok_for_reloc(SEC)	1
7233965Sjdp
7333965Sjdp#define obj_ecoff_set_ext ecoff_set_ext
74218822Sdim
75218822Sdimextern void ecoff_frob_file_before_fix (void);
76218822Sdimextern void ecoff_frob_file (void);
77218822Sdimextern void obj_ecoff_set_ext (symbolS *, EXTR *);
78