Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Aug 2013 16:57:56 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r255033 - head/contrib/libexecinfo
Message-ID:  <201308291657.r7TGvu5c052696@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Thu Aug 29 16:57:55 2013
New Revision: 255033
URL: http://svnweb.freebsd.org/changeset/base/255033

Log:
  Update to 2013-08-29 NetBSD libexecinfo snapshot
  
  This adds my patch to use the kern.proc.pathname sysctl instead of
  relying on procfs(5).

Modified:
  head/contrib/libexecinfo/backtrace.3
  head/contrib/libexecinfo/backtrace.c
  head/contrib/libexecinfo/symtab.c
Directory Properties:
  head/contrib/libexecinfo/   (props changed)

Modified: head/contrib/libexecinfo/backtrace.3
==============================================================================
--- head/contrib/libexecinfo/backtrace.3	Thu Aug 29 16:41:40 2013	(r255032)
+++ head/contrib/libexecinfo/backtrace.3	Thu Aug 29 16:57:55 2013	(r255033)
@@ -1,4 +1,4 @@
-.\"	$NetBSD: backtrace.3,v 1.4 2012/06/10 00:24:36 christos Exp $
+.\"	$NetBSD: backtrace.3,v 1.5 2013/08/22 17:08:43 christos Exp $
 .\"	$FreeBSD$
 .\"
 .\" Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -152,10 +152,4 @@ The Linux versions of the functions (the
 instead of
 .Ft size_t
 arguments.
-.It
-The
-.Fn backtrace_symbols
-functions currently rely on
-.Xr procfs 5
-to locate the executable.
 .El

Modified: head/contrib/libexecinfo/backtrace.c
==============================================================================
--- head/contrib/libexecinfo/backtrace.c	Thu Aug 29 16:41:40 2013	(r255032)
+++ head/contrib/libexecinfo/backtrace.c	Thu Aug 29 16:57:55 2013	(r255033)
@@ -1,4 +1,4 @@
-/*	$NetBSD: backtrace.c,v 1.2 2012/07/09 03:11:59 christos Exp $	*/
+/*	$NetBSD: backtrace.c,v 1.3 2013/08/29 14:58:56 christos Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: backtrace.c,v 1.2 2012/07/09 03:11:59 christos Exp $");
+__RCSID("$NetBSD: backtrace.c,v 1.3 2013/08/29 14:58:56 christos Exp $");
 
 #include <sys/param.h>
 #include <assert.h>
@@ -51,9 +51,29 @@ __RCSID("$NetBSD: backtrace.c,v 1.2 2012
 #ifdef __linux__
 #define SELF	"/proc/self/exe"
 #else
+#include <sys/sysctl.h>
 #define SELF	"/proc/curproc/file"
 #endif
 
+static int
+open_self(int flags)
+{
+	const char *pathname = SELF;
+#ifdef KERN_PROC_PATHNAME
+	static const int name[] = {
+		CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1,
+	};
+	char path[MAXPATHLEN];
+	size_t len;
+
+	len = sizeof(path);
+	if (sysctl(name, 4, path, &len, NULL, 0) != -1)
+		pathname = path;
+#endif
+	return open(pathname, flags);
+}
+
+
 static int __printflike(4, 5)
 rasprintf(char **buf, size_t *bufsiz, size_t offs, const char *fmt, ...)
 {
@@ -163,7 +183,7 @@ backtrace_symbols_fmt(void *const *trace
 	symtab_t *st;
 	int fd;
 
-	if ((fd = open(SELF, O_RDONLY)) != -1)
+	if ((fd = open_self(O_RDONLY)) != -1)
 		st = symtab_create(fd, -1, STT_FUNC);
 	else
 		st = NULL;

Modified: head/contrib/libexecinfo/symtab.c
==============================================================================
--- head/contrib/libexecinfo/symtab.c	Thu Aug 29 16:41:40 2013	(r255032)
+++ head/contrib/libexecinfo/symtab.c	Thu Aug 29 16:57:55 2013	(r255033)
@@ -1,4 +1,4 @@
-/*	$NetBSD: symtab.c,v 1.1 2012/05/26 22:02:29 christos Exp $	*/
+/*	$NetBSD: symtab.c,v 1.2 2013/08/29 15:01:57 christos Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -29,12 +29,12 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: symtab.c,v 1.1 2012/05/26 22:02:29 christos Exp $");
+__RCSID("$NetBSD: symtab.c,v 1.2 2013/08/29 15:01:57 christos Exp $");
 
 #include <stdlib.h>
 #include <stdio.h>
-#include <stdint.h>
 #include <string.h>
+#include <stdint.h>
 #include <err.h>
 #include <dlfcn.h>
 



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