iPXE
gdbstub.h
Go to the documentation of this file.
1#ifndef _IPXE_GDBSTUB_H
2#define _IPXE_GDBSTUB_H
3
4/** @file
5 *
6 * GDB remote debugging
7 *
8 */
9
10FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11FILE_SECBOOT ( FORBIDDEN );
12
13#include <stdint.h>
14#include <ipxe/tables.h>
15#include <bits/gdbmach.h>
16
17/**
18 * A transport mechanism for the GDB protocol
19 *
20 */
22 /** Transport name */
23 const char *name;
24 /**
25 * Set up the transport given a list of arguments
26 *
27 * @v argc Number of arguments
28 * @v argv Argument list
29 * @ret Return status code
30 *
31 * Note that arguments start at argv[0].
32 */
33 int ( * init ) ( int argc, char **argv );
34 /**
35 * Perform a blocking read
36 *
37 * @v buf Buffer
38 * @v len Size of buffer
39 * @ret Number of bytes read into buffer
40 */
41 size_t ( * recv ) ( char *buf, size_t len );
42 /**
43 * Write, may block
44 *
45 * @v buf Buffer
46 * @v len Size of buffer
47 */
48 void ( * send ) ( const char *buf, size_t len );
49};
50
51#define GDB_TRANSPORTS __table ( struct gdb_transport, "gdb_transports" )
52
53#define __gdb_transport __table_entry ( GDB_TRANSPORTS, 01 )
54
55/**
56 * Look up GDB transport by name
57 *
58 * @v name Name of transport
59 * @ret GDB transport or NULL
60 */
61extern struct gdb_transport *find_gdb_transport ( const char *name );
62
63/**
64 * Break into the debugger using the given transport
65 *
66 * @v trans GDB transport
67 */
68extern void gdbstub_start ( struct gdb_transport *trans );
69
70/**
71 * Interrupt handler
72 *
73 * @signo POSIX signal number
74 * @regs CPU register snapshot
75 **/
76extern void gdbstub_handler ( int signo, gdbreg_t *regs );
77
78#endif /* _IPXE_GDBSTUB_H */
GDB architecture specifics.
unsigned long gdbreg_t
Definition gdbmach.h:17
__SIZE_TYPE__ size_t
Definition stdint.h:6
const char * name
Definition ath9k_hw.c:1986
ring len
Length.
Definition dwmac.h:226
struct gdb_transport * find_gdb_transport(const char *name)
Look up GDB transport by name.
Definition gdbstub.c:392
void gdbstub_handler(int signo, gdbreg_t *regs)
Interrupt handler.
Definition gdbstub.c:372
void gdbstub_start(struct gdb_transport *trans)
Break into the debugger using the given transport.
Definition gdbstub.c:403
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:896
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
Definition compiler.h:926
struct i386_regs regs
Definition registers.h:1
A transport mechanism for the GDB protocol.
Definition gdbstub.h:21
void(* send)(const char *buf, size_t len)
Write, may block.
Definition gdbstub.h:48
const char * name
Transport name.
Definition gdbstub.h:23
size_t(* recv)(char *buf, size_t len)
Perform a blocking read.
Definition gdbstub.h:41
int(* init)(int argc, char **argv)
Set up the transport given a list of arguments.
Definition gdbstub.h:33
Linker tables.