1 /* *INDENT-OFF* */ /* ATTR_FORMAT confuses indent, avoid running it for now */
2 /* Basic, host-specific, and target-specific definitions for GDB.
3    Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
4    1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
5    Free Software Foundation, Inc.
6 
7    This file is part of GDB.
8 
9    This program 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 2 of the License, or
12    (at your option) any later version.
13 
14    This program 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 this program; if not, write to the Free Software
21    Foundation, Inc., 59 Temple Place - Suite 330,
22    Boston, MA 02111-1307, USA.  */
23 
24 #ifndef DEFS_H
25 #define DEFS_H
26 
27 #include "config.h"		/* Generated by configure.  */
28 
29 #include <stdio.h>
30 #include <errno.h>		/* System call error return status.  */
31 #include <limits.h>
32 
33 #ifdef HAVE_STDDEF_H
34 #include <stddef.h>
35 #else
36 #include <sys/types.h>		/* For size_t.  */
37 #endif
38 
39 #ifdef HAVE_UNISTD_H
40 #include <unistd.h>
41 #endif
42 
43 /* First include ansidecl.h so we can use the various macro definitions
44    here and in all subsequent file inclusions.  */
45 
46 #include "ansidecl.h"
47 
48 #include "gdb_locale.h"
49 
50 /* For ``enum target_signal''.  */
51 #include "gdb/signals.h"
52 
53 /* Just in case they're not defined in stdio.h.  */
54 
55 #ifndef SEEK_SET
56 #define SEEK_SET 0
57 #endif
58 #ifndef SEEK_CUR
59 #define SEEK_CUR 1
60 #endif
61 
62 #include <stdarg.h>		/* For va_list.  */
63 
64 #include "libiberty.h"
65 
66 /* For BFD64 and bfd_vma.  */
67 #include "bfd.h"
68 
69 
70 /* The target is partially multi-arched.  Both "tm.h" and the
71    multi-arch vector provide definitions.  "tm.h" normally overrides
72    the multi-arch vector (but there are a few exceptions).  */
73 
74 #define GDB_MULTI_ARCH_PARTIAL 1
75 
76 /* The target is partially multi-arched. Both the multi-arch vector
77    and "tm.h" provide definitions. "tm.h" cannot override a definition
78    provided by the multi-arch vector.  It is detected as a compilation
79    error.
80 
81    This setting is only useful during a multi-arch conversion. */
82 
83 #define GDB_MULTI_ARCH_TM 2
84 
85 /* The target is pure multi-arch.  The MULTI-ARCH vector provides all
86    definitions.  "tm.h" is linked to an empty file. */
87 
88 #define GDB_MULTI_ARCH_PURE 3
89 
90 
91 
92 /* An address in the program being debugged.  Host byte order.  Rather
93    than duplicate all the logic in BFD which figures out what type
94    this is (long, long long, etc.) and whether it needs to be 64
95    bits (the host/target interactions are subtle), we just use
96    bfd_vma.  */
97 
98 typedef bfd_vma CORE_ADDR;
99 
100 /* This is to make sure that LONGEST is at least as big as CORE_ADDR.  */
101 
102 #ifndef LONGEST
103 
104 #ifdef BFD64
105 
106 #define LONGEST BFD_HOST_64_BIT
107 #define ULONGEST BFD_HOST_U_64_BIT
108 
109 #else /* No BFD64 */
110 
111 #ifdef CC_HAS_LONG_LONG
112 #define LONGEST long long
113 #define ULONGEST unsigned long long
114 #else
115 #ifdef BFD_HOST_64_BIT
116 /* BFD_HOST_64_BIT is defined for some hosts that don't have long long
117    (e.g. i386-windows) so try it.  */
118 #define LONGEST BFD_HOST_64_BIT
119 #define ULONGEST BFD_HOST_U_64_BIT
120 #else
121 #define LONGEST long
122 #define ULONGEST unsigned long
123 #endif
124 #endif
125 
126 #endif /* No BFD64 */
127 
128 #endif /* ! LONGEST */
129 
130 #ifndef min
131 #define min(a, b) ((a) < (b) ? (a) : (b))
132 #endif
133 #ifndef max
134 #define max(a, b) ((a) > (b) ? (a) : (b))
135 #endif
136 
137 /* Macros to do string compares.
138 
139    NOTE: cagney/2000-03-14:
140 
141    While old code can continue to refer to these macros, new code is
142    probably better off using strcmp() directly vis: ``strcmp() == 0''
143    and ``strcmp() != 0''.
144 
145    This is because modern compilers can directly inline strcmp()
146    making the original justification for these macros - avoid function
147    call overhead by pre-testing the first characters
148    (``*X==*Y?...:0'') - redundant.
149 
150    ``Even if [...] testing the first character does have a modest
151    performance improvement, I'd rather that whenever a performance
152    issue is found that we spend the effort on algorithmic
153    optimizations than micro-optimizing.'' J.T. */
154 
155 /* NOTE: cagney/2003-11-23: All instances of STREQ[N] covered by
156    testing GDB on a stabs system have been replaced by equivalent
157    str[n]cmp calls.  To avoid the possability of introducing bugs when
158    making untested changes, the remaining references were deprecated
159    rather than replaced.  */
160 
161 /* DISCLAIMER: cagney/2003-11-23: Simplified definition of these
162    macros so that they just map directly onto strcmp equivalent.  I'm
163    not responsible for any breakage due to code that relied on the old
164    underlying implementation.  */
165 
166 #define DEPRECATED_STREQ(a,b) (strcmp ((a), (b)) == 0)
167 #define DEPRECATED_STREQN(a,b,c) (strncmp ((a), (b), (c)) == 0)
168 
169 /* Check if a character is one of the commonly used C++ marker characters.  */
170 extern int is_cplus_marker (int);
171 
172 /* enable xdb commands if set */
173 extern int xdb_commands;
174 
175 /* enable dbx commands if set */
176 extern int dbx_commands;
177 
178 /* System root path, used to find libraries etc.  */
179 extern char *gdb_sysroot;
180 
181 extern int quit_flag;
182 extern int immediate_quit;
183 extern int sevenbit_strings;
184 
185 extern void quit (void);
186 
187 /* FIXME: cagney/2000-03-13: It has been suggested that the peformance
188    benefits of having a ``QUIT'' macro rather than a function are
189    marginal.  If the overhead of a QUIT function call is proving
190    significant then its calling frequency should probably be reduced
191    [kingdon].  A profile analyzing the current situtation is
192    needed. */
193 
194 #ifdef QUIT
195 /* do twice to force compiler warning */
196 #define QUIT_FIXME "FIXME"
197 #define QUIT_FIXME "ignoring redefinition of QUIT"
198 #else
199 #define QUIT { \
200   if (quit_flag) quit (); \
201   if (deprecated_interactive_hook) deprecated_interactive_hook (); \
202 }
203 #endif
204 
205 /* Languages represented in the symbol table and elsewhere.
206    This should probably be in language.h, but since enum's can't
207    be forward declared to satisfy opaque references before their
208    actual definition, needs to be here. */
209 
210 enum language
211   {
212     language_unknown,		/* Language not known */
213     language_auto,		/* Placeholder for automatic setting */
214     language_c,			/* C */
215     language_cplus,		/* C++ */
216     language_objc,		/* Objective-C */
217     language_java,		/* Java */
218     language_fortran,		/* Fortran */
219     language_m2,		/* Modula-2 */
220     language_asm,		/* Assembly language */
221     language_scm,    		/* Scheme / Guile */
222     language_pascal,		/* Pascal */
223     language_minimal		/* All other languages, minimal support only */
224   };
225 
226 enum precision_type
227   {
228     single_precision,
229     double_precision,
230     unspecified_precision
231   };
232 
233 /* A generic, not quite boolean, enumeration.  */
234 enum auto_boolean
235 {
236   AUTO_BOOLEAN_TRUE,
237   AUTO_BOOLEAN_FALSE,
238   AUTO_BOOLEAN_AUTO
239 };
240 
241 /* Potential ways that a function can return a value of a given type.  */
242 enum return_value_convention
243 {
244   /* Where the return value has been squeezed into one or more
245      registers.  */
246   RETURN_VALUE_REGISTER_CONVENTION,
247   /* Commonly known as the "struct return convention".  The caller
248      passes an additional hidden first parameter to the caller.  That
249      parameter contains the address at which the value being returned
250      should be stored.  While typically, and historically, used for
251      large structs, this is convention is applied to values of many
252      different types.  */
253   RETURN_VALUE_STRUCT_CONVENTION,
254   /* Like the "struct return convention" above, but where the ABI
255      guarantees that the called function stores the address at which
256      the value being returned is stored in a well-defined location,
257      such as a register or memory slot in the stack frame.  Don't use
258      this if the ABI doesn't explicitly guarantees this.  */
259   RETURN_VALUE_ABI_RETURNS_ADDRESS,
260   /* Like the "struct return convention" above, but where the ABI
261      guarantees that the address at which the value being returned is
262      stored will be available in a well-defined location, such as a
263      register or memory slot in the stack frame.  Don't use this if
264      the ABI doesn't explicitly guarantees this.  */
265   RETURN_VALUE_ABI_PRESERVES_ADDRESS,
266 };
267 
268 /* the cleanup list records things that have to be undone
269    if an error happens (descriptors to be closed, memory to be freed, etc.)
270    Each link in the chain records a function to call and an
271    argument to give it.
272 
273    Use make_cleanup to add an element to the cleanup chain.
274    Use do_cleanups to do all cleanup actions back to a given
275    point in the chain.  Use discard_cleanups to remove cleanups
276    from the chain back to a given point, not doing them.  */
277 
278 struct cleanup
279   {
280     struct cleanup *next;
281     void (*function) (void *);
282     void *arg;
283   };
284 
285 
286 /* The ability to declare that a function never returns is useful, but
287    not really required to compile GDB successfully, so the NORETURN and
288    ATTR_NORETURN macros normally expand into nothing.  */
289 
290 /* If compiling with older versions of GCC, a function may be declared
291    "volatile" to indicate that it does not return.  */
292 
293 #ifndef NORETURN
294 #if defined(__GNUC__) \
295      && (__GNUC__ == 1 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7))
296 #define NORETURN volatile
297 #else
298 #define NORETURN		/* nothing */
299 #endif
300 #endif
301 
302 /* GCC 2.5 and later versions define a function attribute "noreturn",
303    which is the preferred way to declare that a function never returns.
304    However GCC 2.7 appears to be the first version in which this fully
305    works everywhere we use it. */
306 
307 #ifndef ATTR_NORETURN
308 #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
309 #define ATTR_NORETURN __attribute__ ((noreturn))
310 #else
311 #define ATTR_NORETURN		/* nothing */
312 #endif
313 #endif
314 
315 #ifndef ATTR_FORMAT
316 #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4))
317 #define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y)))
318 #else
319 #define ATTR_FORMAT(type, x, y)	/* nothing */
320 #endif
321 #endif
322 
323 /* Be conservative and use enum bitfields only with GCC.
324    This is copied from gcc 3.3.1, system.h.  */
325 
326 #if defined(__GNUC__) && (__GNUC__ >= 2)
327 #define ENUM_BITFIELD(TYPE) enum TYPE
328 #else
329 #define ENUM_BITFIELD(TYPE) unsigned int
330 #endif
331 
332 /* Needed for various prototypes */
333 
334 struct symtab;
335 struct breakpoint;
336 struct frame_info;
337 
338 /* From blockframe.c */
339 
340 extern int inside_entry_func (struct frame_info *this_frame);
341 
342 extern int inside_main_func (CORE_ADDR pc);
343 
344 /* From utils.c */
345 
346 extern void initialize_utils (void);
347 
348 extern void notice_quit (void);
349 
350 extern int strcmp_iw (const char *, const char *);
351 
352 extern int strcmp_iw_ordered (const char *, const char *);
353 
354 extern int streq (const char *, const char *);
355 
356 extern int subset_compare (char *, char *);
357 
358 extern char *safe_strerror (int);
359 
360 extern void init_malloc (void *);
361 
362 extern void request_quit (int);
363 
364 extern void do_cleanups (struct cleanup *);
365 extern void do_final_cleanups (struct cleanup *);
366 extern void do_run_cleanups (struct cleanup *);
367 extern void do_exec_cleanups (struct cleanup *);
368 extern void do_exec_error_cleanups (struct cleanup *);
369 
370 extern void discard_cleanups (struct cleanup *);
371 extern void discard_final_cleanups (struct cleanup *);
372 extern void discard_exec_error_cleanups (struct cleanup *);
373 extern void discard_my_cleanups (struct cleanup **, struct cleanup *);
374 
375 /* NOTE: cagney/2000-03-04: This typedef is strictly for the
376    make_cleanup function declarations below. Do not use this typedef
377    as a cast when passing functions into the make_cleanup() code.
378    Instead either use a bounce function or add a wrapper function.
379    Calling a f(char*) function with f(void*) is non-portable. */
380 typedef void (make_cleanup_ftype) (void *);
381 
382 extern struct cleanup *make_cleanup (make_cleanup_ftype *, void *);
383 
384 extern struct cleanup *make_cleanup_freeargv (char **);
385 
386 struct ui_file;
387 extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
388 
389 extern struct cleanup *make_cleanup_close (int fd);
390 
391 extern struct cleanup *make_cleanup_bfd_close (bfd *abfd);
392 
393 extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
394 
395 extern struct cleanup *make_my_cleanup (struct cleanup **,
396 					make_cleanup_ftype *, void *);
397 
398 extern struct cleanup *make_run_cleanup (make_cleanup_ftype *, void *);
399 
400 extern struct cleanup *make_exec_cleanup (make_cleanup_ftype *, void *);
401 extern struct cleanup *make_exec_error_cleanup (make_cleanup_ftype *, void *);
402 
403 extern struct cleanup *save_cleanups (void);
404 extern struct cleanup *save_final_cleanups (void);
405 extern struct cleanup *save_my_cleanups (struct cleanup **);
406 
407 extern void restore_cleanups (struct cleanup *);
408 extern void restore_final_cleanups (struct cleanup *);
409 extern void restore_my_cleanups (struct cleanup **, struct cleanup *);
410 
411 extern void free_current_contents (void *);
412 
413 extern void null_cleanup (void *);
414 
415 extern int myread (int, char *, int);
416 
417 extern int query (const char *, ...) ATTR_FORMAT (printf, 1, 2);
418 extern int nquery (const char *, ...) ATTR_FORMAT (printf, 1, 2);
419 extern int yquery (const char *, ...) ATTR_FORMAT (printf, 1, 2);
420 
421 extern void init_page_info (void);
422 
423 extern char *gdb_realpath (const char *);
424 extern char *xfullpath (const char *);
425 
426 extern unsigned long gnu_debuglink_crc32 (unsigned long crc,
427                                           unsigned char *buf, size_t len);
428 
429 /* From demangle.c */
430 
431 extern void set_demangling_style (char *);
432 
433 /* From tm.h */
434 
435 struct type;
436 typedef int (use_struct_convention_fn) (int gcc_p, struct type * value_type);
437 extern use_struct_convention_fn generic_use_struct_convention;
438 
439 
440 /* Annotation stuff.  */
441 
442 extern int annotation_level;	/* in stack.c */
443 
444 extern void begin_line (void);
445 
446 extern void wrap_here (char *);
447 
448 extern void reinitialize_more_filter (void);
449 
450 /* Normal results */
451 extern struct ui_file *gdb_stdout;
452 /* Input stream */
453 extern struct ui_file *gdb_stdin;
454 /* Serious error notifications */
455 extern struct ui_file *gdb_stderr;
456 /* Log/debug/trace messages that should bypass normal stdout/stderr
457    filtering.  For moment, always call this stream using
458    *_unfiltered. In the very near future that restriction shall be
459    removed - either call shall be unfiltered. (cagney 1999-06-13). */
460 extern struct ui_file *gdb_stdlog;
461 /* Target output that should bypass normal stdout/stderr filtering.
462    For moment, always call this stream using *_unfiltered. In the
463    very near future that restriction shall be removed - either call
464    shall be unfiltered. (cagney 1999-07-02). */
465 extern struct ui_file *gdb_stdtarg;
466 extern struct ui_file *gdb_stdtargerr;
467 extern struct ui_file *gdb_stdtargin;
468 
469 #include "ui-file.h"
470 
471 /* More generic printf like operations.  Filtered versions may return
472    non-locally on error.  */
473 
474 extern void fputs_filtered (const char *, struct ui_file *);
475 
476 extern void fputs_unfiltered (const char *, struct ui_file *);
477 
478 extern int fputc_filtered (int c, struct ui_file *);
479 
480 extern int fputc_unfiltered (int c, struct ui_file *);
481 
482 extern int putchar_filtered (int c);
483 
484 extern int putchar_unfiltered (int c);
485 
486 extern void puts_filtered (const char *);
487 
488 extern void puts_unfiltered (const char *);
489 
490 extern void puts_filtered_tabular (char *string, int width, int right);
491 
492 extern void puts_debug (char *prefix, char *string, char *suffix);
493 
494 extern void vprintf_filtered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
495 
496 extern void vfprintf_filtered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0);
497 
498 extern void fprintf_filtered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3);
499 
500 extern void fprintfi_filtered (int, struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 3, 4);
501 
502 extern void printf_filtered (const char *, ...) ATTR_FORMAT (printf, 1, 2);
503 
504 extern void printfi_filtered (int, const char *, ...) ATTR_FORMAT (printf, 2, 3);
505 
506 extern void vprintf_unfiltered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
507 
508 extern void vfprintf_unfiltered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0);
509 
510 extern void fprintf_unfiltered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3);
511 
512 extern void printf_unfiltered (const char *, ...) ATTR_FORMAT (printf, 1, 2);
513 
514 extern void print_spaces (int, struct ui_file *);
515 
516 extern void print_spaces_filtered (int, struct ui_file *);
517 
518 extern char *n_spaces (int);
519 
520 extern void fputstr_filtered (const char *str, int quotr, struct ui_file * stream);
521 
522 extern void fputstr_unfiltered (const char *str, int quotr, struct ui_file * stream);
523 
524 extern void fputstrn_unfiltered (const char *str, int n, int quotr, struct ui_file * stream);
525 
526 /* Display the host ADDR on STREAM formatted as ``0x%x''. */
527 extern void gdb_print_host_address (const void *addr, struct ui_file *stream);
528 
529 /* Convert a CORE_ADDR into a HEX string.  paddr() is like %08lx.
530    paddr_nz() is like %lx.  paddr_u() is like %lu. paddr_width() is
531    for ``%*''. */
532 extern int strlen_paddr (void);
533 extern char *paddr (CORE_ADDR addr);
534 extern char *paddr_nz (CORE_ADDR addr);
535 extern char *paddr_u (CORE_ADDR addr);
536 extern char *paddr_d (LONGEST addr);
537 
538 extern char *phex (ULONGEST l, int sizeof_l);
539 extern char *phex_nz (ULONGEST l, int sizeof_l);
540 
541 /* Like paddr() only print/scan raw CORE_ADDR.  The output from
542    core_addr_to_string() can be passed direct to
543    string_to_core_addr().  */
544 extern const char *core_addr_to_string (const CORE_ADDR addr);
545 extern const char *core_addr_to_string_nz (const CORE_ADDR addr);
546 extern CORE_ADDR string_to_core_addr (const char *my_string);
547 
548 extern void fprintf_symbol_filtered (struct ui_file *, char *,
549 				     enum language, int);
550 
551 extern NORETURN void perror_with_name (const char *) ATTR_NORETURN;
552 
553 extern void print_sys_errmsg (const char *, int);
554 
555 /* From regex.c or libc.  BSD 4.4 declares this with the argument type as
556    "const char *" in unistd.h, so we can't declare the argument
557    as "char *".  */
558 
559 extern char *re_comp (const char *);
560 
561 /* From symfile.c */
562 
563 extern void symbol_file_command (char *, int);
564 
565 /* Remote targets may wish to use this as their load function.  */
566 extern void generic_load (char *name, int from_tty);
567 
568 /* Summarise a download */
569 extern void print_transfer_performance (struct ui_file *stream,
570 					unsigned long data_count,
571 					unsigned long write_count,
572 					unsigned long time_count);
573 
574 /* From top.c */
575 
576 typedef void initialize_file_ftype (void);
577 
578 extern char *skip_quoted (char *);
579 
580 extern char *gdb_readline (char *);
581 
582 extern char *gdb_readline_wrapper (char *);
583 
584 extern char *command_line_input (char *, int, char *);
585 
586 extern void print_prompt (void);
587 
588 extern int input_from_terminal_p (void);
589 
590 extern int info_verbose;
591 
592 /* From printcmd.c */
593 
594 extern void set_next_address (CORE_ADDR);
595 
596 extern void print_address_symbolic (CORE_ADDR, struct ui_file *, int,
597 				    char *);
598 
599 extern int build_address_symbolic (CORE_ADDR addr,
600 				   int do_demangle,
601 				   char **name,
602 				   int *offset,
603 				   char **filename,
604 				   int *line,
605 				   int *unmapped);
606 
607 extern void print_address_numeric (CORE_ADDR, int, struct ui_file *);
608 
609 extern void print_address (CORE_ADDR, struct ui_file *);
610 
611 /* From source.c */
612 
613 extern int openp (const char *, int, const char *, int, int, char **);
614 
615 extern int source_full_path_of (char *, char **);
616 
617 extern void mod_path (char *, char **);
618 
619 extern void add_path (char *, char **, int);
620 
621 extern void directory_command (char *, int);
622 
623 extern char *source_path;
624 
625 extern void init_source_path (void);
626 
627 extern void init_last_source_visited (void);
628 
629 /* From exec.c */
630 
631 extern void exec_set_section_offsets (bfd_signed_vma text_off,
632 				      bfd_signed_vma data_off,
633 				      bfd_signed_vma bss_off);
634 
635 /* Take over the 'find_mapped_memory' vector from exec.c. */
636 extern void exec_set_find_memory_regions (int (*) (int (*) (CORE_ADDR,
637 							    unsigned long,
638 							    int, int, int,
639 							    void *),
640 						   void *));
641 
642 /* Possible lvalue types.  Like enum language, this should be in
643    value.h, but needs to be here for the same reason. */
644 
645 enum lval_type
646   {
647     /* Not an lval. */
648     not_lval,
649     /* In memory.  Could be a saved register.  */
650     lval_memory,
651     /* In a register.  */
652     lval_register,
653     /* In a gdb internal variable.  */
654     lval_internalvar,
655     /* Part of a gdb internal variable (structure field).  */
656     lval_internalvar_component,
657     /* In a register series in a frame not the current one, which may have been
658        partially saved or saved in different places (otherwise would be
659        lval_register or lval_memory).  */
660     lval_reg_frame_relative
661   };
662 
663 /* Control types for commands */
664 
665 enum misc_command_type
666   {
667     ok_command,
668     end_command,
669     else_command,
670     nop_command
671   };
672 
673 enum command_control_type
674   {
675     simple_control,
676     break_control,
677     continue_control,
678     while_control,
679     if_control,
680     invalid_control
681   };
682 
683 /* Structure for saved commands lines
684    (for breakpoints, defined commands, etc).  */
685 
686 struct command_line
687   {
688     struct command_line *next;
689     char *line;
690     enum command_control_type control_type;
691     int body_count;
692     struct command_line **body_list;
693   };
694 
695 extern struct command_line *read_command_lines (char *, int);
696 
697 extern void free_command_lines (struct command_line **);
698 
699 /* To continue the execution commands when running gdb asynchronously.
700    A continuation structure contains a pointer to a function to be called
701    to finish the command, once the target has stopped. Such mechanism is
702    used bt the finish and until commands, and in the remote protocol
703    when opening an extended-remote connection. */
704 
705 struct continuation_arg
706   {
707     struct continuation_arg *next;
708     union continuation_data {
709       void *pointer;
710       int   integer;
711       long  longint;
712     } data;
713   };
714 
715 struct continuation
716   {
717     void (*continuation_hook) (struct continuation_arg *);
718     struct continuation_arg *arg_list;
719     struct continuation *next;
720   };
721 
722 /* In infrun.c. */
723 extern struct continuation *cmd_continuation;
724 /* Used only by the step_1 function. */
725 extern struct continuation *intermediate_continuation;
726 
727 /* From utils.c */
728 extern void add_continuation (void (*)(struct continuation_arg *),
729 			      struct continuation_arg *);
730 extern void do_all_continuations (void);
731 extern void discard_all_continuations (void);
732 
733 extern void add_intermediate_continuation (void (*)(struct continuation_arg *),
734 			      struct continuation_arg *);
735 extern void do_all_intermediate_continuations (void);
736 extern void discard_all_intermediate_continuations (void);
737 
738 /* String containing the current directory (what getwd would return).  */
739 
740 extern char *current_directory;
741 
742 /* Default radixes for input and output.  Only some values supported.  */
743 extern unsigned input_radix;
744 extern unsigned output_radix;
745 
746 /* Possibilities for prettyprint parameters to routines which print
747    things.  Like enum language, this should be in value.h, but needs
748    to be here for the same reason.  FIXME:  If we can eliminate this
749    as an arg to LA_VAL_PRINT, then we can probably move it back to
750    value.h. */
751 
752 enum val_prettyprint
753   {
754     Val_no_prettyprint = 0,
755     Val_prettyprint,
756     /* Use the default setting which the user has specified.  */
757     Val_pretty_default
758   };
759 
760 /* The ptid struct is a collection of the various "ids" necessary
761    for identifying the inferior.  This consists of the process id
762    (pid), thread id (tid), and other fields necessary for uniquely
763    identifying the inferior process/thread being debugged.  When
764    manipulating ptids, the constructors, accessors, and predicate
765    declared in inferior.h should be used.  These are as follows:
766 
767       ptid_build	- Make a new ptid from a pid, lwp, and tid.
768       pid_to_ptid	- Make a new ptid from just a pid.
769       ptid_get_pid	- Fetch the pid component of a ptid.
770       ptid_get_lwp	- Fetch the lwp component of a ptid.
771       ptid_get_tid	- Fetch the tid component of a ptid.
772       ptid_equal	- Test to see if two ptids are equal.
773 
774    Please do NOT access the struct ptid members directly (except, of
775    course, in the implementation of the above ptid manipulation
776    functions).  */
777 
778 struct ptid
779   {
780     /* Process id */
781     int pid;
782 
783     /* Lightweight process id */
784     long lwp;
785 
786     /* Thread id */
787     long tid;
788   };
789 
790 typedef struct ptid ptid_t;
791 
792 
793 
794 /* Optional host machine definition.  Pure autoconf targets will not
795    need a "xm.h" file.  This will be a symlink to one of the xm-*.h
796    files, built by the `configure' script.  */
797 
798 #ifdef GDB_XM_FILE
799 #include "xm.h"
800 #endif
801 
802 /* Optional native machine support.  Non-native (and possibly pure
803    multi-arch) targets do not need a "nm.h" file.  This will be a
804    symlink to one of the nm-*.h files, built by the `configure'
805    script.  */
806 
807 #ifdef GDB_NM_FILE
808 #include "nm.h"
809 #endif
810 
811 /* Optional target machine definition.  Pure multi-arch configurations
812    do not need a "tm.h" file.  This will be a symlink to one of the
813    tm-*.h files, built by the `configure' script.  */
814 
815 #ifdef GDB_TM_FILE
816 #include "tm.h"
817 #endif
818 
819 /* If the xm.h file did not define the mode string used to open the
820    files, assume that binary files are opened the same way as text
821    files */
822 #ifndef FOPEN_RB
823 #include "fopen-same.h"
824 #endif
825 
826 /* Defaults for system-wide constants (if not defined by xm.h, we fake it).
827    FIXME: Assumes 2's complement arithmetic */
828 
829 #if !defined (UINT_MAX)
830 #define	UINT_MAX ((unsigned int)(~0))	/* 0xFFFFFFFF for 32-bits */
831 #endif
832 
833 #if !defined (INT_MAX)
834 #define	INT_MAX ((int)(UINT_MAX >> 1))	/* 0x7FFFFFFF for 32-bits */
835 #endif
836 
837 #if !defined (INT_MIN)
838 #define INT_MIN ((int)((int) ~0 ^ INT_MAX))	/* 0x80000000 for 32-bits */
839 #endif
840 
841 #if !defined (ULONG_MAX)
842 #define	ULONG_MAX ((unsigned long)(~0L))	/* 0xFFFFFFFF for 32-bits */
843 #endif
844 
845 #if !defined (LONG_MAX)
846 #define	LONG_MAX ((long)(ULONG_MAX >> 1))	/* 0x7FFFFFFF for 32-bits */
847 #endif
848 
849 #if !defined (ULONGEST_MAX)
850 #define	ULONGEST_MAX (~(ULONGEST)0)        /* 0xFFFFFFFFFFFFFFFF for 64-bits */
851 #endif
852 
853 #if !defined (LONGEST_MAX)                 /* 0x7FFFFFFFFFFFFFFF for 64-bits */
854 #define	LONGEST_MAX ((LONGEST)(ULONGEST_MAX >> 1))
855 #endif
856 
857 /* Convert a LONGEST to an int.  This is used in contexts (e.g. number of
858    arguments to a function, number in a value history, register number, etc.)
859    where the value must not be larger than can fit in an int.  */
860 
861 extern int longest_to_int (LONGEST);
862 
863 /* Assorted functions we can declare, now that const and volatile are
864    defined.  */
865 
866 extern char *savestring (const char *, size_t);
867 
868 extern char *msavestring (void *, const char *, size_t);
869 
870 extern char *mstrsave (void *, const char *);
871 
872 /* Robust versions of same.  Throw an internal error when no memory,
873    guard against stray NULL arguments. */
874 extern void *xmmalloc (void *md, size_t size);
875 extern void *xmrealloc (void *md, void *ptr, size_t size);
876 extern void *xmcalloc (void *md, size_t number, size_t size);
877 extern void xmfree (void *md, void *ptr);
878 
879 /* xmalloc(), xrealloc() and xcalloc() have already been declared in
880    "libiberty.h". */
881 extern void xfree (void *);
882 
883 /* Utility macros to allocate typed memory.  Avoids errors like:
884    struct foo *foo = xmalloc (sizeof struct bar); and memset (foo,
885    sizeof (struct foo), 0).  */
886 #define XZALLOC(TYPE) ((TYPE*) memset (xmalloc (sizeof (TYPE)), 0, sizeof (TYPE)))
887 #define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
888 #define XCALLOC(NMEMB, TYPE) ((TYPE*) xcalloc ((NMEMB), sizeof (TYPE)))
889 
890 /* Like asprintf/vasprintf but get an internal_error if the call
891    fails. */
892 extern void xasprintf (char **ret, const char *format, ...) ATTR_FORMAT (printf, 2, 3);
893 extern void xvasprintf (char **ret, const char *format, va_list ap);
894 
895 /* Like asprintf and vasprintf, but return the string, throw an error
896    if no memory.  */
897 extern char *xstrprintf (const char *format, ...) ATTR_FORMAT (printf, 1, 2);
898 extern char *xstrvprintf (const char *format, va_list ap);
899 
900 extern int parse_escape (char **);
901 
902 /* Message to be printed before the error message, when an error occurs.  */
903 
904 extern char *error_pre_print;
905 
906 /* Message to be printed before the error message, when an error occurs.  */
907 
908 extern char *quit_pre_print;
909 
910 /* Message to be printed before the warning message, when a warning occurs.  */
911 
912 extern char *warning_pre_print;
913 
914 extern NORETURN void verror (const char *fmt, va_list ap) ATTR_NORETURN;
915 
916 extern NORETURN void error (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
917 
918 extern NORETURN void error_silent (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
919 
920 extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN;
921 
922 /* Initialize the error buffer.  */
923 extern void error_init (void);
924 
925 /* Returns a freshly allocate buffer containing the last error
926    message.  */
927 extern char *error_last_message (void);
928 
929 /* Output arbitrary error message.  */
930 extern void error_output_message (char *pre_print, char *msg);
931 
932 extern NORETURN void internal_verror (const char *file, int line,
933 				      const char *, va_list ap) ATTR_NORETURN;
934 
935 extern NORETURN void internal_error (const char *file, int line,
936 				     const char *, ...) ATTR_NORETURN ATTR_FORMAT (printf, 3, 4);
937 
938 extern void internal_vwarning (const char *file, int line,
939 			       const char *, va_list ap);
940 
941 extern void internal_warning (const char *file, int line,
942 			      const char *, ...) ATTR_FORMAT (printf, 3, 4);
943 
944 extern NORETURN void nomem (long) ATTR_NORETURN;
945 
946 /* Reasons for calling throw_exception().  NOTE: all reason values
947    must be less than zero.  enum value 0 is reserved for internal use
948    as the return value from an initial setjmp().  The function
949    catch_exceptions() reserves values >= 0 as legal results from its
950    wrapped function.  */
951 
952 enum return_reason
953   {
954     /* User interrupt.  */
955     RETURN_QUIT = -2,
956     /* Any other error.  */
957     RETURN_ERROR
958   };
959 
960 #define	ALL_CLEANUPS	((struct cleanup *)0)
961 
962 #define RETURN_MASK(reason)	(1 << (int)(-reason))
963 #define RETURN_MASK_QUIT	RETURN_MASK (RETURN_QUIT)
964 #define RETURN_MASK_ERROR	RETURN_MASK (RETURN_ERROR)
965 #define RETURN_MASK_ALL		(RETURN_MASK_QUIT | RETURN_MASK_ERROR)
966 typedef int return_mask;
967 
968 /* Throw an exception of type RETURN_REASON.  Will execute a LONG JUMP
969    to the inner most containing exception handler established using
970    catch_exceptions() (or the legacy catch_errors()).
971 
972    Code normally throws an exception using error() et.al.  For various
973    reaons, GDB also contains code that throws an exception directly.
974    For instance, the remote*.c targets contain CNTRL-C signal handlers
975    that propogate the QUIT event up the exception chain.  ``This could
976    be a good thing or a dangerous thing.'' -- the Existential Wombat.  */
977 
978 extern NORETURN void throw_exception (enum return_reason) ATTR_NORETURN;
979 
980 /* Call FUNC(UIOUT, FUNC_ARGS) but wrapped within an exception
981    handler.  If an exception (enum return_reason) is thrown using
982    throw_exception() than all cleanups installed since
983    catch_exceptions() was entered are invoked, the (-ve) exception
984    value is then returned by catch_exceptions.  If FUNC() returns
985    normally (with a postive or zero return value) then that value is
986    returned by catch_exceptions().  It is an internal_error() for
987    FUNC() to return a negative value.
988 
989    For the period of the FUNC() call: UIOUT is installed as the output
990    builder; ERRSTRING is installed as the error/quit message; and a
991    new cleanup_chain is established.  The old values are restored
992    before catch_exceptions() returns.
993 
994    The variant catch_exceptions_with_msg() is the same as
995    catch_exceptions() but adds the ability to return an allocated
996    copy of the gdb error message.  This is used when a silent error is
997    issued and the caller wants to manually issue the error message.
998 
999    FIXME; cagney/2001-08-13: The need to override the global UIOUT
1000    builder variable should just go away.
1001 
1002    This function superseeds catch_errors().
1003 
1004    This function uses SETJMP() and LONGJUMP().  */
1005 
1006 struct ui_out;
1007 typedef int (catch_exceptions_ftype) (struct ui_out *ui_out, void *args);
1008 extern int catch_exceptions (struct ui_out *uiout,
1009 			     catch_exceptions_ftype *func, void *func_args,
1010 			     char *errstring, return_mask mask);
1011 extern int catch_exceptions_with_msg (struct ui_out *uiout,
1012 			     	      catch_exceptions_ftype *func,
1013 			     	      void *func_args,
1014 			     	      char *errstring, char **gdberrmsg,
1015 				      return_mask mask);
1016 
1017 /* If CATCH_ERRORS_FTYPE throws an error, catch_errors() returns zero
1018    otherwize the result from CATCH_ERRORS_FTYPE is returned. It is
1019    probably useful for CATCH_ERRORS_FTYPE to always return a non-zero
1020    value. It's unfortunate that, catch_errors() does not return an
1021    indication of the exact exception that it caught - quit_flag might
1022    help.
1023 
1024    This function is superseeded by catch_exceptions().  */
1025 
1026 typedef int (catch_errors_ftype) (void *);
1027 extern int catch_errors (catch_errors_ftype *, void *, char *, return_mask);
1028 
1029 /* Template to catch_errors() that wraps calls to command
1030    functions. */
1031 
1032 typedef void (catch_command_errors_ftype) (char *, int);
1033 extern int catch_command_errors (catch_command_errors_ftype *func, char *command, int from_tty, return_mask);
1034 
1035 extern void warning (const char *, ...) ATTR_FORMAT (printf, 1, 2);
1036 
1037 extern void vwarning (const char *, va_list args);
1038 
1039 /* List of known OS ABIs.  If you change this, make sure to update the
1040    table in osabi.c.  */
1041 enum gdb_osabi
1042 {
1043   GDB_OSABI_UNINITIALIZED = -1, /* For struct gdbarch_info.  */
1044 
1045   GDB_OSABI_UNKNOWN = 0,	/* keep this zero */
1046 
1047   GDB_OSABI_SVR4,
1048   GDB_OSABI_HURD,
1049   GDB_OSABI_SOLARIS,
1050   GDB_OSABI_OSF1,
1051   GDB_OSABI_LINUX,
1052   GDB_OSABI_FREEBSD_AOUT,
1053   GDB_OSABI_FREEBSD_ELF,
1054   GDB_OSABI_NETBSD_AOUT,
1055   GDB_OSABI_NETBSD_ELF,
1056   GDB_OSABI_OPENBSD_ELF,
1057   GDB_OSABI_WINCE,
1058   GDB_OSABI_GO32,
1059   GDB_OSABI_NETWARE,
1060   GDB_OSABI_IRIX,
1061   GDB_OSABI_LYNXOS,
1062   GDB_OSABI_INTERIX,
1063   GDB_OSABI_HPUX_ELF,
1064   GDB_OSABI_HPUX_SOM,
1065 
1066   GDB_OSABI_ARM_EABI_V1,
1067   GDB_OSABI_ARM_EABI_V2,
1068   GDB_OSABI_ARM_APCS,
1069   GDB_OSABI_QNXNTO,
1070 
1071   GDB_OSABI_CYGWIN,
1072 
1073   GDB_OSABI_INVALID		/* keep this last */
1074 };
1075 
1076 /* Global functions from other, non-gdb GNU thingies.
1077    Libiberty thingies are no longer declared here.  We include libiberty.h
1078    above, instead.  */
1079 
1080 #ifndef GETENV_PROVIDED
1081 extern char *getenv (const char *);
1082 #endif
1083 
1084 /* From other system libraries */
1085 
1086 #ifdef HAVE_STDDEF_H
1087 #include <stddef.h>
1088 #endif
1089 
1090 #ifdef HAVE_STDLIB_H
1091 #include <stdlib.h>
1092 #endif
1093 #ifndef min
1094 #define min(a, b) ((a) < (b) ? (a) : (b))
1095 #endif
1096 #ifndef max
1097 #define max(a, b) ((a) > (b) ? (a) : (b))
1098 #endif
1099 
1100 
1101 /* We take the address of fclose later, but some stdio's forget
1102    to declare this.  We can't always declare it since there's
1103    no way to declare the parameters without upsetting some compiler
1104    somewhere. */
1105 
1106 #ifndef FCLOSE_PROVIDED
1107 extern int fclose (FILE *);
1108 #endif
1109 
1110 #ifndef atof
1111 extern double atof (const char *);	/* X3.159-1989  4.10.1.1 */
1112 #endif
1113 
1114 /* Various possibilities for alloca.  */
1115 #ifndef alloca
1116 #ifdef __GNUC__
1117 #define alloca __builtin_alloca
1118 #else /* Not GNU C */
1119 #ifdef HAVE_ALLOCA_H
1120 #include <alloca.h>
1121 #else
1122 #ifdef _AIX
1123 #pragma alloca
1124 #else
1125 
1126 /* We need to be careful not to declare this in a way which conflicts with
1127    bison.  Bison never declares it as char *, but under various circumstances
1128    (like __hpux) we need to use void *.  */
1129 extern void *alloca ();
1130 #endif /* Not _AIX */
1131 #endif /* Not HAVE_ALLOCA_H */
1132 #endif /* Not GNU C */
1133 #endif /* alloca not defined */
1134 
1135 /* Is GDB multi-arch?  If there's a "tm.h" file, it is not.  */
1136 #ifndef GDB_MULTI_ARCH
1137 #ifdef GDB_TM_FILE
1138 #define GDB_MULTI_ARCH GDB_MULTI_ARCH_PARTIAL
1139 #else
1140 #define GDB_MULTI_ARCH GDB_MULTI_ARCH_PURE
1141 #endif
1142 #endif
1143 
1144 /* Dynamic target-system-dependent parameters for GDB. */
1145 #include "gdbarch.h"
1146 
1147 /* Maximum size of a register.  Something small, but large enough for
1148    all known ISAs.  If it turns out to be too small, make it bigger.  */
1149 
1150 enum { MAX_REGISTER_SIZE = 16 };
1151 
1152 /* Static target-system-dependent parameters for GDB. */
1153 
1154 /* Number of bits in a char or unsigned char for the target machine.
1155    Just like CHAR_BIT in <limits.h> but describes the target machine.  */
1156 #if !defined (TARGET_CHAR_BIT)
1157 #define TARGET_CHAR_BIT 8
1158 #endif
1159 
1160 /* If we picked up a copy of CHAR_BIT from a configuration file
1161    (which may get it by including <limits.h>) then use it to set
1162    the number of bits in a host char.  If not, use the same size
1163    as the target. */
1164 
1165 #if defined (CHAR_BIT)
1166 #define HOST_CHAR_BIT CHAR_BIT
1167 #else
1168 #define HOST_CHAR_BIT TARGET_CHAR_BIT
1169 #endif
1170 
1171 /* The bit byte-order has to do just with numbering of bits in
1172    debugging symbols and such.  Conceptually, it's quite separate
1173    from byte/word byte order.  */
1174 
1175 #if !defined (BITS_BIG_ENDIAN)
1176 #define BITS_BIG_ENDIAN (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
1177 #endif
1178 
1179 /* In findvar.c.  */
1180 
1181 extern LONGEST extract_signed_integer (const void *, int);
1182 
1183 extern ULONGEST extract_unsigned_integer (const void *, int);
1184 
1185 extern int extract_long_unsigned_integer (const void *, int, LONGEST *);
1186 
1187 extern CORE_ADDR extract_typed_address (const void *buf, struct type *type);
1188 
1189 extern void store_signed_integer (void *, int, LONGEST);
1190 
1191 extern void store_unsigned_integer (void *, int, ULONGEST);
1192 
1193 extern void store_typed_address (void *buf, struct type *type, CORE_ADDR addr);
1194 
1195 
1196 /* From valops.c */
1197 
1198 extern CORE_ADDR push_bytes (CORE_ADDR, char *, int);
1199 
1200 extern CORE_ADDR push_word (CORE_ADDR, ULONGEST);
1201 
1202 extern int watchdog;
1203 
1204 /* Hooks for alternate command interfaces.  */
1205 
1206 /* The name of the interpreter if specified on the command line. */
1207 extern char *interpreter_p;
1208 
1209 /* If a given interpreter matches INTERPRETER_P then it should update
1210    deprecated_command_loop_hook and deprecated_init_ui_hook with the
1211    per-interpreter implementation.  */
1212 /* FIXME: deprecated_command_loop_hook and deprecated_init_ui_hook
1213    should be moved here. */
1214 
1215 struct target_waitstatus;
1216 struct cmd_list_element;
1217 
1218 /* Should the asynchronous variant of the interpreter (using the
1219    event-loop) be enabled?  */
1220 /* NOTE: cagney/2004-06-10: GDB changed to always uses the event-loop.
1221    A follow-on cleanup is to eliminate references to
1222    "event_loop_p".  */
1223 #define event_loop_p 1
1224 
1225 extern void (*deprecated_pre_add_symbol_hook) (const char *);
1226 extern void (*deprecated_post_add_symbol_hook) (void);
1227 extern void (*selected_frame_level_changed_hook) (int);
1228 extern int (*deprecated_ui_loop_hook) (int signo);
1229 extern void (*deprecated_init_ui_hook) (char *argv0);
1230 extern void (*deprecated_command_loop_hook) (void);
1231 extern void (*deprecated_show_load_progress) (const char *section,
1232 					      unsigned long section_sent,
1233 					      unsigned long section_size,
1234 					      unsigned long total_sent,
1235 					      unsigned long total_size);
1236 extern void (*deprecated_print_frame_info_listing_hook) (struct symtab * s,
1237 							 int line, int stopline,
1238 							 int noerror);
1239 extern struct frame_info *parse_frame_specification (char *frame_exp);
1240 extern int (*deprecated_query_hook) (const char *, va_list);
1241 extern void (*deprecated_warning_hook) (const char *, va_list);
1242 extern void (*deprecated_flush_hook) (struct ui_file * stream);
1243 extern void (*deprecated_create_breakpoint_hook) (struct breakpoint * b);
1244 extern void (*deprecated_delete_breakpoint_hook) (struct breakpoint * bpt);
1245 extern void (*deprecated_modify_breakpoint_hook) (struct breakpoint * bpt);
1246 extern void (*deprecated_interactive_hook) (void);
1247 extern void (*deprecated_registers_changed_hook) (void);
1248 extern void (*deprecated_readline_begin_hook) (char *,...);
1249 extern char *(*deprecated_readline_hook) (char *);
1250 extern void (*deprecated_readline_end_hook) (void);
1251 extern void (*deprecated_register_changed_hook) (int regno);
1252 extern void (*deprecated_memory_changed_hook) (CORE_ADDR addr, int len);
1253 extern void (*deprecated_context_hook) (int);
1254 extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
1255                                          struct target_waitstatus * status);
1256 
1257 extern void (*deprecated_attach_hook) (void);
1258 extern void (*deprecated_detach_hook) (void);
1259 extern void (*deprecated_call_command_hook) (struct cmd_list_element * c,
1260 					     char *cmd, int from_tty);
1261 
1262 extern void (*deprecated_set_hook) (struct cmd_list_element * c);
1263 
1264 extern NORETURN void (*deprecated_error_hook) (void) ATTR_NORETURN;
1265 
1266 extern void (*deprecated_error_begin_hook) (void);
1267 
1268 extern int (*deprecated_ui_load_progress_hook) (const char *section,
1269 						unsigned long num);
1270 
1271 
1272 /* Inhibit window interface if non-zero. */
1273 
1274 extern int use_windows;
1275 
1276 /* Symbolic definitions of filename-related things.  */
1277 /* FIXME, this doesn't work very well if host and executable
1278    filesystems conventions are different.  */
1279 
1280 #ifndef DIRNAME_SEPARATOR
1281 #define DIRNAME_SEPARATOR ':'
1282 #endif
1283 
1284 #ifndef SLASH_STRING
1285 #define SLASH_STRING "/"
1286 #endif
1287 
1288 #ifdef __MSDOS__
1289 # define CANT_FORK
1290 # define GLOBAL_CURDIR
1291 #endif
1292 
1293 /* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
1294    The name ``TIDGET'' is a historical accident.  Many uses of TIDGET
1295    in the code actually refer to a lightweight process id, i.e,
1296    something that can be considered a process id in its own right for
1297    certain purposes.  */
1298 
1299 #ifndef PIDGET
1300 #define PIDGET(PTID) (ptid_get_pid (PTID))
1301 #define TIDGET(PTID) (ptid_get_lwp (PTID))
1302 #define MERGEPID(PID, TID) ptid_build (PID, TID, 0)
1303 #endif
1304 
1305 /* Define well known filenos if the system does not define them.  */
1306 #ifndef STDIN_FILENO
1307 #define STDIN_FILENO   0
1308 #endif
1309 #ifndef STDOUT_FILENO
1310 #define STDOUT_FILENO  1
1311 #endif
1312 #ifndef STDERR_FILENO
1313 #define STDERR_FILENO  2
1314 #endif
1315 
1316 /* If this definition isn't overridden by the header files, assume
1317    that isatty and fileno exist on this system.  */
1318 #ifndef ISATTY
1319 #define ISATTY(FP)	(isatty (fileno (FP)))
1320 #endif
1321 
1322 /* Ensure that V is aligned to an N byte boundary (B's assumed to be a
1323    power of 2).  Round up/down when necessary.  Examples of correct
1324    use include:
1325 
1326    addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
1327    write_memory (addr, value, len);
1328    addr += len;
1329 
1330    and:
1331 
1332    sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
1333    write_memory (sp, value, len);
1334 
1335    Note that uses such as:
1336 
1337    write_memory (addr, value, len);
1338    addr += align_up (len, 8);
1339 
1340    and:
1341 
1342    sp -= align_up (len, 8);
1343    write_memory (sp, value, len);
1344 
1345    are typically not correct as they don't ensure that the address (SP
1346    or ADDR) is correctly aligned (relying on previous alignment to
1347    keep things right).  This is also why the methods are called
1348    "align_..." instead of "round_..." as the latter reads better with
1349    this incorrect coding style.  */
1350 
1351 extern ULONGEST align_up (ULONGEST v, int n);
1352 extern ULONGEST align_down (ULONGEST v, int n);
1353 
1354 #endif /* #ifndef DEFS_H */
1355