Mark debugger related variables and functions as EXTERNALLY_VISIBLE
so that they do not get optimized away. * configure.in (EXTERNALLY_VISIBLE): New definition. * src/emacs.c (gdb_use_union, gdb_valbits,gdb_gctypebits) (gdb_data_seg_bits, gdb_array_mark_flag, PVEC_FLAG) (gdb_pvec_type): * src/print.c (print_output_debug_flag): * src/lisp.h (debug_print): Mark as EXTERNALLY_VISIBLE. (safe_debug_print): New declaration.
This commit is contained in:
parent
2e8a479790
commit
42c8bc9b87
7 changed files with 34 additions and 13 deletions
|
@ -1,6 +1,7 @@
|
|||
2010-11-23 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* configure.in <AC_CHECK_HEADERS>: Remove sys/ioctl.h.
|
||||
(EXTERNALLY_VISIBLE): New definition.
|
||||
|
||||
2010-11-21 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
|
|
|
@ -3633,6 +3633,12 @@ typedef unsigned size_t;
|
|||
#define NO_INLINE
|
||||
#endif
|
||||
|
||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1))
|
||||
#define EXTERNALLY_VISIBLE __attribute__((externally_visible))
|
||||
#else
|
||||
#define EXTERNALLY_VISIBLE
|
||||
#endif
|
||||
|
||||
/* Some versions of GNU/Linux define noinline in their headers. */
|
||||
#ifdef noinline
|
||||
#undef noinline
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
2010-11-23 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* emacs.c (gdb_use_union, gdb_valbits,gdb_gctypebits)
|
||||
(gdb_data_seg_bits, gdb_array_mark_flag, PVEC_FLAG)
|
||||
(gdb_pvec_type):
|
||||
* print.c (print_output_debug_flag):
|
||||
* lisp.h (debug_print): Mark as EXTERNALLY_VISIBLE.
|
||||
(safe_debug_print): New declaration.
|
||||
|
||||
* xterm.c:
|
||||
* systty.h:
|
||||
* sound.c: Include <sys/ioctl.h> unconditionally.
|
||||
|
|
|
@ -1197,6 +1197,12 @@ typedef unsigned size_t;
|
|||
#define NO_INLINE
|
||||
#endif
|
||||
|
||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1))
|
||||
#define EXTERNALLY_VISIBLE __attribute__((externally_visible))
|
||||
#else
|
||||
#define EXTERNALLY_VISIBLE
|
||||
#endif
|
||||
|
||||
/* Some versions of GNU/Linux define noinline in their headers. */
|
||||
#ifdef noinline
|
||||
#undef noinline
|
||||
|
|
22
src/emacs.c
22
src/emacs.c
|
@ -100,27 +100,27 @@ static const char emacs_version[] = "24.0.50";
|
|||
/* Make these values available in GDB, which doesn't see macros. */
|
||||
|
||||
#ifdef USE_LSB_TAG
|
||||
int gdb_use_lsb = 1;
|
||||
int gdb_use_lsb EXTERNALLY_VISIBLE = 1;
|
||||
#else
|
||||
int gdb_use_lsb = 0;
|
||||
int gdb_use_lsb EXTERNALLY_VISIBLE = 0;
|
||||
#endif
|
||||
#ifndef USE_LISP_UNION_TYPE
|
||||
int gdb_use_union = 0;
|
||||
int gdb_use_union EXTERNALLY_VISIBLE = 0;
|
||||
#else
|
||||
int gdb_use_union = 1;
|
||||
int gdb_use_union EXTERNALLY_VISIBLE = 1;
|
||||
#endif
|
||||
EMACS_INT gdb_valbits = VALBITS;
|
||||
EMACS_INT gdb_gctypebits = GCTYPEBITS;
|
||||
EMACS_INT gdb_valbits EXTERNALLY_VISIBLE = VALBITS;
|
||||
EMACS_INT gdb_gctypebits EXTERNALLY_VISIBLE = GCTYPEBITS;
|
||||
#if defined (DATA_SEG_BITS) && ! defined (USE_LSB_TAG)
|
||||
EMACS_INT gdb_data_seg_bits = DATA_SEG_BITS;
|
||||
EMACS_INT gdb_data_seg_bits EXTERNALLY_VISIBLE = DATA_SEG_BITS;
|
||||
#else
|
||||
EMACS_INT gdb_data_seg_bits = 0;
|
||||
EMACS_INT gdb_data_seg_bits EXTERNALLY_VISIBLE = 0;
|
||||
#endif
|
||||
EMACS_INT PVEC_FLAG = PSEUDOVECTOR_FLAG;
|
||||
EMACS_INT gdb_array_mark_flag = ARRAY_MARK_FLAG;
|
||||
EMACS_INT PVEC_FLAG EXTERNALLY_VISIBLE = PSEUDOVECTOR_FLAG;
|
||||
EMACS_INT gdb_array_mark_flag EXTERNALLY_VISIBLE = ARRAY_MARK_FLAG;
|
||||
/* GDB might say "No enum type named pvec_type" if we don't have at
|
||||
least one symbol with that type, and then xbacktrace could fail. */
|
||||
enum pvec_type gdb_pvec_type = PVEC_TYPE_MASK;
|
||||
enum pvec_type gdb_pvec_type EXTERNALLY_VISIBLE = PVEC_TYPE_MASK;
|
||||
|
||||
/* Command line args from shell, as list of strings. */
|
||||
Lisp_Object Vcommand_line_args;
|
||||
|
|
|
@ -2832,7 +2832,8 @@ extern void syms_of_chartab (void);
|
|||
/* Defined in print.c */
|
||||
extern Lisp_Object Vprin1_to_string_buffer;
|
||||
extern Lisp_Object Vprint_level, Vprint_length;
|
||||
extern void debug_print (Lisp_Object);
|
||||
extern void debug_print (Lisp_Object) EXTERNALLY_VISIBLE;
|
||||
extern void safe_debug_print (Lisp_Object) EXTERNALLY_VISIBLE;
|
||||
EXFUN (Fprin1, 2);
|
||||
EXFUN (Fprin1_to_string, 2);
|
||||
EXFUN (Fprinc, 2);
|
||||
|
|
|
@ -163,7 +163,7 @@ Lisp_Object Vprint_number_table;
|
|||
void print_interval (INTERVAL interval, Lisp_Object printcharfun);
|
||||
|
||||
/* GDB resets this to zero on W32 to disable OutputDebugString calls. */
|
||||
int print_output_debug_flag = 1;
|
||||
int print_output_debug_flag EXTERNALLY_VISIBLE = 1;
|
||||
|
||||
|
||||
/* Low level output routines for characters and strings */
|
||||
|
|
Loading…
Reference in a new issue