Module Name: src Committed By: chs Date: Sun Nov 18 00:06:57 UTC 2012
Modified Files: src/sys/kern: kern_ksyms.c src/sys/sys: ksyms.h Log Message: make ksyms structures not depend on KDTRACE_HOOKS. always include a CTF section, even though it might be empty. this fixes savecore's generated kernel symbol table files. To generate a diff of this commit: cvs rdiff -u -r1.67 -r1.68 src/sys/kern/kern_ksyms.c cvs rdiff -u -r1.27 -r1.28 src/sys/sys/ksyms.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/kern_ksyms.c diff -u src/sys/kern/kern_ksyms.c:1.67 src/sys/kern/kern_ksyms.c:1.68 --- src/sys/kern/kern_ksyms.c:1.67 Mon Dec 5 21:30:48 2011 +++ src/sys/kern/kern_ksyms.c Sun Nov 18 00:06:57 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_ksyms.c,v 1.67 2011/12/05 21:30:48 christos Exp $ */ +/* $NetBSD: kern_ksyms.c,v 1.68 2012/11/18 00:06:57 chs Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -71,7 +71,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_ksyms.c,v 1.67 2011/12/05 21:30:48 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_ksyms.c,v 1.68 2012/11/18 00:06:57 chs Exp $"); #if defined(_KERNEL) && defined(_KERNEL_OPT) #include "opt_ddb.h" @@ -299,12 +299,10 @@ addsymtab(const char *name, void *symsta tab->sd_maxsym = 0; tab->sd_usroffset = 0; tab->sd_gone = false; -#ifdef KDTRACE_HOOKS tab->sd_ctfstart = ctfstart; tab->sd_ctfsize = ctfsize; tab->sd_nmap = nmap; tab->sd_nmapsize = nsyms; -#endif #ifdef KSYMS_DEBUG printf("newstart %p sym %p ksyms_symsz %zu str %p strsz %zu send %p\n", newstart, symstart, symsize, strstart, strsize, @@ -896,7 +894,6 @@ ksyms_hdr_init(void *hdraddr) ksyms_hdr.kh_shdr[SHBSS].sh_addralign = PAGE_SIZE; ksyms_hdr.kh_shdr[SHBSS].sh_flags = SHF_ALLOC | SHF_EXECINSTR; -#ifdef KDTRACE_HOOKS /* Sixth section header; ".SUNW_ctf" */ ksyms_hdr.kh_shdr[SHCTF].sh_name = 32; /* Section 6 offset */ ksyms_hdr.kh_shdr[SHCTF].sh_type = SHT_PROGBITS; @@ -904,7 +901,6 @@ ksyms_hdr_init(void *hdraddr) /* ksyms_hdr.kh_shdr[SHCTF].sh_size = filled in at open */ ksyms_hdr.kh_shdr[SHCTF].sh_link = SYMTAB; /* Corresponding symtab */ ksyms_hdr.kh_shdr[SHCTF].sh_addralign = sizeof(char); -#endif /* Set section names */ strlcpy(&ksyms_hdr.kh_strtab[1], ".symtab", @@ -915,10 +911,8 @@ ksyms_hdr_init(void *hdraddr) sizeof(ksyms_hdr.kh_strtab) - 17); strlcpy(&ksyms_hdr.kh_strtab[27], ".bss", sizeof(ksyms_hdr.kh_strtab) - 27); -#ifdef KDTRACE_HOOKS strlcpy(&ksyms_hdr.kh_strtab[32], ".SUNW_ctf", sizeof(ksyms_hdr.kh_strtab) - 32); -#endif } static int @@ -938,11 +932,9 @@ ksymsopen(dev_t dev, int oflags, int dev ksyms_hdr.kh_shdr[STRTAB].sh_offset = ksyms_symsz + ksyms_hdr.kh_shdr[SYMTAB].sh_offset; ksyms_hdr.kh_shdr[STRTAB].sh_size = ksyms_strsz; -#ifdef KDTRACE_HOOKS ksyms_hdr.kh_shdr[SHCTF].sh_offset = ksyms_strsz + ksyms_hdr.kh_shdr[STRTAB].sh_offset; ksyms_hdr.kh_shdr[SHCTF].sh_size = ksyms_ctfsz; -#endif ksyms_isopen = true; mutex_exit(&ksyms_lock); @@ -980,9 +972,6 @@ ksymsread(dev_t dev, struct uio *uio, in struct ksyms_symtab *st; size_t filepos, inpos, off; int error; -#ifdef KDTRACE_HOOKS - struct ksyms_symtab *cst; -#endif /* * First: Copy out the ELF header. XXX Lose if ksymsopen() @@ -1031,24 +1020,22 @@ ksymsread(dev_t dev, struct uio *uio, in filepos += st->sd_strsize; } -#ifdef KDTRACE_HOOKS /* * Copy out the CTF table. */ - cst = TAILQ_FIRST(&ksyms_symtabs); - if (cst->sd_ctfstart != NULL) { + st = TAILQ_FIRST(&ksyms_symtabs); + if (st->sd_ctfstart != NULL) { if (uio->uio_resid == 0) return 0; - if (uio->uio_offset <= cst->sd_ctfsize + filepos) { + if (uio->uio_offset <= st->sd_ctfsize + filepos) { inpos = uio->uio_offset - filepos; - error = uiomove((char *)cst->sd_ctfstart + inpos, - cst->sd_ctfsize - inpos, uio); + error = uiomove((char *)st->sd_ctfstart + inpos, + st->sd_ctfsize - inpos, uio); if (error != 0) return error; } - filepos += cst->sd_ctfsize; + filepos += st->sd_ctfsize; } -#endif return 0; } Index: src/sys/sys/ksyms.h diff -u src/sys/sys/ksyms.h:1.27 src/sys/sys/ksyms.h:1.28 --- src/sys/sys/ksyms.h:1.27 Mon Mar 15 02:28:59 2010 +++ src/sys/sys/ksyms.h Sun Nov 18 00:06:56 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ksyms.h,v 1.27 2010/03/15 02:28:59 darran Exp $ */ +/* $NetBSD: ksyms.h,v 1.28 2012/11/18 00:06:56 chs Exp $ */ /* * Copyright (c) 2001, 2003 Anders Magnusson (ra...@ludd.luth.se). @@ -32,10 +32,6 @@ #ifdef _KSYMS_PRIVATE -#if defined(_KERNEL_OPT) -#include "opt_dtrace.h" -#endif - #define ELFSIZE ARCH_ELFSIZE #include <sys/exec_elf.h> #include <sys/queue.h> @@ -52,12 +48,10 @@ struct ksyms_symtab { int sd_strsize; /* Size of string table */ int sd_nglob; /* Number of global symbols */ bool sd_gone; /* dead but around for open() */ -#ifdef KDTRACE_HOOKS void *sd_ctfstart; /* Address of CTF contents */ int sd_ctfsize; /* Size in bytes of CTF contents */ uint32_t *sd_nmap; /* Name map for sorted symbols */ int sd_nmapsize; /* Total span of map */ -#endif }; /* @@ -68,12 +62,8 @@ struct ksyms_symtab { #define STRTAB 2 #define SHSTRTAB 3 #define SHBSS 4 -#ifdef KDTRACE_HOOKS #define SHCTF 5 #define NSECHDR 6 -#else -#define NSECHDR 5 -#endif #define NPRGHDR 1 #define SHSTRSIZ 42