[Midnightbsd-cvs] src: usr.sbin/kldxref: Sync this with other changes to the kernel.

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Thu Dec 4 12:04:25 EST 2008


Log Message:
-----------
Sync this with other changes to the kernel.

Modified Files:
--------------
    src/usr.sbin/kldxref:
        Makefile (r1.1.1.1 -> r1.2)
        ef.c (r1.1.1.2 -> r1.2)
        ef.h (r1.1.1.2 -> r1.2)
        ef_amd64.c (r1.1.1.2 -> r1.2)
        ef_i386.c (r1.1.1.2 -> r1.2)
        ef_obj.c (r1.1.1.2 -> r1.2)
        ef_sparc64.c (r1.1.1.2 -> r1.2)
        kldxref.c (r1.1.1.1 -> r1.2)

Removed Files:
-------------
    src/usr.sbin/kldxref:
        ef_powerpc.c

-------------- next part --------------
Index: kldxref.c
===================================================================
RCS file: /home/cvs/src/usr.sbin/kldxref/kldxref.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L usr.sbin/kldxref/kldxref.c -L usr.sbin/kldxref/kldxref.c -u -r1.1.1.1 -r1.2
--- usr.sbin/kldxref/kldxref.c
+++ usr.sbin/kldxref/kldxref.c
@@ -29,7 +29,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/usr.sbin/kldxref/kldxref.c,v 1.10 2004/08/27 00:58:40 iedowse Exp $
+ * $FreeBSD: src/usr.sbin/kldxref/kldxref.c,v 1.14 2006/08/05 18:22:11 imp Exp $
  */
 
 #include <sys/types.h>
@@ -86,7 +86,7 @@
 static char recbuf[MAXRECSIZE];
 static int recpos, reccnt;
 
-void maketempfile(char *, const char *);
+FILE *maketempfile(char *, const char *);
 static void usage(void);
 
 static void
@@ -187,7 +187,7 @@
 		printf("  module %s\n", cval);
 		break;
 	default:
-		warnx("unknown metdata record %d in file %s", md->md_type, kldname);
+		warnx("unknown metadata record %d in file %s", md->md_type, kldname);
 	}
 	if (!error)
 		record_end();
@@ -226,8 +226,7 @@
 		cp = strrchr(kldname, '.');
 		nmlen = cp ? min(MAXMODNAME, cp - kldname) : 
 		    min(MAXMODNAME, strlen(kldname));
-		strncpy(kldmodname, kldname, nmlen);
-		kldmodname[nmlen] = '\0';
+		strlcpy(kldmodname, kldname, nmlen);
 /*		fprintf(fxref, "%s:%s:%d\n", kldmodname, kldname, 0);*/
 	}
 	do {
@@ -253,21 +252,21 @@
 	return error;
 }
 
-void
+FILE *
 maketempfile(char *dest, const char *root)
 {
 	char *p;
+	int fd;
 
-	strncpy(dest, root, MAXPATHLEN - 1);
-	dest[MAXPATHLEN] = '\0';
+	strlcpy(dest, root, MAXPATHLEN);
 
 	if ((p = strrchr(dest, '/')) != 0)
 		p++;
 	else
 		p = dest;
 	strcpy(p, "lhint.XXXXXX");
-	if (mkstemp(dest) == -1)
-		err(1, "%s", dest);
+	fd = mkstemp(dest);
+	return ((fd == -1) ? NULL : fdopen(fd, "w+"));
 }
 
 static char xrefname[MAXPATHLEN], tempname[MAXPATHLEN];
@@ -322,6 +321,7 @@
 		p = fts_read(ftsp);
 		if ((p == NULL || p->fts_info == FTS_D) && !dflag && fxref) {
 			fclose(fxref);
+			fxref = NULL;
 			if (reccnt) {
 				rename(tempname, xrefname);
 			} else {
@@ -334,8 +334,7 @@
 		if (p && p->fts_info == FTS_D && !dflag) {
 			snprintf(xrefname, sizeof(xrefname), "%s/%s",
 			    ftsp->fts_path, xref_file);
-			maketempfile(tempname, ftsp->fts_path);
-			fxref = fopen(tempname, "w+t");
+			fxref = maketempfile(tempname, ftsp->fts_path);
 			if (fxref == NULL)
 				err(1, "can't create %s", tempname);
 			ival = 1;
@@ -344,6 +343,9 @@
 		}
 		if (p->fts_info != FTS_F)
 			continue;
+		if (p->fts_namelen >= 8 &&
+		    strcmp(p->fts_name + p->fts_namelen - 8, ".symbols") == 0)
+			continue;
 		read_kld(p->fts_path, p->fts_name);
 	}
 	fts_close(ftsp);
Index: ef_amd64.c
===================================================================
RCS file: /home/cvs/src/usr.sbin/kldxref/ef_amd64.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -L usr.sbin/kldxref/ef_amd64.c -L usr.sbin/kldxref/ef_amd64.c -u -r1.1.1.2 -r1.2
--- usr.sbin/kldxref/ef_amd64.c
+++ usr.sbin/kldxref/ef_amd64.c
@@ -24,7 +24,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/usr.sbin/kldxref/ef_amd64.c,v 1.2.4.1 2005/12/30 22:13:59 marcel Exp $
+ * $FreeBSD: src/usr.sbin/kldxref/ef_amd64.c,v 1.3 2005/12/18 04:52:37 marcel Exp $
  */
 
 #include <sys/types.h>
Index: ef_i386.c
===================================================================
RCS file: /home/cvs/src/usr.sbin/kldxref/ef_i386.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -L usr.sbin/kldxref/ef_i386.c -L usr.sbin/kldxref/ef_i386.c -u -r1.1.1.2 -r1.2
--- usr.sbin/kldxref/ef_i386.c
+++ usr.sbin/kldxref/ef_i386.c
@@ -24,7 +24,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/usr.sbin/kldxref/ef_i386.c,v 1.2.4.1 2005/12/30 22:13:59 marcel Exp $
+ * $FreeBSD: src/usr.sbin/kldxref/ef_i386.c,v 1.3 2005/12/18 04:52:37 marcel Exp $
  */
 
 #include <sys/types.h>
Index: ef.c
===================================================================
RCS file: /home/cvs/src/usr.sbin/kldxref/ef.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -L usr.sbin/kldxref/ef.c -L usr.sbin/kldxref/ef.c -u -r1.1.1.2 -r1.2
--- usr.sbin/kldxref/ef.c
+++ usr.sbin/kldxref/ef.c
@@ -29,7 +29,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/usr.sbin/kldxref/ef.c,v 1.8.2.1 2005/12/30 22:13:59 marcel Exp $
+ * $FreeBSD: src/usr.sbin/kldxref/ef.c,v 1.9 2005/12/18 04:52:37 marcel Exp $
  */
 
 #include <sys/param.h>
Index: ef_obj.c
===================================================================
RCS file: /home/cvs/src/usr.sbin/kldxref/ef_obj.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -L usr.sbin/kldxref/ef_obj.c -L usr.sbin/kldxref/ef_obj.c -u -r1.1.1.2 -r1.2
--- usr.sbin/kldxref/ef_obj.c
+++ usr.sbin/kldxref/ef_obj.c
@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/usr.sbin/kldxref/ef_obj.c,v 1.3.4.1 2005/12/30 22:13:59 marcel Exp $
+ * $FreeBSD: src/usr.sbin/kldxref/ef_obj.c,v 1.5 2006/01/12 08:01:38 jasone Exp $
  */
 
 #include <sys/param.h>
@@ -335,8 +335,8 @@
 	Elf_Sym *es;
 	char *mapbase;
 	void *vtmp;
-	size_t mapsize;
-	int alignmask, error, fd, pb, ra, res, rl;
+	size_t mapsize, alignmask, max_addralign;
+	int error, fd, pb, ra, res, rl;
 	int i, j, nbytes, nsym, shstrindex, symstrindex, symtabindex;
 
 	if (filename == NULL)
@@ -468,12 +468,15 @@
 
 	/* Size up code/data(progbits) and bss(nobits). */
 	alignmask = 0;
+	max_addralign = 0;
 	mapsize = 0;
 	for (i = 0; i < hdr->e_shnum; i++) {
 		switch (shdr[i].sh_type) {
 		case SHT_PROGBITS:
 		case SHT_NOBITS:
 			alignmask = shdr[i].sh_addralign - 1;
+			if (shdr[i].sh_addralign > max_addralign)
+				max_addralign = shdr[i].sh_addralign;
 			mapsize += alignmask;
 			mapsize &= ~alignmask;
 			mapsize += shdr[i].sh_size;
@@ -482,10 +485,9 @@
 	}
 
 	/* We know how much space we need for the text/data/bss/etc. */
-	ef->address = malloc(mapsize);
 	ef->size = mapsize;
-	if (ef->address == NULL) {
-		printf("malloc failed\n");
+	if (posix_memalign((void **)&ef->address, max_addralign, mapsize)) {
+		printf("posix_memalign failed\n");
 		goto out;
 	}
 	mapbase = ef->address;
Index: ef.h
===================================================================
RCS file: /home/cvs/src/usr.sbin/kldxref/ef.h,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -L usr.sbin/kldxref/ef.h -L usr.sbin/kldxref/ef.h -u -r1.1.1.2 -r1.2
--- usr.sbin/kldxref/ef.h
+++ usr.sbin/kldxref/ef.h
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/usr.sbin/kldxref/ef.h,v 1.5.2.1 2005/12/30 22:13:59 marcel Exp $ */
+/* $FreeBSD: src/usr.sbin/kldxref/ef.h,v 1.6 2005/12/18 04:52:37 marcel Exp $ */
 
 #ifndef _EF_H_
 #define _EF_H_
--- usr.sbin/kldxref/ef_powerpc.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*-
- * Copyright (c) 2005 Peter Grehan.
- * Copyright 1996-1998 John D. Polstra.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD: src/usr.sbin/kldxref/ef_powerpc.c,v 1.2.2.1 2005/12/30 22:13:59 marcel Exp $
- */
-
-#include <sys/types.h>
-#include <machine/elf.h>
-
-#include <err.h>
-#include <errno.h>
-#include <string.h>
-
-#include "ef.h"
-
-#include <stdio.h>
-
-/*
- * Apply relocations to the values obtained from the file. `relbase' is the
- * target relocation address of the section, and `dataoff/len' is the region
- * that is to be relocated, and has been copied to *dest
- */
-int
-ef_reloc(struct elf_file *ef, const void *reldata, int reltype, Elf_Off relbase,
-    Elf_Off dataoff, size_t len, void *dest)
-{
-        Elf_Addr *where, addend;
-        Elf_Size rtype, symidx;
-        const Elf_Rela *rela;
-
-	if (reltype != EF_RELOC_RELA)
-		return (EINVAL);
-
-	rela = (const Elf_Rela *)reldata;
-	where = (Elf_Addr *) ((Elf_Off)dest - dataoff + rela->r_offset);
-	addend = rela->r_addend;
-	rtype = ELF_R_TYPE(rela->r_info);
-	symidx = ELF_R_SYM(rela->r_info);
-
-	 if ((char *)where < (char *)dest || (char *)where >= (char *)dest + len)
-                return (0);
-
-	switch(rtype) {
-	case R_PPC_RELATIVE: /* word32 B + A */
-		*where = relbase + addend;
-		break;
-	default:
-		warnx("unhandled relocation type %d", rtype);
-	}
-	return (0);
-}
Index: Makefile
===================================================================
RCS file: /home/cvs/src/usr.sbin/kldxref/Makefile,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L usr.sbin/kldxref/Makefile -L usr.sbin/kldxref/Makefile -u -r1.1.1.1 -r1.2
--- usr.sbin/kldxref/Makefile
+++ usr.sbin/kldxref/Makefile
@@ -1,4 +1,4 @@
-# $FreeBSD: src/usr.sbin/kldxref/Makefile,v 1.7 2004/08/27 00:58:40 iedowse Exp $
+# $FreeBSD: src/usr.sbin/kldxref/Makefile,v 1.10 2006/08/04 21:29:39 marcel Exp $
 
 PROG=	kldxref
 MAN=	kldxref.8
Index: ef_sparc64.c
===================================================================
RCS file: /home/cvs/src/usr.sbin/kldxref/ef_sparc64.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -L usr.sbin/kldxref/ef_sparc64.c -L usr.sbin/kldxref/ef_sparc64.c -u -r1.1.1.2 -r1.2
--- usr.sbin/kldxref/ef_sparc64.c
+++ usr.sbin/kldxref/ef_sparc64.c
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/usr.sbin/kldxref/ef_sparc64.c,v 1.3.2.1 2005/12/30 22:13:59 marcel Exp $
+ * $FreeBSD: src/usr.sbin/kldxref/ef_sparc64.c,v 1.5 2005/12/18 04:52:37 marcel Exp $
  */
 
 #include <sys/types.h>


More information about the Midnightbsd-cvs mailing list