| /* ----------------------------------------------------------------------- * |
| * |
| * Copyright 1996-2018 The NASM Authors - All Rights Reserved |
| * See the file AUTHORS included with the NASM distribution for |
| * the specific copyright holders. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following |
| * conditions are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * Redistributions in binary form must reproduce the above |
| * copyright notice, this list of conditions and the following |
| * disclaimer in the documentation and/or other materials provided |
| * with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
| * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
| * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
| * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
| * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| * |
| * ----------------------------------------------------------------------- */ |
| |
| #ifndef STABS_H_ |
| #define STABS_H_ |
| |
| #include <ctype.h> |
| |
| #include "compiler.h" |
| #include "nasmlib.h" |
| #include "nasm.h" |
| |
| /* offsets */ |
| enum stab_offsets { |
| STAB_strdxoff = 0, |
| STAB_typeoff = 4, |
| STAB_otheroff = 5, |
| STAB_descoff = 6, |
| STAB_valoff = 8, |
| STAB_stabsize = 12 |
| }; |
| |
| /* stab/non-stab types */ |
| enum stab_types { |
| N_UNDF = 0x00, /* Undefined symbol */ |
| N_EXT = 0x01, /* External symbol */ |
| N_ABS = 0x02, /* Absolute symbol */ |
| N_ABS_EXT = 0x03, /* Absolute external symbol */ |
| N_TEXT = 0x04, /* Symbol in text segment */ |
| N_TEXT_EXT = 0x05, /* Symbol in external text segment */ |
| N_DATA = 0x06, |
| N_DATA_EXT = 0x07, |
| N_BSS = 0x08, |
| N_BSS_EXT = 0x09, |
| N_INDR = 0x0a, |
| N_FN_SEQ = 0x0c, /* N_FN from Sequent compilers */ |
| N_WEAKU = 0x0d, /* Weak undefined symbol */ |
| N_WEAKA = 0x0e, /* Weak absolute symbl */ |
| N_WEAKT = 0x0f, /* Weak text symbol */ |
| N_WEAKD = 0x10, /* Weak data symbol */ |
| N_WEAKB = 0x11, /* Weak bss symbol */ |
| N_COMM = 0x12, /* Common symbol */ |
| N_SETA = 0x14, /* Absolute set element symbol */ |
| N_SETA_EXT = 0x15, |
| N_SETT = 0x16, /* Text set element symbol */ |
| N_SETT_EXT = 0x17, |
| N_SETD = 0x18, /* Data set element symbol */ |
| N_SETD_EXT = 0x19, |
| N_SETB = 0x1a, /* BSS set element symbol */ |
| N_SETB_EXT = 0x1b, |
| N_SETV = 0x1c, /* Pointer to set vector in data area */ |
| N_SETV_EXT = 0x1d, |
| N_WARNING = 0x1e, /* Warning symbol */ |
| N_FN = 0x1f, /* Filename of .o file */ |
| N_GSYM = 0x20, /* Global variable */ |
| N_FNAME = 0x22, /* Function name for BSD Fortran */ |
| N_FUN = 0x24, /* Function name or text segment variable for C */ |
| N_STSYM = 0x26, /* Data-segment variable with internal linkage */ |
| N_LCSYM = 0x28, /* BSS-segment variable with internal linkage */ |
| N_MAIN = 0x2a, /* Name of main routine */ |
| N_ROSYM = 0x2c, /* Read-only data symbols */ |
| N_BNSYM = 0x2e, /* The beginning of a relocatable function block */ |
| N_PC = 0x30, /* Global symbol in Pascal */ |
| N_NSYMS = 0x32, /* Number of symbols */ |
| N_NOMAP = 0x34, /* No DST map for sym */ |
| N_OBJ = 0x38, /* Like N_SO, but for the object file */ |
| N_OPT = 0x3c, /* Options for the debugger */ |
| N_RSYM = 0x40, /* Register variable */ |
| N_M2C = 0x42, /* Modula-2 compilation unit */ |
| N_SLINE = 0x44, /* Line number in text segment */ |
| N_DSLINE = 0x46, /* Line number in data segment */ |
| N_BSLINE = 0x48, /* Line number in bss segment */ |
| N_BROWS = 0x48, /* Sun's source-code browser stabs */ |
| N_DEFD = 0x4a, /* GNU Modula-2 definition module dependency */ |
| N_FLINE = 0x4c, /* Function start/body/end line numbers */ |
| N_ENSYM = 0x4e, /* This tells the end of a relocatable function */ |
| N_EHDECL = 0x50, /* GNU C++ exception variable */ |
| N_MOD2 = 0x50, /* Modula2 info "for imc" */ |
| N_CATCH = 0x54, /* GNU C++ `catch' clause */ |
| N_SSYM = 0x60, /* Structure or union element */ |
| N_ENDM = 0x62, /* Last stab emitted for module */ |
| N_SO = 0x64, /* ID for main source file */ |
| N_OSO = 0x66, /* Apple: This is the stab that associated the .o file */ |
| N_ALIAS = 0x6c, /* SunPro F77: Name of alias */ |
| N_LSYM = 0x80, /* Automatic variable in the stack */ |
| N_BINCL = 0x82, /* Beginning of an include file */ |
| N_SOL = 0x84, /* ID for sub-source file */ |
| N_PSYM = 0xa0, /* Parameter variable */ |
| N_EINCL = 0xa2, /* End of an include file */ |
| N_ENTRY = 0xa4, /* Alternate entry point */ |
| N_LBRAC = 0xc0, /* Beginning of lexical block */ |
| N_EXCL = 0xc2, /* Place holder for deleted include file */ |
| N_SCOPE = 0xc4, /* Modula-2 scope information */ |
| N_PATCH = 0xd0, /* Solaris2: Patch Run Time Checker */ |
| N_RBRAC = 0xe0, /* End of a lexical block */ |
| N_BCOMM = 0xe2, /* Begin named common block */ |
| N_ECOMM = 0xe4, /* End named common block */ |
| N_ECOML = 0xe8, /* Member of a common block */ |
| N_WITH = 0xea, /* Solaris2: Pascal "with" statement */ |
| N_NBTEXT = 0xf0, |
| N_NBDATA = 0xf2, |
| N_NBBSS = 0xf4, |
| N_NBSTS = 0xf6, |
| N_NBLCS = 0xf8, |
| N_LENG = 0xfe /* Second symbol entry whih a length-value for the preceding entry */ |
| }; |
| |
| enum stab_source_file { |
| N_SO_AS = 0x01, |
| N_SO_C = 0x02, |
| N_SO_ANSI_C = 0x03, |
| N_SO_CC = 0x04, |
| N_SO_FORTRAN = 0x05, |
| N_SO_PASCAL = 0x06, |
| N_SO_FORTRAN90 = 0x07, |
| N_SO_OBJC = 0x32, |
| N_SO_OBJCPLUS = 0x33 |
| }; |
| |
| #endif /* STABS_H_ */ |