Hi, The following small patch to 4.6.2:
--- sys/sys/linker.h.orig Tue Nov 19 20:05:29 2002 +++ sys/sys/linker.h Tue Nov 19 11:24:30 2002 @@ -94,6 +94,7 @@ int id; /* unique id */ caddr_t address; /* load address */ size_t size; /* size of file */ + size_t text_offs; /* Location of text */ int ndeps; /* number of dependancies */ linker_file_t* deps; /* list of dependancies */ STAILQ_HEAD(, common_symbol) common; /* list of common symbols */ --- sys/kern/link_elf.c.orig Tue Nov 19 20:08:32 2002 +++ sys/kern/link_elf.c Tue Nov 19 17:59:16 2002 @@ -611,6 +611,7 @@ } lf->address = ef->address; lf->size = mapsize; + lf->text_offs = hdr->e_entry;; error = parse_dynamic(lf); if (error) Would allow the following sort of gdb script file: define load-ko-syms path ./freebsd_46_i386/debug/export/kernel set $file = linker_files.tqh_first set $file = $file->link.tqe_next if ($file == 0) printf "No klds to load symbols for\n" else while ($file != 0) add-symbol-file $file->filename ($file->address + $file->text_offs) printf "Loaded symbols for %s\n", $file->filename set $file = $file->link.tqe_next end end end Of course, you will need a recent version of GDB. -- Regards ----- Richard Sharpe, rsharpe[at]ns.aus.com, rsharpe[at]samba.org, sharpe[at]ethereal.com, http://www.richardsharpe.com
--- sys/sys/linker.h.orig Tue Nov 19 20:05:29 2002 +++ sys/sys/linker.h Tue Nov 19 11:24:30 2002 @@ -94,6 +94,7 @@ int id; /* unique id */ caddr_t address; /* load address */ size_t size; /* size of file */ + size_t text_offs; /* Location of text */ int ndeps; /* number of dependancies */ linker_file_t* deps; /* list of dependancies */ STAILQ_HEAD(, common_symbol) common; /* list of common symbols */ --- sys/kern/link_elf.c.orig Tue Nov 19 20:08:32 2002 +++ sys/kern/link_elf.c Tue Nov 19 17:59:16 2002 @@ -611,6 +611,7 @@ } lf->address = ef->address; lf->size = mapsize; + lf->text_offs = hdr->e_entry;; error = parse_dynamic(lf); if (error)