summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/usr.bin')
-rw-r--r--gnu/usr.bin/gdb/kgdb/kgdb.14
-rw-r--r--gnu/usr.bin/gdb/kgdb/kgdb.h2
-rw-r--r--gnu/usr.bin/gdb/kgdb/kld.c6
-rw-r--r--gnu/usr.bin/gdb/kgdb/kthr.c9
-rw-r--r--gnu/usr.bin/gdb/kgdb/main.c19
-rw-r--r--gnu/usr.bin/gdb/kgdb/trgt.c17
-rw-r--r--gnu/usr.bin/gdb/kgdb/trgt_amd64.c6
-rw-r--r--gnu/usr.bin/gdb/kgdb/trgt_arm.c6
-rw-r--r--gnu/usr.bin/gdb/kgdb/trgt_i386.c6
-rw-r--r--gnu/usr.bin/gdb/kgdb/trgt_ia64.c12
-rw-r--r--gnu/usr.bin/gdb/kgdb/trgt_mips.c6
-rw-r--r--gnu/usr.bin/gdb/kgdb/trgt_powerpc.c6
-rw-r--r--gnu/usr.bin/gdb/kgdb/trgt_powerpc64.c6
-rw-r--r--gnu/usr.bin/gdb/kgdb/trgt_sparc64.c6
-rw-r--r--gnu/usr.bin/groff/tmac/mdoc.local1
15 files changed, 94 insertions, 18 deletions
diff --git a/gnu/usr.bin/gdb/kgdb/kgdb.1 b/gnu/usr.bin/gdb/kgdb/kgdb.1
index 4073d70..58d0786 100644
--- a/gnu/usr.bin/gdb/kgdb/kgdb.1
+++ b/gnu/usr.bin/gdb/kgdb/kgdb.1
@@ -33,6 +33,7 @@
.Sh SYNOPSIS
.Nm
.Op Fl a | Fl f | Fl fullname
+.Op Fl b Ar rate
.Op Fl q | Fl quiet
.Op Fl v
.Op Fl w
@@ -62,6 +63,9 @@ The
or
.Fl fullname
options are supported for backward compatibility as well.
+.It Fl b Ar rate
+Set the baudrate to
+.Ar rate .
.It Fl q
Suppress printing of the banner when the debugger starts.
The
diff --git a/gnu/usr.bin/gdb/kgdb/kgdb.h b/gnu/usr.bin/gdb/kgdb/kgdb.h
index e828f56..1a32d8a 100644
--- a/gnu/usr.bin/gdb/kgdb/kgdb.h
+++ b/gnu/usr.bin/gdb/kgdb/kgdb.h
@@ -49,6 +49,8 @@ extern struct kthr *curkthr;
void initialize_kld_target(void);
void initialize_kgdb_target(void);
void kgdb_dmesg(void);
+CORE_ADDR kgdb_trgt_core_pcb(u_int);
+CORE_ADDR kgdb_trgt_stop_pcb(u_int, u_int);
void kgdb_trgt_new_objfile(struct objfile *);
void kgdb_trgt_fetch_registers(int);
void kgdb_trgt_store_registers(int);
diff --git a/gnu/usr.bin/gdb/kgdb/kld.c b/gnu/usr.bin/gdb/kgdb/kld.c
index d5ba20a..50f0797 100644
--- a/gnu/usr.bin/gdb/kgdb/kld.c
+++ b/gnu/usr.bin/gdb/kgdb/kld.c
@@ -78,6 +78,7 @@ kld_ok (char *path)
*/
static const char *kld_suffixes[] = {
".debug",
+ ".symbols",
"",
NULL
};
@@ -382,7 +383,10 @@ kld_current_sos (void)
* Try to read the pathname (if it exists) and store
* it in so_name.
*/
- if (off_pathname != 0) {
+ if (find_kld_path(new->so_original_name, new->so_name,
+ sizeof(new->so_name))) {
+ /* we found the kld */;
+ } else if (off_pathname != 0) {
target_read_string(read_pointer(kld + off_pathname),
&path, sizeof(new->so_name), &error);
if (error != 0) {
diff --git a/gnu/usr.bin/gdb/kgdb/kthr.c b/gnu/usr.bin/gdb/kgdb/kthr.c
index b12d07c..713b93b 100644
--- a/gnu/usr.bin/gdb/kgdb/kthr.c
+++ b/gnu/usr.bin/gdb/kgdb/kthr.c
@@ -44,12 +44,10 @@ __FBSDID("$FreeBSD$");
#include <frame-unwind.h>
#include "kgdb.h"
-#include <machine/pcb.h>
static CORE_ADDR dumppcb;
static int dumptid;
-static CORE_ADDR stoppcbs;
static cpuset_t stopped_cpus;
static struct kthr *first;
@@ -98,10 +96,9 @@ kgdb_thr_add_procs(uintptr_t paddr)
kt->kaddr = addr;
if (td.td_tid == dumptid)
kt->pcb = dumppcb;
- else if (td.td_state == TDS_RUNNING && stoppcbs != 0 &&
+ else if (td.td_state == TDS_RUNNING &&
CPU_ISSET(td.td_oncpu, &stopped_cpus))
- kt->pcb = (uintptr_t)stoppcbs +
- sizeof(struct pcb) * td.td_oncpu;
+ kt->pcb = kgdb_trgt_core_pcb(td.td_oncpu);
else
kt->pcb = (uintptr_t)td.td_pcb;
kt->kstack = td.td_kstack;
@@ -152,8 +149,6 @@ kgdb_thr_init(void)
addr != 0)
kvm_read(kvm, addr, &stopped_cpus, cpusetsize);
- stoppcbs = kgdb_lookup("stoppcbs");
-
kgdb_thr_add_procs(paddr);
addr = kgdb_lookup("zombproc");
if (addr != 0) {
diff --git a/gnu/usr.bin/gdb/kgdb/main.c b/gnu/usr.bin/gdb/kgdb/main.c
index 45a3dc0..aa062a2 100644
--- a/gnu/usr.bin/gdb/kgdb/main.c
+++ b/gnu/usr.bin/gdb/kgdb/main.c
@@ -83,7 +83,7 @@ usage(void)
{
fprintf(stderr,
- "usage: %s [-afqvw] [-d crashdir] [-c core | -n dumpnr | -r device]\n"
+ "usage: %s [-afqvw] [-b rate] [-d crashdir] [-c core | -n dumpnr | -r device]\n"
"\t[kernel [core]]\n", getprogname());
exit(1);
}
@@ -338,19 +338,18 @@ main(int argc, char *argv[])
case 'a':
annotation_level++;
break;
- case 'b':
- {
- int i;
- char *p;
+ case 'b': {
+ int i;
+ char *p;
- i = strtol (optarg, &p, 0);
- if (i == 0 && p == optarg)
+ i = strtol(optarg, &p, 0);
+ if (*p != '\0' || p == optarg)
warnx("warning: could not set baud rate to `%s'.\n",
optarg);
- else
- baud_rate = i;
- }
+ else
+ baud_rate = i;
break;
+ }
case 'c': /* use given core file. */
if (vmcore != NULL) {
warnx("option %c: can only be specified once",
diff --git a/gnu/usr.bin/gdb/kgdb/trgt.c b/gnu/usr.bin/gdb/kgdb/trgt.c
index 14449b9..85065cc 100644
--- a/gnu/usr.bin/gdb/kgdb/trgt.c
+++ b/gnu/usr.bin/gdb/kgdb/trgt.c
@@ -53,6 +53,8 @@ __FBSDID("$FreeBSD$");
#include "kgdb.h"
+static CORE_ADDR stoppcbs;
+
static void kgdb_core_cleanup(void *);
static char *vmcore;
@@ -352,3 +354,18 @@ initialize_kgdb_target(void)
add_com ("tid", class_obscure, kgdb_set_tid_cmd,
"Set current thread context");
}
+
+CORE_ADDR
+kgdb_trgt_stop_pcb(u_int cpuid, u_int pcbsz)
+{
+ static int once = 0;
+
+ if (stoppcbs == 0 && !once) {
+ once = 1;
+ stoppcbs = kgdb_lookup("stoppcbs");
+ }
+ if (stoppcbs == 0)
+ return 0;
+
+ return (stoppcbs + pcbsz * cpuid);
+}
diff --git a/gnu/usr.bin/gdb/kgdb/trgt_amd64.c b/gnu/usr.bin/gdb/kgdb/trgt_amd64.c
index cdab775..cb13d71 100644
--- a/gnu/usr.bin/gdb/kgdb/trgt_amd64.c
+++ b/gnu/usr.bin/gdb/kgdb/trgt_amd64.c
@@ -44,6 +44,12 @@ __FBSDID("$FreeBSD$");
#include "kgdb.h"
+CORE_ADDR
+kgdb_trgt_core_pcb(u_int cpuid)
+{
+ return (kgdb_trgt_stop_pcb(cpuid, sizeof(struct pcb)));
+}
+
void
kgdb_trgt_fetch_registers(int regno __unused)
{
diff --git a/gnu/usr.bin/gdb/kgdb/trgt_arm.c b/gnu/usr.bin/gdb/kgdb/trgt_arm.c
index f2e292e..ca18ae3 100644
--- a/gnu/usr.bin/gdb/kgdb/trgt_arm.c
+++ b/gnu/usr.bin/gdb/kgdb/trgt_arm.c
@@ -47,6 +47,12 @@ __FBSDID("$FreeBSD$");
#include "kgdb.h"
+CORE_ADDR
+kgdb_trgt_core_pcb(u_int cpuid)
+{
+ return (kgdb_trgt_stop_pcb(cpuid, sizeof(struct pcb)));
+}
+
void
kgdb_trgt_fetch_registers(int regno __unused)
{
diff --git a/gnu/usr.bin/gdb/kgdb/trgt_i386.c b/gnu/usr.bin/gdb/kgdb/trgt_i386.c
index aba8b65..02c9918 100644
--- a/gnu/usr.bin/gdb/kgdb/trgt_i386.c
+++ b/gnu/usr.bin/gdb/kgdb/trgt_i386.c
@@ -49,6 +49,12 @@ __FBSDID("$FreeBSD$");
static int ofs_fix;
+CORE_ADDR
+kgdb_trgt_core_pcb(u_int cpuid)
+{
+ return (kgdb_trgt_stop_pcb(cpuid, sizeof(struct pcb)));
+}
+
void
kgdb_trgt_fetch_registers(int regno __unused)
{
diff --git a/gnu/usr.bin/gdb/kgdb/trgt_ia64.c b/gnu/usr.bin/gdb/kgdb/trgt_ia64.c
index 4efa6eb..6ba800b 100644
--- a/gnu/usr.bin/gdb/kgdb/trgt_ia64.c
+++ b/gnu/usr.bin/gdb/kgdb/trgt_ia64.c
@@ -52,6 +52,18 @@ __FBSDID("$FreeBSD$");
#include "kgdb.h"
+CORE_ADDR
+kgdb_trgt_core_pcb(u_int cpuid)
+{
+ CORE_ADDR addr;
+ char *expr;
+
+ asprintf(&expr, "&cpuid_to_pcpu[%d]->pc_md.pcb", cpuid);
+ addr = kgdb_parse(expr);
+ free(expr);
+ return (addr);
+}
+
void
kgdb_trgt_fetch_registers(int regno __unused)
{
diff --git a/gnu/usr.bin/gdb/kgdb/trgt_mips.c b/gnu/usr.bin/gdb/kgdb/trgt_mips.c
index 423cacd..6ad2274 100644
--- a/gnu/usr.bin/gdb/kgdb/trgt_mips.c
+++ b/gnu/usr.bin/gdb/kgdb/trgt_mips.c
@@ -52,6 +52,12 @@ __FBSDID("$FreeBSD$");
#include "kgdb.h"
+CORE_ADDR
+kgdb_trgt_core_pcb(u_int cpuid)
+{
+ return (kgdb_trgt_stop_pcb(cpuid, sizeof(struct pcb)));
+}
+
void
kgdb_trgt_fetch_registers(int regno __unused)
{
diff --git a/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c b/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c
index a83c2d0..ef8d7f1 100644
--- a/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c
+++ b/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c
@@ -49,6 +49,12 @@ __FBSDID("$FreeBSD$");
#include "kgdb.h"
+CORE_ADDR
+kgdb_trgt_core_pcb(u_int cpuid)
+{
+ return (kgdb_trgt_stop_pcb(cpuid, sizeof(struct pcb)));
+}
+
void
kgdb_trgt_fetch_registers(int regno __unused)
{
diff --git a/gnu/usr.bin/gdb/kgdb/trgt_powerpc64.c b/gnu/usr.bin/gdb/kgdb/trgt_powerpc64.c
index d20a4d6..65f7ab5 100644
--- a/gnu/usr.bin/gdb/kgdb/trgt_powerpc64.c
+++ b/gnu/usr.bin/gdb/kgdb/trgt_powerpc64.c
@@ -44,6 +44,12 @@ __FBSDID("$FreeBSD$");
#include "kgdb.h"
+CORE_ADDR
+kgdb_trgt_core_pcb(u_int cpuid)
+{
+ return (kgdb_trgt_stop_pcb(cpuid, sizeof(struct pcb)));
+}
+
void
kgdb_trgt_fetch_registers(int regno __unused)
{
diff --git a/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c b/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c
index 8fece24..070194a 100644
--- a/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c
+++ b/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c
@@ -46,6 +46,12 @@ __FBSDID("$FreeBSD$");
#include "kgdb.h"
+CORE_ADDR
+kgdb_trgt_core_pcb(u_int cpuid)
+{
+ return (kgdb_trgt_stop_pcb(cpuid, sizeof(struct pcb)));
+}
+
void
kgdb_trgt_fetch_registers(int regno __unused)
{
diff --git a/gnu/usr.bin/groff/tmac/mdoc.local b/gnu/usr.bin/groff/tmac/mdoc.local
index 0d689ce..343209e 100644
--- a/gnu/usr.bin/groff/tmac/mdoc.local
+++ b/gnu/usr.bin/groff/tmac/mdoc.local
@@ -50,6 +50,7 @@
.\" FreeBSD releases not found in doc-common
.ds doc-operating-system-FreeBSD-7.4 7.4
.ds doc-operating-system-FreeBSD-8.3 8.3
+.ds doc-operating-system-FreeBSD-8.4 8.4
.ds doc-operating-system-FreeBSD-9.1 9.1
.ds doc-operating-system-FreeBSD-10.0 10.0
.
OpenPOWER on IntegriCloud