DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T g

⟦328a70719⟧ TextFile

    Length: 4971 (0x136b)
    Types: TextFile
    Names: »gdb-parse.c«

Derivation

└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89
    └─⟦34cc4e2f7⟧ »./UNRELEASED/xgdb3.2.tar.Z« 
        └─⟦80fac5d7c⟧ 
            └─⟦this⟧ »./gdb-parse.c« 

TextFile

\f


#ifndef lint
static char rcsid[] = "$Header: gdb-parse.c,v 1.1 89/07/05 15:35:59 hubbard Exp $";
#endif

/*
 *
 *                     Copyright 1988, 1989
 *                  PCS Computer Systeme, GmbH
 *                     Munich, West Germany
 *
 *  All rights reserved.
 * 
 *  This is unsupported software and is subject to change without notice.
 *  PCS makes no representations about the suitability of this software
 *  for any purpose. It is supplied "as is" without express or implied
 *  warranty.
 * 
 *  Permission to use, copy, modify, and distribute this software and its
 *  documentation for any purpose and without fee is hereby granted, provided
 *  that the above copyright notice appear in all copies and that both that
 *  copyright notice and this permission notice appear in supporting
 *  documentation, and that the name of PCS Computer Systeme not be used in
 *  advertising or publicity pertaining to distribution of the software
 *  without specific, written prior permission.
 *
 */

/*
 * Author:	Jordan K. Hubbard
 * For:		PCS Computer Systems, GmbH.
 * When:	February 10th, 1989.
 *
 * $Log:	gdb-parse.c,v $
 * Revision 1.1  89/07/05  15:35:59  hubbard
 * Initial revision
 * 
 * 
 */

#include "xgdb.h"
#include <errno.h>

/*
 * Debugger-dependent stuff for the GNU debugger (gdb).
 * This file contains parsers specific to gdb's output. None of these
 * routines send data to the debugger (all such routines are in gdb.c).
 */


/*
 * Print output from the debugger. This expects to be the last
 * parser on the parser list and eats *all* input given (a sink).
 */
String debuggerPrintOutput(P_ARGS)
P_ARG_DECL;
{
     Entry("debuggerPrintOutput");

     P_CHECKARGS;

     viewAppendText(p->view, s, *len);
     *len = 0;
     dbg_state.S_outputSent = TRUE;
     Leave(NULL);
}

/*
 * This routine is responsible for catching all the error messages
 * produced by the debugger, some of which may result in negotiations
 * with it ("Yes, I *really* want to do that..").
 */

String debuggerParseErrors(P_ARGS)
P_ARG_DECL;
{
     void debuggerYesOrNo();
     static SimpleParser errors[] = {
	  { "QST1", T_PROC, { (caddr_t)debuggerYesOrNo } },
	  { "ERR1", T_PROC, { (caddr_t)popupErrorMessage } },
	  { "ERR2", T_PROC, { (caddr_t)popupErrorMessage } },
	  { "ERR3", T_PROC, { (caddr_t)popupErrorMessage } },
	  { NULL, 0, { NULL } },
     };

     Entry("debuggerParseErrors");

     P_CHECKARGS;

     s = parseSimpleList(errors, P_ARGS);
     Leave(s);
}

/*
 * Parse what the debugger has printed and extract any interesting
 * information.
 *
 * For now, the stuff parsed falls into two catagories: Simple one line
 * informational messages (about what directory you've changed to,
 * what the current core file is, etc) and multi-line bursts of information
 * that need to be parsed more carefully. The one-liner's are handled with
 * a SimpleParser list and the multi-liners are handed off to
 * specialized routines or grubbed through here.
 */
String debuggerParseInfo(P_ARGS)
P_ARG_DECL;
{
     void breakAddBreakpoint(), breakDeleteBreakpoint(),
          debuggerQueryFunction();
     static SimpleParser info[] = {
	  { "GDBP", T_BOOL,  { SO(S_promptSeen) } },
	  { "FULL", T_ARGS,  { SO(S_file), SO(S_line), 0,0, SO(S_address) } },
	  { "BPK1", T_ARGS,  { SO(S_breakpoint), SO(S_function) } },
	  { "Fra6", T_PROCS, { (caddr_t)stackHandleFrame } },
	  { "Fra0", T_PROCS, { (caddr_t)stackHandleFrame } },
	  { "Fra1", T_PROCS, { (caddr_t)stackHandleFrame } },
	  { "Fra2", T_PROCS, { (caddr_t)stackHandleFrame } },
	  { "Fra5", T_PROCS, { (caddr_t)stackHandleFrame } },
	  { "Fra4", T_PROCS, { (caddr_t)stackHandleFrame } },
	  { "Fra3", T_PROCS, { (caddr_t)stackHandleFrame } },
	  { "BPI1", T_PROCS, { (caddr_t)breakAddBreakpoint } },
	  { "BPI2", T_PROCS, { (caddr_t)breakAddBreakpoint } },
	  { "NOLI", T_PROCS, { (caddr_t)sourceNoLineInfo } },
	  { "BPI4", T_PROCS, { (caddr_t)breakDeleteBreakpoints } },
	  { "BPI3", T_PROC,  { (caddr_t)breakDeleteBreakpoint } },
	  { "BPI5", T_PROC,  { (caddr_t)breakDeleteBreakpoint } },
	  { "BPI6", T_PROC,  { (caddr_t)breakEnableBreakpoint } },
	  { "BPI7", T_PROC,  { (caddr_t)breakDisableBreakpoint } },
	  { "StD1", T_ARG,   { SO(S_dir) } },
	  { "StD2", T_ARG,   { SO(S_dir) } },
	  { "StPa", T_ARG,   { SO(S_file_path) } },
	  { "StS1", T_ARG,   { SO(S_symbol_file) } },
	  { "StS2", T_ARG,   { SO(S_symbol_file) } },
	  { "StE1", T_ARG,   { SO(S_exec_file) } },
	  { "StE2", T_ARG,   { SO(S_exec_file) } },
	  { "StE3", T_ARG,   { SO(S_exec_file) } },
	  { "StC1", T_ARG,   { SO(S_core_file) } },
	  { "StT1", T_ARG,   { SO(S_text_segment) } },
	  { "Std1", T_ARG,   { SO(S_data_segment) } },
	  { "Std2", T_ARG,   { SO(S_data_segment) } },
	  { "Sts1", T_ARG,   { SO(S_stack_segment) } },
	  { "BPI8", T_NOP,   { NULL } },
	  { NULL,	0,   { NULL } },
     };
     Entry("parseDebuggerInfo");

     P_CHECKARGS;

     s = parseSimpleList(info, P_ARGS);
     Leave(s);
}