/*
Copyright (c) 1993 Xerox Corporation.  All rights reserved.
*/
/*
$Id$

$Date$
 *
 * PCR Remote Debugger public types.
 */


#ifndef ←←PCR←RDbgTypes←h
#   define ←←PCR←RDbgTypes←h 1

#include <config/PCR←StdDefs.h>
#include <th/PCR←ThCtl.h>
#include <il/PCR←IL.h>
#include <il/PCR←ILSym.h>

#include <sys/types.h> ???


typedef char * PCR←RDbg←CopiedString;
    /*
     * Pointer to string copied from debuggee to debugger.
     * Sent/received as a block8 including trailing null.
     */

#define PCR←RDbg←RAddr(type)		void *
    /*
     * Address of a "type" object on debuggee.
     */


/*
 * Thread descriptors
 */

typedef struct PCR←DbgNub←ThRAddrsRep {
    unsigned dnti←cnt;
    PCR←DbgNub←RAddr(PCR←Th←T) dnti←dntd[ /* cnt */ 1 ];
} PCR←DbgNub←ThIDs;


typedef struct PCR←DbgNub←ThDataRep {
    PCR←DbgNub←RAddr(PCR←Th←T) void * dntd←thRAddr;
    PCR←ThCtl←ThInfo dntd←thInfo;
    void * dntd←dbMsg;
    void * dntd←dbData;
} PCR←DbgNub←ThData;

/*
 * Program Counter Data
 */

typedef struct PCR←DbgNub←PCDataRep {
    PCR←DbgNub←CopiedString dnpcd←procName;
    PCR←RDbg←RAddr(struct PCR←ILSym←EntryRep) dnpcd←procSymRAddr;
    char * dnpcd←fileName;
    PCR←RDbg←RAddr(struct PCR←IL←LoadedFileRep) dnpcd←fileInfoRAddr;
} PCR←DbgNub←PCData;


/*
 * File and Segment description
 */

typedef struct PCR←DbgNub←SegDataRep {
    PCR←DbgNub←RAddr(struct PCR←IL←LoadedSegmentRep) dnsd←lsa;
    struct PCR←IL←LoadedSegmentRep dnsd←ls;
} PCR←DbgNub←SegData;

typedef struct PCR←DbgNub←FileDataRep {
    PCR←DbgNub←RAddr(struct PCR←IL←LoadedFileRep) dnfd←lfa;
    struct PCR←IL←LoadedFileRep dnfd←lf;
    PCR←DbgNub←CopiedString dnfd←name;
    unsigned dnfd←nSegs;
    PCR←DbgNub←SegData dnfd←segs[ /* nsegs */ 1 ];
} PCR←DbgNub←FileData;


/*
 * Symbol table entry
 */

typedef struct PCR←DbgNub←SymDataRep {
    PCR←DbgNub←RAddr(PCR←ILSym←Entry) dnsd←sea;
    struct PCR←ILSym←EntryRep dnsd←se;
    PCR←DbgNub←CopiedString dnsd←name;
} PCR←DbgNub←SymData;


/*
 * Instruction Set + Operating System names
 */

typedef struct PCR←DbgNub←DebuggeeDescriptionRep {
    PCR←DbgNub←CopiedChars * dndd←instrSet;
    PCR←DbgNub←CopiedChars * dndd←opSys;
} PCR←DbnNub←DebuggeeDescription;


#endif /* ←←PCR←DbgNubTypes←h */