summaryrefslogtreecommitdiffstats
path: root/gnu
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2001-08-24 09:12:04 +0000
committerpeter <peter@FreeBSD.org>2001-08-24 09:12:04 +0000
commit1baec064218e855422ffc2f826cf83bbc7911bff (patch)
tree9057b6932374c9ce1ab363d9edaef363e1f62da1 /gnu
parent89bd0a43383b1b10e21cfba74c7bf109b71a62f1 (diff)
downloadFreeBSD-src-1baec064218e855422ffc2f826cf83bbc7911bff.zip
FreeBSD-src-1baec064218e855422ffc2f826cf83bbc7911bff.tar.gz
Dynamically adapt to kernbase changes on crashdumps, falling back to
KERNBASE if the "kernbase" symbol is not present on older kernels.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/usr.bin/binutils/gdb/i386/kvm-fbsd.c20
-rw-r--r--gnu/usr.bin/binutils/gdb/kvm-fbsd.c20
2 files changed, 38 insertions, 2 deletions
diff --git a/gnu/usr.bin/binutils/gdb/i386/kvm-fbsd.c b/gnu/usr.bin/binutils/gdb/i386/kvm-fbsd.c
index 9513af3..fdfc6a3 100644
--- a/gnu/usr.bin/binutils/gdb/i386/kvm-fbsd.c
+++ b/gnu/usr.bin/binutils/gdb/i386/kvm-fbsd.c
@@ -449,7 +449,25 @@ xfer_umem (memaddr, myaddr, len, write)
return n;
}
-#define KERNOFF ((unsigned)KERNBASE)
+static CORE_ADDR
+ksym_kernbase()
+{
+ static CORE_ADDR kernbase;
+ struct minimal_symbol *sym;
+
+ if (kernbase == 0)
+ {
+ sym = lookup_minimal_symbol ("kernbase", NULL, NULL);
+ if (sym == NULL) {
+ kernbase = KERNBASE;
+ } else {
+ kernbase = SYMBOL_VALUE_ADDRESS (sym);
+ }
+ }
+ return kernbase;
+}
+
+#define KERNOFF (ksym_kernbase())
#define INKERNEL(x) ((x) >= KERNOFF)
static CORE_ADDR sbr;
diff --git a/gnu/usr.bin/binutils/gdb/kvm-fbsd.c b/gnu/usr.bin/binutils/gdb/kvm-fbsd.c
index 9513af3..fdfc6a3 100644
--- a/gnu/usr.bin/binutils/gdb/kvm-fbsd.c
+++ b/gnu/usr.bin/binutils/gdb/kvm-fbsd.c
@@ -449,7 +449,25 @@ xfer_umem (memaddr, myaddr, len, write)
return n;
}
-#define KERNOFF ((unsigned)KERNBASE)
+static CORE_ADDR
+ksym_kernbase()
+{
+ static CORE_ADDR kernbase;
+ struct minimal_symbol *sym;
+
+ if (kernbase == 0)
+ {
+ sym = lookup_minimal_symbol ("kernbase", NULL, NULL);
+ if (sym == NULL) {
+ kernbase = KERNBASE;
+ } else {
+ kernbase = SYMBOL_VALUE_ADDRESS (sym);
+ }
+ }
+ return kernbase;
+}
+
+#define KERNOFF (ksym_kernbase())
#define INKERNEL(x) ((x) >= KERNOFF)
static CORE_ADDR sbr;
OpenPOWER on IntegriCloud