This is xm.h in view mode; [Download] [Up]

/* Parameters for execution under NextStep, for GDB, the GNU debugger.
   Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.

This file is part of GDB.

GDB is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.

GDB is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GDB; see the file COPYING.  If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */

#ifndef INCLUDE_XM_H
#define INCLUDE_XM_H

#import <mach/mach.h>
#import <xm-dep.h>
#ifndef FOPEN_RT
#include "fopen-same.h"

extern int find_objc_msgcall PARAMS ((CORE_ADDR stop_pc, 
				      CORE_ADDR *new_pc));
extern struct symtab *symtab_for_misc_function PARAMS ((int ind));
extern int kernel_attached;
extern task_t inferior_task, gdb_task;
extern CORE_ADDR changedAddress;
extern int isTask PARAMS ((task_t task));
extern void NeXT_mourn_inferior();
extern void validateRegister PARAMS ((int regno));
extern char *stringSave PARAMS ((const char *string));
extern char *stringSaveN PARAMS ((const char *string, int n));
extern int any_cplusplus;
extern int force_cplusplus;
extern CORE_ADDR dontSuspendThreadAddress;
extern void dontSuspendThread(); 
extern boolean_t stopped_in_ptrace;
@class RegionManager;
extern RegionManager *regionManager;
extern struct breakpoint *is_data_break PARAMS ((CORE_ADDR address));
extern void set_view_host PARAMS ((const char *arg));
extern void connect_to PARAMS ((const char *connectionName));
extern void set_noprompt();
/* Do implement the attach and detach commands.  */


/* Override copies of {fetch,store}_inferior_registers in infptrace.c.  */


/* We have to grab the regs since we store all regs at once.  */

	read_register_bytes (0, (char *) NULL, REGISTER_BYTES)
struct mach_oh_nlist {
	union {
		char *n_name;	/* for use when in-core */
		long  n_strx;	/* index into the string table */
	} n_un;
	unsigned char n_type;	/* type flag, see below */
	unsigned char n_sect;	/* section number or NO_SECT */
	short	      n_desc;	/* see <stab.h> */
	unsigned long n_value;	/* value of this symbol (or stab offset) */

#define	MACH_OH_N_SECT	0xe		/* defined in section number n_sect */
#define	MACH_OH_N_TYPE	0x1e            /* mask for the type bits */
#define N_TEXT 4
#define N_DATA 6
#define N_BSS 8

#define COMPLETION_LIST_HOOK(text)	objc_completion_list_hook(text)

#define DECODE_LINE_1_HOOK(args, value)	lookup_method(args, value)

#define CONDENSE_MISC_BUNCHES_HOOK()	combine_misc_functions_psymtabs()

#define SYMBOLS_CHANGED_HOOK(obj)	symbols_changed_hook((obj))

/* We relocated the blocks */

#define CREATE_INFERIOR_HOOK create_inferior_hook
#define STOP_HOOK stop_hook
#define WAIT_FOR_INFERIOR_HOOK wait_for_inferior_hook

static inline char *
STRCHR (const char *s, int c)
    while (*s) {
	if (*s == c)
	    return (char *)s;
    return NULL;

#include <string.h> /* before we define strchr to STRCHR */
#define strchr(s, c) STRCHR(s, c)

 * Find the first colon after the name of a function.  This name could be an
   Objective C method name, which could have colons in it itself.
static inline char *
colon_from_name (name)
char *name;
  if (*name == '-' || *name == '+')
    return (char *) strchr (strchr (name, ']'), ':');
    return (char *) strchr (name, ':');

#define COLON_FROM_NAME(name) colon_from_name(name)


        {"opath",       1, 0, 'o'}, \
	{"viewhost",    1, 0, 16},  \
	{"viewprogram", 1, 0, 17},  \
	{"connect",     1, 0, 18},  \
	{"noprompt",    0, 0, 19},

          case 'o': \
		opath_alias_command (optarg); \
		break; \
	  case 16: \
	        set_view_host (optarg); \
		break; \
	  case 17: \
	  	set_view_program (optarg); \
		break; \
	  case 18: \
	        connect_to (optarg); \
		break; \
	  case 19: \
	        set_noprompt(); \

/* if this doesn't work, try (1)! */
/* (by the way, this belongs in tm*.h!) */

int static inline mach_call_no_error(kern_return_t ret, char *mstring, char *estring)
    if (ret != KERN_SUCCESS) {
	mach_error(mstring, ret);
	fprintf(stderr, "%s\n", estring);
    return ret;

void static inline mach_call_no_inferior(kern_return_t ret, char *mstring, char *estring)
    if (ret != KERN_SUCCESS) {
	mach_error(mstring, ret);
	fprintf(stderr, "%s\n", estring);

void static inline mach_call(kern_return_t ret, char *mstring, char *estring)
{   volatile void error();
    if (ret != KERN_SUCCESS) {
	if (isTask(inferior_task)) {
	    mach_error(mstring, ret);
 	} else {
	    mach_error(mstring, ret);
	    fprintf(stderr, "%s\n", estring);
	    error("The program you were running has been terminated.");

#define SAVE_INFERIOR_STATUS_HOOK save_inferior_status_hook
#define RESTORE_INFERIOR_STATUS_HOOK restore_inferior_status_hook

//#define DONT_FILTER
#define DONT_USE_BFD

#define SET_EXECUTE mach_set_execute
extern int mach_set_execute (CORE_ADDR start, unsigned size);

#define UNSET_EXECUTE mach_unset_execute
extern void mach_unset_execute (CORE_ADDR start, unsigned size, vm_prot_t matt);

#endif	/* INCLUDE_XM_H */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.