xref: /openbsd/regress/sys/arch/amd64/ddb/stubs.c (revision 58dcf58e)
1*58dcf58eSanton /* $OpenBSD: stubs.c,v 1.1 2024/11/19 05:50:41 anton Exp $ */
2*58dcf58eSanton 
3*58dcf58eSanton #include <err.h>
4*58dcf58eSanton #include <stdarg.h>
5*58dcf58eSanton #include <stdio.h>
6*58dcf58eSanton 
7*58dcf58eSanton #include <machine/db_machdep.h>
8*58dcf58eSanton #include <machine/cpu_full.h>
9*58dcf58eSanton #include <ddb/db_access.h>
10*58dcf58eSanton #include <ddb/db_interface.h>
11*58dcf58eSanton #include <ddb/db_command.h>
12*58dcf58eSanton #include <ddb/db_output.h>
13*58dcf58eSanton #include <ddb/db_sym.h>
14*58dcf58eSanton 
15*58dcf58eSanton #include "disasm.h"
16*58dcf58eSanton 
17*58dcf58eSanton void			 (*cnputc)(int) = NULL;
18*58dcf58eSanton int			 (*cngetc)(void) = NULL;
19*58dcf58eSanton char			*esym = NULL;
20*58dcf58eSanton char			*ssym = NULL;
21*58dcf58eSanton struct cpu_info_full	 cpu_info_full_primary = {0};
22*58dcf58eSanton 
23*58dcf58eSanton int
db_elf_sym_init(int symsize,void * symtab,void * esymtab,const char * name)24*58dcf58eSanton db_elf_sym_init(int symsize, void *symtab, void *esymtab, const char *name)
25*58dcf58eSanton {
26*58dcf58eSanton 	return 0;
27*58dcf58eSanton }
28*58dcf58eSanton 
29*58dcf58eSanton Elf_Sym *
db_elf_sym_search(vaddr_t off,db_strategy_t strategy,db_expr_t * diffp)30*58dcf58eSanton db_elf_sym_search(vaddr_t off, db_strategy_t strategy, db_expr_t *diffp)
31*58dcf58eSanton {
32*58dcf58eSanton 	return NULL;
33*58dcf58eSanton }
34*58dcf58eSanton 
35*58dcf58eSanton int
db_elf_line_at_pc(Elf_Sym * cursym,const char ** filename,int * linenum,db_expr_t off)36*58dcf58eSanton db_elf_line_at_pc(Elf_Sym *cursym, const char **filename, int *linenum,
37*58dcf58eSanton     db_expr_t off)
38*58dcf58eSanton {
39*58dcf58eSanton 	return 0;
40*58dcf58eSanton }
41*58dcf58eSanton 
42*58dcf58eSanton void
db_error(char * s)43*58dcf58eSanton db_error(char *s)
44*58dcf58eSanton {
45*58dcf58eSanton }
46*58dcf58eSanton 
47*58dcf58eSanton void
db_stack_trace_print(db_expr_t addr,int have_addr,db_expr_t count,char * modif,int (* pr)(const char *,...))48*58dcf58eSanton db_stack_trace_print(db_expr_t addr, int have_addr, db_expr_t count,
49*58dcf58eSanton     char *modif, int (*pr)(const char *, ...))
50*58dcf58eSanton {
51*58dcf58eSanton }
52*58dcf58eSanton 
53*58dcf58eSanton void
db_symbol_values(Elf_Sym * sym,const char ** namep,db_expr_t * valuep)54*58dcf58eSanton db_symbol_values(Elf_Sym *sym, const char **namep, db_expr_t *valuep)
55*58dcf58eSanton {
56*58dcf58eSanton }
57*58dcf58eSanton 
58*58dcf58eSanton db_expr_t
db_get_value(vaddr_t addr,size_t size,int is_signed)59*58dcf58eSanton db_get_value(vaddr_t addr, size_t size, int is_signed)
60*58dcf58eSanton {
61*58dcf58eSanton 	db_expr_t c;
62*58dcf58eSanton 
63*58dcf58eSanton 	if (ctx->raw.len == 0)
64*58dcf58eSanton 		return 0;
65*58dcf58eSanton 
66*58dcf58eSanton 	c = ctx->raw.buf[0];
67*58dcf58eSanton 	ctx->raw.buf++;
68*58dcf58eSanton 	ctx->raw.len--;
69*58dcf58eSanton 	return c;
70*58dcf58eSanton }
71*58dcf58eSanton 
72*58dcf58eSanton int
db_printf(const char * fmt,...)73*58dcf58eSanton db_printf(const char *fmt, ...)
74*58dcf58eSanton {
75*58dcf58eSanton 	int n = 0;
76*58dcf58eSanton 
77*58dcf58eSanton 	if (strcmp(fmt, "\n") == 0) {
78*58dcf58eSanton 		/* nothing */
79*58dcf58eSanton 	} else if (strcmp(fmt, "\t") == 0) {
80*58dcf58eSanton 		n = snprintf(&ctx->act.buf[ctx->act.len], ctx->act.siz, " ");
81*58dcf58eSanton 	} else {
82*58dcf58eSanton 		va_list ap;
83*58dcf58eSanton 
84*58dcf58eSanton 		va_start(ap, fmt);
85*58dcf58eSanton 		n = vsnprintf(&ctx->act.buf[ctx->act.len], ctx->act.siz, fmt,
86*58dcf58eSanton 		    ap);
87*58dcf58eSanton 		va_end(ap);
88*58dcf58eSanton 	}
89*58dcf58eSanton 	if (n < 0 || (size_t)n >= ctx->act.siz)
90*58dcf58eSanton 		errx(1, "buffer too small");
91*58dcf58eSanton 	ctx->act.len += n;
92*58dcf58eSanton 	ctx->act.siz -= n;
93*58dcf58eSanton 	return 0;
94*58dcf58eSanton }
95