obj.h revision 130561
11556Srgrimes/* obj.h - defines the object dependent hooks for all object
21556Srgrimes   format backends.
31556Srgrimes
41556Srgrimes   Copyright 1987, 1990, 1991, 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2002
51556Srgrimes   Free Software Foundation, Inc.
61556Srgrimes
71556Srgrimes   This file is part of GAS, the GNU Assembler.
81556Srgrimes
91556Srgrimes   GAS is free software; you can redistribute it and/or modify
101556Srgrimes   it under the terms of the GNU General Public License as published by
111556Srgrimes   the Free Software Foundation; either version 2, or (at your option)
121556Srgrimes   any later version.
131556Srgrimes
141556Srgrimes   GAS is distributed in the hope that it will be useful,
151556Srgrimes   but WITHOUT ANY WARRANTY; without even the implied warranty of
161556Srgrimes   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
171556Srgrimes   GNU General Public License for more details.
181556Srgrimes
191556Srgrimes   You should have received a copy of the GNU General Public License
201556Srgrimes   along with GAS; see the file COPYING.  If not, write to the Free
211556Srgrimes   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
221556Srgrimes   02111-1307, USA.  */
231556Srgrimes
241556Srgrimeschar *obj_default_output_file_name (void);
251556Srgrimesvoid obj_emit_relocations (char **where, fixS * fixP,
261556Srgrimes			   relax_addressT segment_address_in_file);
271556Srgrimesvoid obj_emit_strings (char **where);
281556Srgrimesvoid obj_emit_symbols (char **where, symbolS * symbols);
291556Srgrimes#ifndef obj_read_begin_hook
301556Srgrimesvoid obj_read_begin_hook (void);
311556Srgrimes#endif
321556Srgrimes#ifndef BFD_ASSEMBLER
331556Srgrimesvoid obj_crawl_symbol_chain (object_headers * headers);
3436150Scharniervoid obj_header_append (char **where, object_headers * headers);
3536150Scharnier#ifndef obj_pre_write_hook
3636150Scharniervoid obj_pre_write_hook (object_headers * headers);
371556Srgrimes#endif
3899110Sobrien#endif
3999110Sobrien
401556Srgrimes#ifndef obj_symbol_new_hook
41100437Stjrvoid obj_symbol_new_hook (symbolS * symbolP);
4217987Speter#endif
43102576Skeramida
4417987Spetervoid obj_symbol_to_chars (char **where, symbolS * symbolP);
45153091Sstefanf
4645266Scracauerextern const pseudo_typeS obj_pseudo_table[];
4753891Scracauer
4817987Speter#ifdef BFD_ASSEMBLER
491556Srgrimesstruct format_ops {
501556Srgrimes  int flavor;
511556Srgrimes  unsigned dfl_leading_underscore : 1;
521556Srgrimes  unsigned emit_section_symbols : 1;
531556Srgrimes  void (*begin) (void);
541556Srgrimes  void (*app_file) (const char *);
551556Srgrimes  void (*frob_symbol) (symbolS *, int *);
561556Srgrimes  void (*frob_file) (void);
571556Srgrimes  void (*frob_file_before_adjust) (void);
581556Srgrimes  void (*frob_file_before_fix) (void);
591556Srgrimes  void (*frob_file_after_relocs) (void);
601556Srgrimes  bfd_vma (*s_get_size) (symbolS *);
611556Srgrimes  void (*s_set_size) (symbolS *, bfd_vma);
621556Srgrimes  bfd_vma (*s_get_align) (symbolS *);
631556Srgrimes  void (*s_set_align) (symbolS *, bfd_vma);
641556Srgrimes  int (*s_get_other) (symbolS *);
651556Srgrimes  void (*s_set_other) (symbolS *, int);
661556Srgrimes  int (*s_get_desc) (symbolS *);
671556Srgrimes  void (*s_set_desc) (symbolS *, int);
681556Srgrimes  int (*s_get_type) (symbolS *);
691556Srgrimes  void (*s_set_type) (symbolS *, int);
7017987Speter  void (*copy_symbol_attributes) (symbolS *, symbolS *);
711556Srgrimes  void (*generate_asm_lineno) (void);
7217987Speter  void (*process_stab) (segT, int, const char *, int, int, int);
731556Srgrimes  int (*separate_stab_sections) (void);
7417987Speter  void (*init_stab_section) (segT);
751556Srgrimes  int (*sec_sym_ok_for_reloc) (asection *);
761556Srgrimes  void (*pop_insert) (void);
77201053Sjilles  /* For configurations using ECOFF_DEBUGGING, this callback is used.  */
781556Srgrimes  void (*ecoff_set_ext) (symbolS *, struct ecoff_extr *);
791556Srgrimes
801556Srgrimes  void (*read_begin_hook) (void);
81193169Sstefanf  void (*symbol_new_hook) (symbolS *);
821556Srgrimes};
831556Srgrimes
841556Srgrimesextern const struct format_ops elf_format_ops;
851556Srgrimesextern const struct format_ops ecoff_format_ops;
861556Srgrimesextern const struct format_ops coff_format_ops;
8717987Speterextern const struct format_ops aout_format_ops;
881556Srgrimes
891556Srgrimes#ifndef this_format
90149933SstefanfCOMMON const struct format_ops *this_format;
91149933Sstefanf#endif
9290111Simp#endif
9390111Simp
94205154Sjilles/* end of obj.h */
9590111Simp