Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 May 2006 02:56:43 GMT
From:      John Birrell <jb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 97229 for review
Message-ID:  <200605160256.k4G2uhRO076654@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=97229

Change 97229 by jb@jb_freebsd2 on 2006/05/16 02:55:48

	Merge from OpenSolaris ON (OS/Net) Consolidation - 20060508

Affected files ...

.. //depot/projects/dtrace/src/contrib/opensolaris/cmd/sgs/include/debug.h#2 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/cmd/sgs/libelf/common/output.c#2 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/lib/libdtrace/common/dt_dof.c#3 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/lib/libdtrace/common/dt_printf.c#4 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/lib/libproc/common/Psymtab.c#2 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/ctf.c#4 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/ctftools.h#2 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/dwarf.c#3 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/input.c#3 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/merge.c#2 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/output.c#3 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/st_parse.c#2 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/stabs.c#2 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/tdata.c#2 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/traverse.c#2 integrate
.. //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/util.c#3 integrate

Differences ...

==== //depot/projects/dtrace/src/contrib/opensolaris/cmd/sgs/include/debug.h#2 (text) ====

@@ -27,7 +27,7 @@
 #ifndef	_DEBUG_H
 #define	_DEBUG_H
 
-#pragma ident	"@(#)debug.h	1.135	06/03/07 SMI"
+#pragma ident	"@(#)debug.h	1.136	06/04/14 SMI"
 
 /*
  * Global include file for lddbg debugging.
@@ -353,6 +353,7 @@
 #define	Dbg_util_edge_in	Dbg64_util_edge_in
 #define	Dbg_util_edge_out	Dbg64_util_edge_out
 #define	Dbg_util_intoolate	Dbg64_util_intoolate
+#define	Dbg_util_lcinterface	Dbg64_util_lcinterface
 #define	Dbg_util_nl		Dbg64_util_nl
 #define	Dbg_util_no_init	Dbg64_util_no_init
 #define	Dbg_util_scc_entry	Dbg64_util_scc_entry
@@ -361,7 +362,7 @@
 #define	Dbg_util_wait		Dbg64_util_wait
 
 #define	Dbg_unused_file		Dbg64_unused_file
-#define	Dbg_unused_rtldinfo	Dbg64_unused_rtldinfo
+#define	Dbg_unused_lcinterface	Dbg64_unused_lcinterface
 #define	Dbg_unused_sec		Dbg64_unused_sec
 #define	Dbg_unused_unref	Dbg64_unused_unref
 
@@ -544,6 +545,7 @@
 #define	Dbg_util_edge_in	Dbg32_util_edge_in
 #define	Dbg_util_edge_out	Dbg32_util_edge_out
 #define	Dbg_util_intoolate	Dbg32_util_intoolate
+#define	Dbg_util_lcinterface	Dbg32_util_lcinterface
 #define	Dbg_util_nl		Dbg32_util_nl
 #define	Dbg_util_no_init	Dbg32_util_no_init
 #define	Dbg_util_scc_entry	Dbg32_util_scc_entry
@@ -552,7 +554,7 @@
 #define	Dbg_util_wait		Dbg32_util_wait
 
 #define	Dbg_unused_file		Dbg32_unused_file
-#define	Dbg_unused_rtldinfo	Dbg32_unused_rtldinfo
+#define	Dbg_unused_lcinterface	Dbg32_unused_lcinterface
 #define	Dbg_unused_sec		Dbg32_unused_sec
 #define	Dbg_unused_unref	Dbg32_unused_unref
 
@@ -777,6 +779,7 @@
 		    int, int);
 extern	void	Dbg_util_edge_out(Rt_map *, Rt_map *);
 extern	void	Dbg_util_intoolate(Rt_map *);
+extern	void	Dbg_util_lcinterface(Rt_map *, int, char *);
 extern	void	Dbg_util_nl(Lm_list *, int);
 extern	void	Dbg_util_no_init(Rt_map *);
 extern	void	Dbg_util_str(Lm_list *, const char *);
@@ -785,7 +788,7 @@
 extern	void	Dbg_util_wait(Rt_map *, Rt_map *, int);
 
 extern	void	Dbg_unused_file(Lm_list *, const char *, int, uint_t);
-extern	void	Dbg_unused_rtldinfo(Rt_map *);
+extern	void	Dbg_unused_lcinterface(Rt_map *, Rt_map *, int);
 extern	void	Dbg_unused_sec(Lm_list *, Is_desc *);
 extern	void	Dbg_unused_unref(Rt_map *, const char *);
 

==== //depot/projects/dtrace/src/contrib/opensolaris/cmd/sgs/libelf/common/output.c#2 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -19,17 +18,16 @@
  *
  * CDDL HEADER END
  */
-/*	Copyright (c) 1988 AT&T	*/
-/*	  All Rights Reserved  	*/
 
-
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
+ *	Copyright (c) 1988 AT&T
+ *	  All Rights Reserved
+ *
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-
-#pragma ident	"@(#)output.c	1.19	05/06/08 SMI" 	/* SVr4.0 1.3	*/
+#pragma ident	"@(#)output.c	1.20	06/04/19 SMI" 	/* SVr4.0 1.3	*/
 
 #include "syn.h"
 #include <sys/mman.h>
@@ -98,11 +96,10 @@
 		_elf_seterr(EIO_SYNC, err);
 		return (0);
 	}
-	if (lseek(fd, 0L, SEEK_SET) == 0) {
-		if (write(fd, p, sz) == sz) {
-			(void) free(p);
-			return (sz);
-		}
+	if ((lseek(fd, 0L, SEEK_SET) == 0) &&
+	    (write(fd, p, sz) == sz) && (fsync(fd) == 0)) {
+		(void) free(p);
+		return (sz);
 	}
 	_elf_seterr(EIO_WRITE, errno);
 	return (0);

==== //depot/projects/dtrace/src/contrib/opensolaris/lib/libdtrace/common/dt_dof.c#3 (text) ====

@@ -24,7 +24,7 @@
  * Use is subject to license terms.
  */
 
-#pragma ident	"@(#)dt_dof.c	1.11	06/03/30 SMI"
+#pragma ident	"@(#)dt_dof.c	1.13	06/04/28 SMI"
 
 #include <sys/types.h>
 #if defined(sun)
@@ -444,7 +444,12 @@
 
 		dofpr.dofpr_func = dof_add_string(ddo, pip->pi_fname);
 
-		assert(pip->pi_noffs > 0);
+		/*
+		 * There should be one probe offset or is-enabled probe offset
+		 * or else this probe instance won't have been created. The
+		 * kernel will reject DOF which has a probe with no offsets.
+		 */
+		assert(pip->pi_noffs + pip->pi_nenoffs > 0);
 
 		dofpr.dofpr_offidx =
 		    dt_buf_len(&ddo->ddo_offs) / sizeof (uint32_t);
@@ -456,7 +461,7 @@
 		    dt_buf_len(&ddo->ddo_enoffs) / sizeof (uint32_t);
 		dofpr.dofpr_nenoffs = pip->pi_nenoffs;
 		dt_buf_write(dtp, &ddo->ddo_enoffs, pip->pi_enoffs,
-		    pip->pi_noffs * sizeof (uint32_t), sizeof (uint32_t));
+		    pip->pi_nenoffs * sizeof (uint32_t), sizeof (uint32_t));
 
 		/*
 		 * If pi_rname isn't set, the relocation will be against the
@@ -491,6 +496,7 @@
 	dof_relohdr_t dofr;
 	dof_secidx_t *dofs;
 	ulong_t xr, nxr;
+	size_t sz;
 	id_t i;
 
 	if (pvp->pv_flags & DT_PROVIDER_IMPL)
@@ -533,15 +539,17 @@
 
 	dt_buf_concat(dtp, &ddo->ddo_ldata, &ddo->ddo_args, sizeof (uint8_t));
 
-	assert(dt_buf_len(&ddo->ddo_offs) > 0);
-
 	dofpv.dofpv_proffs = dof_add_lsect(ddo, NULL, DOF_SECT_PROFFS,
 	    sizeof (uint_t), 0, sizeof (uint_t), dt_buf_len(&ddo->ddo_offs));
 
 	dt_buf_concat(dtp, &ddo->ddo_ldata, &ddo->ddo_offs, sizeof (uint_t));
 
-	dofpv.dofpv_prenoffs = dof_add_lsect(ddo, NULL, DOF_SECT_PRENOFFS,
-	    sizeof (uint_t), 0, sizeof (uint_t), dt_buf_len(&ddo->ddo_enoffs));
+	if ((sz = dt_buf_len(&ddo->ddo_enoffs)) != 0) {
+		dofpv.dofpv_prenoffs = dof_add_lsect(ddo, NULL,
+		    DOF_SECT_PRENOFFS, sizeof (uint_t), 0, sizeof (uint_t), sz);
+	} else {
+		dofpv.dofpv_prenoffs = DOF_SECT_NONE;
+	}
 
 	dt_buf_concat(dtp, &ddo->ddo_ldata, &ddo->ddo_enoffs, sizeof (uint_t));
 

==== //depot/projects/dtrace/src/contrib/opensolaris/lib/libdtrace/common/dt_printf.c#4 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -25,7 +24,7 @@
  * Use is subject to license terms.
  */
 
-#pragma ident	"@(#)dt_printf.c	1.19	06/01/07 SMI"
+#pragma ident	"@(#)dt_printf.c	1.20	06/04/29 SMI"
 
 #if defined(sun)
 #include <sys/sysmacros.h>
@@ -1608,7 +1607,7 @@
 	 * file descriptor for the fopen()'d file.  This way, if the fopen()
 	 * fails, we can fail the operation without destroying stdout.
 	 */
-	if ((nfp = fopen(filename, "aw")) == NULL) {
+	if ((nfp = fopen(filename, "aF")) == NULL) {
 		char *msg = strerror(errno);
 		char *faultstr;
 		int len = 80;
@@ -1640,7 +1639,7 @@
 		}
 	}
 
-	if (freopen(selfbuf, "aw", fp) == NULL) {
+	if (freopen(selfbuf, "aF", fp) == NULL) {
 		(void) fclose(nfp);
 		return (dt_set_errno(dtp, errno));
 	}

==== //depot/projects/dtrace/src/contrib/opensolaris/lib/libproc/common/Psymtab.c#2 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -19,12 +18,13 @@
  *
  * CDDL HEADER END
  */
+
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident	"@(#)Psymtab.c	1.38	05/12/16 SMI"
+#pragma ident	"@(#)Psymtab.c	1.39	06/04/24 SMI"
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -2003,6 +2003,15 @@
 	}
 
 	/*
+	 * Prefer the symbol that doesn't begin with a '$' since compilers and
+	 * other symbol generators often use it as a prefix.
+	 */
+	if (*bname == '$')
+		return (-1);
+	if (*aname == '$')
+		return (1);
+
+	/*
 	 * Prefer the name with fewer leading underscores in the name.
 	 */
 	while (*aname == '_' && *bname == '_') {

==== //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/ctf.c#4 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,11 +19,11 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident	"@(#)ctf.c	1.12	05/06/08 SMI"
+#pragma ident	"@(#)ctf.c	1.13	06/04/20 SMI"
 
 /*
  * Create and parse buffers containing CTF data.
@@ -420,8 +419,7 @@
 		warning("Can't write unknown type %d\n", tp->t_type);
 	}
 
-	debug(3, "Wrote type %d %s\n", tp->t_id,
-	    (tp->t_name ? tp->t_name : "(anon)"));
+	debug(3, "Wrote type %d %s\n", tp->t_id, tdesc_name(tp));
 
 	return (1);
 }
@@ -459,8 +457,15 @@
 }
 
 static ssize_t
+>>>> ORIGINAL ctf.c#1
+compress_buffer(caddr_t buf, size_t n, resbuf_t *rb)
+==== THEIRS ctf.c#2
+compress_buffer(const void *buf, size_t n, void *data)
+==== YOURS ctf.c
 compress_buffer(void *buf, size_t n, void *arg)
+<<<<
 {
+	resbuf_t *rb = (resbuf_t *)data;
 	int rc;
 	resbuf_t *rb = (resbuf_t *) arg;
 
@@ -477,7 +482,13 @@
 			parseterminate("zlib deflate failed: %s", zError(rc));
 	}
 	rb->rb_ptr = (caddr_t)rb->rb_zstr.next_out;
+>>>> ORIGINAL ctf.c#1
+==== THEIRS ctf.c#2
+
+	return (n);
+==== YOURS ctf.c
 	return n;
+<<<<
 }
 
 static void
@@ -527,12 +538,28 @@
 }
 
 static ssize_t
+>>>> ORIGINAL ctf.c#1
+bcopy_data(void *buf, size_t n, caddr_t *posp)
+==== THEIRS ctf.c#2
+bcopy_data(const void *buf, size_t n, void *data)
+==== YOURS ctf.c
 bcopy_data(void *buf, size_t n, void *arg)
+<<<<
 {
+>>>> ORIGINAL ctf.c#1
+==== THEIRS ctf.c#2
+	caddr_t *posp = (caddr_t *)data;
+==== YOURS ctf.c
 	caddr_t *posp = (caddr_t *) arg;
+<<<<
 	bcopy(buf, *posp, n);
 	*posp += n;
+>>>> ORIGINAL ctf.c#1
+==== THEIRS ctf.c#2
+	return (n);
+==== YOURS ctf.c
 	return n;
+<<<<
 }
 
 static caddr_t
@@ -545,11 +572,18 @@
 	    + buf->ctb_strtab.str_size);
 
 	bufpos = outbuf;
-	bcopy_data(h, sizeof (ctf_header_t), &bufpos);
-	bcopy_data(buf->ctb_base, buf->ctb_ptr - buf->ctb_base,
+	(void) bcopy_data(h, sizeof (ctf_header_t), &bufpos);
+	(void) bcopy_data(buf->ctb_base, buf->ctb_ptr - buf->ctb_base,
 	    &bufpos);
+>>>> ORIGINAL ctf.c#1
+	if (strtab_write(&buf->ctb_strtab, (ssize_t (*)())bcopy_data,
+	    &bufpos) < 0)
+==== THEIRS ctf.c#2
+	if (strtab_write(&buf->ctb_strtab, bcopy_data, &bufpos) < 0)
+==== YOURS ctf.c
 	if (strtab_write(&buf->ctb_strtab, bcopy_data,
 	    (void *) &bufpos) < 0)
+<<<<
 		terminate("strtab_write failed\n");
 	*resszp = bufpos - outbuf;
 	return (outbuf);
@@ -571,10 +605,18 @@
 	resbuf.rb_ptr = resbuf.rb_base + sizeof (ctf_header_t);
 
 	compress_start(&resbuf);
-	compress_buffer(buf->ctb_base, buf->ctb_ptr - buf->ctb_base, &resbuf);
+	(void) compress_buffer(buf->ctb_base, buf->ctb_ptr - buf->ctb_base,
+	    &resbuf);
 	compress_flush(&resbuf, Z_FULL_FLUSH);
+>>>> ORIGINAL ctf.c#1
+	if (strtab_write(&buf->ctb_strtab, (ssize_t (*)())compress_buffer,
+	    &resbuf) < 0)
+==== THEIRS ctf.c#2
+	if (strtab_write(&buf->ctb_strtab, compress_buffer, &resbuf) < 0)
+==== YOURS ctf.c
 	if (strtab_write(&buf->ctb_strtab, compress_buffer,
 	    (void *) &resbuf) < 0)
+<<<<
 		terminate("strtab_write failed\n");
 	compress_end(&resbuf);
 
@@ -1137,7 +1179,7 @@
 
 		debug(3, "Resurrected %d %stype %s (%d)\n", tdp->t_type,
 		    (CTF_INFO_ISROOT(ctt->ctt_info) ? "root " : ""),
-		    (tdp->t_name ? tdp->t_name : "(anon)"), tdp->t_id);
+		    tdesc_name(tdp), tdp->t_id);
 	}
 
 	debug(3, "Resurrected %d types (%d were roots)\n", tcnt, iicnt);

==== //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/ctftools.h#2 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,14 +19,14 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
 #ifndef _CTFTOOLS_H
 #define	_CTFTOOLS_H
 
-#pragma ident	"@(#)ctftools.h	1.13	05/06/08 SMI"
+#pragma ident	"@(#)ctftools.h	1.14	06/04/20 SMI"
 
 /*
  * Functions and data structures used in the manipulation of stabs and CTF data
@@ -412,6 +411,7 @@
 tdata_t *tdata_new(void);
 void tdata_free(tdata_t *);
 void tdata_build_hashes(tdata_t *td);
+const char *tdesc_name(tdesc_t *);
 int tdesc_idhash(int, void *);
 int tdesc_idcmp(void *, void *);
 int tdesc_namehash(int, void *);

==== //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/dwarf.c#3 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,11 +19,11 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident	"@(#)dwarf.c	1.4	05/08/26 SMI"
+#pragma ident	"@(#)dwarf.c	1.5	06/04/20 SMI"
 
 /*
  * DWARF to tdata conversion
@@ -755,7 +754,7 @@
 
 	if ((sz = tdesc_size(tdp->t_ardef->ad_contents)) == 0) {
 		debug(3, "unable to resolve array %s (%d) contents %d\n",
-		    (tdp->t_name == NULL ? "(anon)" : tdp->t_name), tdp->t_id,
+		    tdesc_name(tdp), tdp->t_id,
 		    tdp->t_ardef->ad_contents->t_id);
 
 		dw->dw_nunres++;
@@ -780,8 +779,7 @@
 		return (1);
 
 	fprintf(stderr, "Array %d: failed to size contents type %s (%d)\n",
-	    tdp->t_id, (cont->t_name == NULL ? "(anon)" : cont->t_name),
-	    cont->t_id);
+	    tdp->t_id, tdesc_name(cont), cont->t_id);
 
 	return (1);
 }
@@ -884,12 +882,12 @@
 	 * so don't even try.
 	 */
 	if (full == NULL) {
-		terminate("tdp %u: enum %s has no members\n",
-		    tdp->t_id, (tdp->t_name == NULL ? "(anon)" : tdp->t_name));
+		terminate("tdp %u: enum %s has no members\n", tdp->t_id,
+		    tdesc_name(tdp));
 	}
 
 	debug(3, "tdp %u: enum %s redirected to %u\n", tdp->t_id,
-	    (tdp->t_name == NULL ? "(anon)" : tdp->t_name), full->t_id);
+	    tdesc_name(tdp), full->t_id);
 
 	tdp->t_flags |= TDESC_F_RESOLVED;
 
@@ -902,7 +900,7 @@
 	tdesc_t *fwd = arg1, *sou = arg2;
 
 	debug(3, "tdp %u: mapped forward %s to sou %u\n", fwd->t_id,
-	    fwd->t_name, sou->t_id);
+	    tdesc_name(fwd), sou->t_id);
 	fwd->t_tdesc = sou;
 
 	return (0);
@@ -926,7 +924,7 @@
 
 	debug(3, "die %llu: creating %s %s\n", off,
 	    (tdp->t_type == FORWARD ? "forward decl" : typename),
-	    (tdp->t_name == NULL ? "(anon)" : tdp->t_name));
+	    tdesc_name(tdp));
 
 	if (tdp->t_type == FORWARD) {
 		hash_add(dw->dw_fwdhash, tdp);
@@ -1014,13 +1012,12 @@
 	 * change the name.
 	 */
 	if (tdp->t_members == NULL) {
-		char *old = (tdp->t_name == NULL ? "" : tdp->t_name);
+		const char *old = tdesc_name(tdp);
 		size_t newsz = 7 + strlen(old) + 1;
 		char *new = xmalloc(newsz);
 		(void) snprintf(new, newsz, "orphan %s", old);
 
-		debug(3, "die %llu: worked around %s %s\n", off, typename,
-		    (tdp->t_name == NULL ? "<anon>" : tdp->t_name));
+		debug(3, "die %llu: worked around %s %s\n", off, typename, old);
 
 		if (tdp->t_name != NULL)
 			free(tdp->t_name);
@@ -1061,7 +1058,7 @@
 	if (tdp->t_flags & TDESC_F_RESOLVED)
 		return (1);
 
-	debug(3, "resolving sou %s\n", tdp->t_name);
+	debug(3, "resolving sou %s\n", tdesc_name(tdp));
 
 	for (ml = tdp->t_members; ml != NULL; ml = ml->ml_next) {
 		if (ml->ml_size == 0) {
@@ -1111,8 +1108,7 @@
 		if (ml->ml_size == 0) {
 			fprintf(stderr, "%s %d: failed to size member %s of "
 			    "type %s (%d)\n", typename, tdp->t_id, ml->ml_name,
-			    (ml->ml_type->t_name == NULL ? "(anon)" :
-			    ml->ml_type->t_name), ml->ml_type->t_id);
+			    tdesc_name(ml->ml_type), ml->ml_type->t_id);
 		}
 	}
 
@@ -1399,7 +1395,7 @@
 	if ((intr = die_base_name_parse(tdp->t_name, &new)) != NULL) {
 		/* Found it.  We'll use the parsed version */
 		debug(3, "die %llu: name \"%s\" remapped to \"%s\"\n", off,
-		    tdp->t_name, new);
+		    tdesc_name(tdp), new);
 
 		free(tdp->t_name);
 		tdp->t_name = new;
@@ -1409,7 +1405,7 @@
 		 * based on the DWARF data.
 		 */
 		debug(3, "die %llu: using dwarf data for base \"%s\"\n", off,
-		    tdp->t_name);
+		    tdesc_name(tdp));
 
 		intr = die_base_from_dwarf(dw, base, off, sz);
 	}
@@ -1607,7 +1603,8 @@
 		return (1);
 
 	if (fwd->t_tdesc != NULL) {
-		debug(3, "tdp %u: unforwarded %s\n", fwd->t_id, fwd->t_name);
+		debug(3, "tdp %u: unforwarded %s\n", fwd->t_id,
+		    tdesc_name(fwd));
 		*fwdp = fwd->t_tdesc;
 	}
 

==== //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/input.c#3 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,11 +19,11 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident	"@(#)input.c	1.7	05/06/08 SMI"
+#pragma ident	"@(#)input.c	1.8	06/04/21 SMI"
 
 /*
  * Routines for retrieving CTF data from a .SUNW_ctf ELF section
@@ -40,6 +39,7 @@
 
 #include "ctftools.h"
 #include "memory.h"
+#include "symbol.h"
 
 typedef int read_cb_f(tdata_t *, char *, void *);
 
@@ -387,6 +387,7 @@
 symit_next(symit_data_t *si, int type)
 {
 	GElf_Sym sym;
+	int check_sym = (type == STT_OBJECT || type == STT_FUNC);
 
 	for (; si->si_next < si->si_nument; si->si_next++) {
 		gelf_getsym(si->si_symd, si->si_next, &si->si_cursym);
@@ -400,6 +401,9 @@
 		    sym.st_shndx == SHN_UNDEF)
 			continue;
 
+		if (check_sym && ignore_symbol(&sym, si->si_curname))
+			continue;
+
 		si->si_next++;
 
 		return (&si->si_cursym);

==== //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/merge.c#2 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,11 +19,11 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident	"@(#)merge.c	1.11	05/06/08 SMI"
+#pragma ident	"@(#)merge.c	1.12	06/04/20 SMI"
 
 /*
  * This file contains routines that merge one tdata_t tree, called the child,
@@ -453,8 +452,7 @@
 	ed.ed_node = ctdp;
 	ed.ed_selfuniquify = 0;
 
-	debug(3, "map_td_tree_post on %d %s\n", ctdp->t_id,
-	    ctdp->t_name == NULL ? "(anon)" : ctdp->t_name);
+	debug(3, "map_td_tree_post on %d %s\n", ctdp->t_id, tdesc_name(ctdp));
 
 	if (hash_find_iter(mcd->md_parent->td_layouthash, ctdp,
 	    equiv_cb, &ed) < 0) {
@@ -479,7 +477,7 @@
 		 * means that the "name" hash function is broken.
 		 */
 		terminate("Second pass for %d (%s) == %d\n", ctdp->t_id,
-		    (ctdp->t_name ? ctdp->t_name : "(anon)"), ed.ed_tgt->t_id);
+		    tdesc_name(ctdp), ed.ed_tgt->t_id);
 	} else {
 		int id = mcd->md_tgt->td_nextid++;
 
@@ -521,8 +519,7 @@
 		 * function is broken.
 		 */
 		terminate("Self-unique second pass for %d (%s) == %d\n",
-		    ctdp->t_id, (ctdp->t_name ? ctdp->t_name : "(anon)"),
-		    ed.ed_tgt->t_id);
+		    ctdp->t_id, tdesc_name(ctdp), ed.ed_tgt->t_id);
 	} else {
 		int id = mcd->md_tgt->td_nextid++;
 
@@ -878,8 +875,7 @@
 	if (!alist_find(map, (void *)fwd, (void **)&defn))
 		return (0);
 
-	debug(3, "Redirecting an edge to %s\n",
-	    (defn->t_name ? defn->t_name : "(anon)"));
+	debug(3, "Redirecting an edge to %s\n", tdesc_name(defn));
 
 	*fwdp = defn;
 
@@ -922,11 +918,10 @@
 	if (!hash_find(rmd->rmd_tgt->td_idhash, (void *)&template,
 	    (void *)&defn)) {
 		terminate("Couldn't unforward %d (%s)\n", defnid,
-		    (defn->t_name ? defn->t_name : "(anon)"));
+		    tdesc_name(defn));
 	}
 
-	debug(3, "Forward map: resolved %d to %s\n",
-	    defnid, (defn->t_name ? defn->t_name : "(anon)"));
+	debug(3, "Forward map: resolved %d to %s\n", defnid, tdesc_name(defn));
 
 	alist_add(rmd->rmd_map, (void *)fwd, (void *)defn);
 
@@ -993,8 +988,7 @@
 	    (void *)&template, NULL) == 0);
 
 	debug(3, "trying to conjure %d %s (%d) as %d\n",
-	    oldtdp->t_type, (oldtdp->t_name ? oldtdp->t_name : "(anon)"),
-	    oldtdp->t_id, newid);
+	    oldtdp->t_type, tdesc_name(oldtdp), oldtdp->t_id, newid);
 
 	if ((newtdp = tdesc_ops[oldtdp->t_type].conjure(oldtdp, newid,
 	    mcd)) == NULL)
@@ -1032,8 +1026,7 @@
 	tdesc_t **tdpp = data;
 	merge_cb_data_t *mcd = arg;
 
-	debug(3, "Remapping %s (%d)\n",
-	    ((*tdpp)->t_name ? (*tdpp)->t_name : "(anon)"), (*tdpp)->t_id);
+	debug(3, "Remapping %s (%d)\n", tdesc_name(*tdpp), (*tdpp)->t_id);
 
 	if (!remap_node(tdpp, *tdpp, -1, NULL, mcd))
 		return (0);

==== //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/output.c#3 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,11 +19,11 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident	"@(#)output.c	1.13	05/06/08 SMI"
+#pragma ident	"@(#)output.c	1.14	06/04/20 SMI"
 
 /*
  * Routines for preparing tdata trees for conversion into CTF data, and
@@ -708,7 +707,7 @@
 	if ((elf = elf_begin(fd, ELF_C_READ, NULL)) == NULL)
 		elfterminate(curname, "Cannot re-read");
 
-	if ((tfd = open(newname, O_WRONLY | O_CREAT | O_TRUNC, st.st_mode)) < 0)
+	if ((tfd = open(newname, O_RDWR | O_CREAT | O_TRUNC, st.st_mode)) < 0)
 		terminate("Cannot open temp file %s for writing", newname);
 	if ((telf = elf_begin(tfd, ELF_C_WRITE, NULL)) == NULL)
 		elfterminate(curname, "Cannot write");

==== //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/st_parse.c#2 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,11 +19,11 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident	"@(#)st_parse.c	1.12	05/06/08 SMI"
+#pragma ident	"@(#)st_parse.c	1.13	06/04/20 SMI"
 
 /*
  * This file is a sewer.
@@ -372,8 +371,7 @@
 				tdp->t_tdesc = rtdp;
 				addhash(tdp, tid); /* for *(x,y) types */
 				parse_debug(3, NULL, "    %s defined as %s(%d)",
-				    idp->ii_name, (rtdp->t_name != NULL) ?
-				    rtdp->t_name : "anon", tid);
+				    idp->ii_name, tdesc_name(rtdp), tid);
 			} else if (rtdp->t_name == NULL) {
 				rtdp->t_name = xstrdup(idp->ii_name);
 				addhash(rtdp, tid);
@@ -561,11 +559,9 @@
 		addhash(tdp, h);
 	else if (otdp != tdp) {
 		warning("duplicate entry\n");
-		warning("  old: %s %d (%d,%d)\n",
-		    otdp->t_name ? otdp->t_name : "(anon)",
+		warning("  old: %s %d (%d,%d)\n", tdesc_name(otdp),
 		    otdp->t_type, TYPEFILE(otdp->t_id), TYPENUM(otdp->t_id));
-		warning("  new: %s %d (%d,%d)\n",
-		    tdp->t_name ? tdp->t_name : "(anon)",
+		warning("  new: %s %d (%d,%d)\n", tdesc_name(tdp),
 		    tdp->t_type, TYPEFILE(tdp->t_id), TYPENUM(tdp->t_id));
 		return (-1);
 	}
@@ -912,8 +908,7 @@
 		cp += 3;
 	}
 
-	parse_debug(3, cp, "soudef: %s size=%d",
-	    (*rtdp)->t_name ? (*rtdp)->t_name : "(anonsou)",
+	parse_debug(3, cp, "soudef: %s size=%d", tdesc_name(*rtdp),
 	    (*rtdp)->t_size);
 
 	prev = &((*rtdp)->t_members);
@@ -954,8 +949,7 @@
 			}
 		} else {
 			parse_debug(3, NULL, "      refers to %s (%d, %s)",
-			    w ? w : "anon", h,
-			    tdp->t_name ? tdp->t_name : "anon");
+			    w ? w : "anon", h, tdesc_name(tdp));
 		}
 
 		cp = offsize(cp, mlp);
@@ -964,7 +958,7 @@
 		if (itdp->t_type == INTRINSIC) {
 			if (mlp->ml_size != itdp->t_intr->intr_nbits) {
 				parse_debug(4, cp, "making %d bit intrinsic "
-				    "from %s", mlp->ml_size, itdp->t_name);
+				    "from %s", mlp->ml_size, tdesc_name(itdp));
 				mlp->ml_type = bitintrinsic(itdp, mlp->ml_size);
 			} else
 				mlp->ml_type = tdp;
@@ -1037,8 +1031,7 @@
 		cp = name(cp, &w);
 		elp->el_name = w;
 		cp = number(cp, &elp->el_number);
-		parse_debug(3, NULL, "enum %s: %s=%d",
-		    (*rtdp)->t_name ? (*rtdp)->t_name : "(anon enum)",
+		parse_debug(3, NULL, "enum %s: %s=%d", tdesc_name(*rtdp),
 		    elp->el_name, elp->el_number);
 		prev = &elp->el_next;
 		if (*cp++ != ',')
@@ -1171,11 +1164,11 @@
 		case INTRINSIC:
 			if (ml->ml_size != tdp->t_intr->intr_nbits) {
 				debug(3, "making %d bit intrinsic from %s",
-				    ml->ml_size, tdp->t_name);
+				    ml->ml_size, tdesc_name(tdp));
 				ml->ml_type = bitintrinsic(tdp, ml->ml_size);
 			} else {
 				debug(3, "using existing %d bit %s intrinsic",
-				    ml->ml_size, tdp->t_name);
+				    ml->ml_size, tdesc_name(tdp));
 				ml->ml_type = tdp;
 			}
 			return (1);

==== //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/stabs.c#2 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,11 +19,11 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident	"@(#)stabs.c	1.9	05/06/08 SMI"
+#pragma ident	"@(#)stabs.c	1.10	06/04/20 SMI"
 
 /*
  * Routines used to read stabs data from a file, and to build a tdata structure
@@ -64,8 +63,7 @@
 {
 	tdesc_t *new;
 
-	debug(3, "Trying to resolve %s (%d)\n",
-	    (node->t_name ? node->t_name : "(anon)"), node->t_id);
+	debug(3, "Trying to resolve %s (%d)\n", tdesc_name(node), node->t_id);
 	new = lookup(node->t_id);
 
 	if (new == NULL) {
@@ -85,8 +83,7 @@
 {
 	tdesc_t *new = lookupname(node->t_name);
 
-	debug(3, "Trying to unforward %s (%d)\n",
-	    (node->t_name ? node->t_name : "(anon)"), node->t_id);
+	debug(3, "Trying to unforward %s (%d)\n", tdesc_name(node), node->t_id);
 
 	if (!new || (new->t_type != STRUCT && new->t_type != UNION))
 		return (0);

==== //depot/projects/dtrace/src/contrib/opensolaris/tools/ctf/cvt/tdata.c#2 (text) ====

@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,11 +19,11 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200605160256.k4G2uhRO076654>