diff options
author | bde <bde@FreeBSD.org> | 2004-05-18 05:30:06 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 2004-05-18 05:30:06 +0000 |
commit | 28faba2e27452589e39455d248e8dfe506f0ac87 (patch) | |
tree | c8d8b7c3af54ef8eadb0093a659bd827ac44c3f2 | |
parent | 235a3d8f6454b995eea2c2e6a0a7bc93fd353dee (diff) | |
download | FreeBSD-src-28faba2e27452589e39455d248e8dfe506f0ac87.zip FreeBSD-src-28faba2e27452589e39455d248e8dfe506f0ac87.tar.gz |
Fixed DDB_NOKLDSYM on amd64's:
machdep.c:
Initialize the symbol table pointers, not quite like for other arches.
db_elf.c:
Don't claim to be an i486 in the fake ELF header.
-rw-r--r-- | sys/amd64/amd64/machdep.c | 6 | ||||
-rw-r--r-- | sys/ddb/db_elf.c | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 341da8e..0d19ba9 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -161,6 +161,10 @@ struct pcpu __pcpu[MAXCPU]; struct mtx icu_lock; +#ifdef DDB +void *ksym_start, *ksym_end; +#endif + static void cpu_startup(dummy) void *dummy; @@ -1134,6 +1138,8 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) kmdp = preload_search_by_type("elf64 kernel"); boothowto = MD_FETCH(kmdp, MODINFOMD_HOWTO, int); kern_envp = MD_FETCH(kmdp, MODINFOMD_ENVP, char *) + KERNBASE; + ksym_start = MD_FETCH(kmdp, MODINFOMD_SSYM, void *); + ksym_end = MD_FETCH(kmdp, MODINFOMD_ESYM, void *); /* Init basic tunables, hz etc */ init_param1(); diff --git a/sys/ddb/db_elf.c b/sys/ddb/db_elf.c index 4ebdc8e..a24f3b7 100644 --- a/sys/ddb/db_elf.c +++ b/sys/ddb/db_elf.c @@ -402,7 +402,7 @@ kdb_init(void) elf.e_ident[EI_MAG1] = ELFMAG1; elf.e_ident[EI_MAG2] = ELFMAG2; elf.e_ident[EI_MAG3] = ELFMAG3; - elf.e_machine = EM_486; + elf.e_machine = ELF_ARCH; elf.e_shoff = (uintptr_t)(void *)&sh[0] - (uintptr_t)(void *)&elf; sh[0].sh_type = SHT_SYMTAB; sh[0].sh_offset = (uintptr_t)ksym_start + sizeof(long) - |