| 1 | /* Definitions needed when using stabs embedded in ELF sections.
|
|---|
| 2 | Copyright (C) 1999 Free Software Foundation, Inc.
|
|---|
| 3 |
|
|---|
| 4 | This file is part of GNU CC.
|
|---|
| 5 |
|
|---|
| 6 | GNU CC is free software; you can redistribute it and/or modify
|
|---|
| 7 | it under the terms of the GNU General Public License as published by
|
|---|
| 8 | the Free Software Foundation; either version 2, or (at your option)
|
|---|
| 9 | any later version.
|
|---|
| 10 |
|
|---|
| 11 | GNU CC is distributed in the hope that it will be useful,
|
|---|
| 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|---|
| 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|---|
| 14 | GNU General Public License for more details.
|
|---|
| 15 |
|
|---|
| 16 | You should have received a copy of the GNU General Public License
|
|---|
| 17 | along with GNU CC; see the file COPYING. If not, write to
|
|---|
| 18 | the Free Software Foundation, 59 Temple Place - Suite 330,
|
|---|
| 19 | Boston, MA 02111-1307, USA. */
|
|---|
| 20 |
|
|---|
| 21 | /* This file may be included by any ELF target which wishes to
|
|---|
| 22 | support -gstabs generating stabs in sections, as produced by gas
|
|---|
| 23 | and understood by gdb. */
|
|---|
| 24 |
|
|---|
| 25 | #ifndef GCC_DBX_ELF_H
|
|---|
| 26 | #define GCC_DBX_ELF_H
|
|---|
| 27 |
|
|---|
| 28 | /* Output DBX (stabs) debugging information if doing -gstabs. */
|
|---|
| 29 |
|
|---|
| 30 | #undef DBX_DEBUGGING_INFO
|
|---|
| 31 | #define DBX_DEBUGGING_INFO
|
|---|
| 32 |
|
|---|
| 33 | /* Make LBRAC and RBRAC addresses relative to the start of the
|
|---|
| 34 | function. The native Solaris stabs debugging format works this
|
|---|
| 35 | way, gdb expects it, and it reduces the number of relocation
|
|---|
| 36 | entries... */
|
|---|
| 37 |
|
|---|
| 38 | #undef DBX_BLOCKS_FUNCTION_RELATIVE
|
|---|
| 39 | #define DBX_BLOCKS_FUNCTION_RELATIVE 1
|
|---|
| 40 |
|
|---|
| 41 | /* ... but, to make this work, functions must appear prior to line info. */
|
|---|
| 42 |
|
|---|
| 43 | #undef DBX_FUNCTION_FIRST
|
|---|
| 44 | #define DBX_FUNCTION_FIRST
|
|---|
| 45 |
|
|---|
| 46 | /* When generating stabs debugging, use N_BINCL entries. */
|
|---|
| 47 |
|
|---|
| 48 | #undef DBX_USE_BINCL
|
|---|
| 49 | #define DBX_USE_BINCL
|
|---|
| 50 |
|
|---|
| 51 | /* There is no limit to the length of stabs strings. */
|
|---|
| 52 |
|
|---|
| 53 | #ifndef DBX_CONTIN_LENGTH
|
|---|
| 54 | #define DBX_CONTIN_LENGTH 0
|
|---|
| 55 | #endif
|
|---|
| 56 |
|
|---|
| 57 | /* Like block addresses, stabs line numbers are relative to the
|
|---|
| 58 | current function. */
|
|---|
| 59 |
|
|---|
| 60 | #undef ASM_OUTPUT_SOURCE_LINE
|
|---|
| 61 | #define ASM_OUTPUT_SOURCE_LINE(FILE, LINE) \
|
|---|
| 62 | do \
|
|---|
| 63 | { \
|
|---|
| 64 | static int sym_lineno = 1; \
|
|---|
| 65 | char temp[256]; \
|
|---|
| 66 | ASM_GENERATE_INTERNAL_LABEL (temp, "LM", sym_lineno); \
|
|---|
| 67 | fprintf (FILE, "\t.stabn 68,0,%d,", LINE); \
|
|---|
| 68 | assemble_name (FILE, temp); \
|
|---|
| 69 | putc ('-', FILE); \
|
|---|
| 70 | assemble_name (FILE, \
|
|---|
| 71 | XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));\
|
|---|
| 72 | putc ('\n', FILE); \
|
|---|
| 73 | ASM_OUTPUT_INTERNAL_LABEL (FILE, "LM", sym_lineno); \
|
|---|
| 74 | sym_lineno += 1; \
|
|---|
| 75 | } \
|
|---|
| 76 | while (0)
|
|---|
| 77 |
|
|---|
| 78 | /* Generate a blank trailing N_SO to mark the end of the .o file, since
|
|---|
| 79 | we can't depend upon the linker to mark .o file boundaries with
|
|---|
| 80 | embedded stabs. */
|
|---|
| 81 |
|
|---|
| 82 | #undef DBX_OUTPUT_MAIN_SOURCE_FILE_END
|
|---|
| 83 | #define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME) \
|
|---|
| 84 | asm_fprintf (FILE, \
|
|---|
| 85 | "\t.text\n\t.stabs \"\",%d,0,0,%LLetext\n%LLetext:\n", N_SO)
|
|---|
| 86 |
|
|---|
| 87 | #endif /* ! GCC_DBX_ELF_H */
|
|---|