
1: /* ecoff.h -- header file for ECOFF debugging support 2: Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2005, 2007 3: Free Software Foundation, Inc. 4: Contributed by Cygnus Support. 5: Put together by Ian Lance Taylor <ian@cygnus.com>. 6: 7: This file is part of GAS, the GNU Assembler. 8: 9: GAS is free software; you can redistribute it and/or modify 10: it under the terms of the GNU General Public License as published by 11: the Free Software Foundation; either version 3, or (at your option) 12: any later version. 13: 14: GAS is distributed in the hope that it will be useful, 15: but WITHOUT ANY WARRANTY; without even the implied warranty of 16: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17: GNU General Public License for more details. 18: 19: You should have received a copy of the GNU General Public License 20: along with GAS; see the file COPYING. If not, write to the Free 21: Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 22: 02110-1301, USA. */ 23: 24: #ifndef GAS_ECOFF_H 25: #define GAS_ECOFF_H 26: 27: #ifdef ECOFF_DEBUGGING 28: 29: #include "coff/sym.h" 30: #include "coff/ecoff.h" 31: 32: /* Whether we have seen any ECOFF debugging information. */ 33: extern int ecoff_debugging_seen; 34: 35: /* This function should be called at the start of assembly, by 36: obj_read_begin_hook. */ 37: extern void ecoff_read_begin_hook (void); 38: 39: /* This function should be called when the assembler switches to a new 40: file. */ 41: extern void ecoff_new_file (const char *, int); 42: 43: /* This function should be called when a new symbol is created, by 44: obj_symbol_new_hook. */ 45: extern void ecoff_symbol_new_hook (symbolS *); 46: 47: /* This function should be called by the obj_frob_symbol hook. */ 48: extern void ecoff_frob_symbol (symbolS *); 49: 50: /* Build the ECOFF debugging information. This should be called by 51: obj_frob_file. This fills in the counts in *HDR; the offsets are 52: filled in relative to the start of the *BUFP. It sets *BUFP to a 53: block of memory holding the debugging information. It returns the 54: length of *BUFP. */ 55: extern unsigned long ecoff_build_debug 56: (HDRR *hdr, char **bufp, const struct ecoff_debug_swap *); 57: 58: /* Functions to handle the ECOFF debugging directives. */ 59: extern void ecoff_directive_begin (int); 60: extern void ecoff_directive_bend (int); 61: extern void ecoff_directive_end (int); 62: extern void ecoff_directive_ent (int); 63: extern void ecoff_directive_fmask (int); 64: extern void ecoff_directive_frame (int); 65: extern void ecoff_directive_loc (int); 66: extern void ecoff_directive_mask (int); 67: 68: /* Other ECOFF directives. */ 69: extern void ecoff_directive_extern (int); 70: extern void ecoff_directive_weakext (int); 71: 72: /* Functions to handle the COFF debugging directives. */ 73: extern void ecoff_directive_def (int); 74: extern void ecoff_directive_dim (int); 75: extern void ecoff_directive_endef (int); 76: extern void ecoff_directive_file (int); 77: extern void ecoff_directive_scl (int); 78: extern void ecoff_directive_size (int); 79: extern void ecoff_directive_tag (int); 80: extern void ecoff_directive_type (int); 81: extern void ecoff_directive_val (int); 82: 83: /* Handle stabs. */ 84: extern void ecoff_stab (segT sec, int what, const char *string, 85: int type, int other, int desc); 86: 87: /* Set the GP prologue size. */ 88: extern void ecoff_set_gp_prolog_size (int sz); 89: 90: /* This routine is called from the ECOFF code to set the external 91: information for a symbol. */ 92: #ifndef obj_ecoff_set_ext 93: extern void obj_ecoff_set_ext (symbolS *, EXTR *); 94: #endif 95: 96: /* This routine is used to patch up a line number directive when 97: instructions are moved around. */ 98: extern void ecoff_fix_loc (fragS *, unsigned long); 99: 100: /* This function is called from read.c to peek at cur_file_ptr. */ 101: extern int ecoff_no_current_file (void); 102: 103: /* This function returns the symbol associated with the current proc. */ 104: extern symbolS *ecoff_get_cur_proc_sym (void); 105: 106: #endif /* ECOFF_DEBUGGING */ 107: 108: /* This routine is called from read.c to generate line number for .s file. */ 109: extern void ecoff_generate_asm_lineno (void); 110: 111: #endif /* ! GAS_ECOFF_H */