tc.h revision 130561
133965Sjdp/* tc.h - target cpu dependent
233965Sjdp
3130561Sobrien   Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2003
478828Sobrien   Free Software Foundation, Inc.
533965Sjdp
633965Sjdp   This file is part of GAS, the GNU Assembler.
733965Sjdp
833965Sjdp   GAS is free software; you can redistribute it and/or modify
933965Sjdp   it under the terms of the GNU General Public License as published by
1033965Sjdp   the Free Software Foundation; either version 2, or (at your option)
1133965Sjdp   any later version.
1233965Sjdp
1333965Sjdp   GAS is distributed in the hope that it will be useful,
1433965Sjdp   but WITHOUT ANY WARRANTY; without even the implied warranty of
1533965Sjdp   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1633965Sjdp   GNU General Public License for more details.
1733965Sjdp
1833965Sjdp   You should have received a copy of the GNU General Public License
1933965Sjdp   along with GAS; see the file COPYING.  If not, write to
2033965Sjdp   the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
2133965Sjdp
2233965Sjdp/* In theory (mine, at least!) the machine dependent part of the assembler
2333965Sjdp   should only have to include one file.  This one.  -- JF */
2433965Sjdp
2533965Sjdpextern const pseudo_typeS md_pseudo_table[];
2633965Sjdp
2733965Sjdp/* JF moved this here from as.h under the theory that nobody except MACHINE.c
2877298Sobrien   and write.c care about it anyway.  */
2933965Sjdp
3033965Sjdpstruct relax_type
3133965Sjdp{
3277298Sobrien  /* Forward reach. Signed number. > 0.  */
3333965Sjdp  long rlx_forward;
3477298Sobrien  /* Backward reach. Signed number. < 0.  */
3533965Sjdp  long rlx_backward;
3633965Sjdp
3777298Sobrien  /* Bytes length of this address.  */
3833965Sjdp  unsigned char rlx_length;
3933965Sjdp
4077298Sobrien  /* Next longer relax-state.  0 means there is no 'next' relax-state.  */
4133965Sjdp  relax_substateT rlx_more;
4233965Sjdp};
4333965Sjdp
4433965Sjdptypedef struct relax_type relax_typeS;
4533965Sjdp
4633965Sjdpextern const int md_reloc_size;	/* Size of a relocation record */
4733965Sjdp
48130561Sobrienchar *md_atof (int what_statement_type, char *literalP, int *sizeP);
4933965Sjdp#ifndef md_estimate_size_before_relax
50130561Sobrienint md_estimate_size_before_relax (fragS * fragP, segT segment);
5133965Sjdp#endif
52130561Sobrienint md_parse_option (int c, char *arg);
53130561Sobrienvoid md_show_usage (FILE *);
54130561Sobrien#ifndef md_pcrel_from
55130561Sobrienlong md_pcrel_from (fixS * fixP);
56130561Sobrien#endif
57130561Sobrienshort tc_coff_fix2rtype (fixS * fixP);
58130561Sobrienvoid md_assemble (char *str);
59130561Sobrienvoid md_begin (void);
6033965Sjdp#ifndef md_create_long_jump
61130561Sobrienvoid md_create_long_jump (char *ptr, addressT from_addr,
62130561Sobrien			  addressT to_addr, fragS * frag,
63130561Sobrien			  symbolS * to_symbol);
6433965Sjdp#endif
6533965Sjdp#ifndef md_create_short_jump
66130561Sobrienvoid md_create_short_jump (char *ptr, addressT from_addr,
67130561Sobrien			   addressT to_addr, fragS * frag,
68130561Sobrien			   symbolS * to_symbol);
6933965Sjdp#endif
70130561Sobrienvoid md_number_to_chars (char *buf, valueT val, int n);
7133965Sjdp
7233965Sjdp#ifndef md_operand
73130561Sobrienvoid md_operand (expressionS * expressionP);
7433965Sjdp#endif
7533965Sjdp
76130561Sobrienvoid md_apply_fix3 (fixS *, valueT *, segT);
7789857Sobrien
7833965Sjdp#ifdef BFD_ASSEMBLER
7933965Sjdp#ifndef md_convert_frag
80130561Sobrienvoid md_convert_frag (bfd * headers, segT sec, fragS * fragP);
8133965Sjdp#endif
8233965Sjdp#ifndef tc_headers_hook
83130561Sobrienvoid tc_headers_hook (segT *, fixS *);
8433965Sjdp#endif
8533965Sjdp#ifndef RELOC_EXPANSION_POSSIBLE
86130561Sobrienextern arelent *tc_gen_reloc (asection *, fixS *);
8733965Sjdp#else
88130561Sobrienextern arelent **tc_gen_reloc (asection *, fixS *);
8933965Sjdp#endif
9033965Sjdp#else /* not BFD_ASSEMBLER */
9133965Sjdp#ifndef md_convert_frag
92130561Sobrienvoid md_convert_frag (object_headers * headers, segT, fragS * fragP);
9333965Sjdp#endif
9433965Sjdp
9533965Sjdp#ifndef tc_crawl_symbol_chain
96130561Sobrienvoid tc_crawl_symbol_chain (object_headers * headers);
9733965Sjdp#endif /* tc_crawl_symbol_chain */
9833965Sjdp
9933965Sjdp#ifndef tc_headers_hook
100130561Sobrienvoid tc_headers_hook (object_headers * headers);
10133965Sjdp#endif /* tc_headers_hook */
10233965Sjdp#endif /* BFD_ASSEMBLER */
10333965Sjdp
10433965Sjdp#ifndef md_section_align
105130561SobrienvalueT md_section_align (segT seg, valueT size);
10633965Sjdp#endif
10733965Sjdp
10833965Sjdp#ifndef md_undefined_symbol
109130561SobriensymbolS *md_undefined_symbol (char *name);
11033965Sjdp#endif
11133965Sjdp
11233965Sjdp/* end of tc.h */
113