svn commit: r418513 - in head/devel: . dwarves dwarves/files
Conrad E. Meyer
cem at FreeBSD.org
Thu Jul 14 05:31:49 UTC 2016
Author: cem (src committer)
Date: Thu Jul 14 05:31:46 2016
New Revision: 418513
URL: https://svnweb.freebsd.org/changeset/ports/418513
Log:
New port: devel/dwarves
Dwarves is a collection of debuginfo manipulating and inspecting libraries and
programs, including the popular 'pahole' tool.
WWW: https://acmel.wordpress.com/category/kernel-hacking/
Git: http://repo.or.cz/dwarves.git (Github repo is stale)
Sponsored by: EMC / Isilon Storage Division
Added:
head/devel/dwarves/
head/devel/dwarves/Makefile (contents, props changed)
head/devel/dwarves/distinfo (contents, props changed)
head/devel/dwarves/files/
head/devel/dwarves/files/patch-CMakeLists.txt (contents, props changed)
head/devel/dwarves/files/patch-ctf__loader.c (contents, props changed)
head/devel/dwarves/files/patch-dtagnames.c (contents, props changed)
head/devel/dwarves/files/patch-dutil.h (contents, props changed)
head/devel/dwarves/files/patch-dwarves.c (contents, props changed)
head/devel/dwarves/files/patch-dwarves__fprintf.c (contents, props changed)
head/devel/dwarves/files/patch-elf__symtab.c (contents, props changed)
head/devel/dwarves/files/patch-exitfail.h (contents, props changed)
head/devel/dwarves/files/patch-libctf.c (contents, props changed)
head/devel/dwarves/files/patch-pdwtags.c (contents, props changed)
head/devel/dwarves/files/patch-pglobal.c (contents, props changed)
head/devel/dwarves/files/patch-prefcnt.c (contents, props changed)
head/devel/dwarves/files/patch-strings.c (contents, props changed)
head/devel/dwarves/pkg-descr (contents, props changed)
head/devel/dwarves/pkg-plist (contents, props changed)
Modified:
head/devel/Makefile
Modified: head/devel/Makefile
==============================================================================
--- head/devel/Makefile Thu Jul 14 05:31:03 2016 (r418512)
+++ head/devel/Makefile Thu Jul 14 05:31:46 2016 (r418513)
@@ -408,6 +408,7 @@
SUBDIR += dulwich
SUBDIR += duplo
SUBDIR += dwarfdump
+ SUBDIR += dwarves
SUBDIR += dxa65
SUBDIR += dyncall
SUBDIR += e00compr
Added: head/devel/dwarves/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/Makefile Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,40 @@
+# Created by: Conrad Meyer <cem at FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= dwarves
+PORTVERSION= 1.10
+CATEGORIES= devel
+MASTER_SITES= https://fedorapeople.org/~acme/dwarves/
+# http://fedorapeople.org/~acme/dwarves/%{name}-%{version}.tar.bz2
+# git: http://repo.or.cz/dwarves.git
+# ML: http://news.gmane.org/gmane.comp.debugging.dwarves
+
+MAINTAINER= cem at FreeBSD.org
+COMMENT= Debugging Information Manipulation Tools
+
+LICENSE= GPLv2
+LICENSE_FILE_GPLv2= $(WRKSRC)/COPYING
+
+LIB_DEPENDS= libargp.so:devel/argp-standalone \
+ libdw.so:devel/elfutils
+BUILD_DEPENDS= cmake>=0:devel/cmake \
+ gnulib>=0:devel/gnulib
+
+# Source is a tarbomb:
+WRKSRC= $(WRKDIR)
+
+USES= cmake:outsource localbase tar:bzip2
+USE_LDCONFIG= yes
+
+#CMAKE_VERBOSE= 1
+
+post-patch:
+ @${CP} -a \
+ $(LOCALBASE)/share/gnulib/lib/gettext.h \
+ $(LOCALBASE)/share/gnulib/lib/obstack.c \
+ $(LOCALBASE)/share/gnulib/lib/obstack.h \
+ $(WRKSRC)/
+ @${REINPLACE_CMD} -e 's|_GL_ATTRIBUTE_PURE|__attribute__((__pure__))|g' \
+ $(WRKSRC)/obstack.h $(WRKSRC)/obstack.c
+
+.include <bsd.port.mk>
Added: head/devel/dwarves/distinfo
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/distinfo Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,3 @@
+TIMESTAMP = 1468468005
+SHA256 (dwarves-1.10.tar.bz2) = 557306e1b58b475f689f44095ec62388877b1a8dd06174f97e309994c15bcc14
+SIZE (dwarves-1.10.tar.bz2) = 96919
Added: head/devel/dwarves/files/patch-CMakeLists.txt
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-CMakeLists.txt Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,66 @@
+--- CMakeLists.txt.orig 2012-03-20 16:17:25 UTC
++++ CMakeLists.txt
+@@ -31,11 +31,14 @@ add_definitions(-D_GNU_SOURCE -DDWARVES_
+ find_package(DWARF REQUIRED)
+ find_package(ZLIB REQUIRED)
+
+-_set_fancy(LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}${CMAKE_INSTALL_PREFIX}/${__LIB}" "libdir")
++# For argp-standalone
++find_library(ARGP argp ${LOCALBASE}/lib)
++
++_set_fancy(LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}${CMAKE_INSTALL_PREFIX}/lib${__LIB}" "libdir")
+
+ set(dwarves_LIB_SRCS dwarves.c dwarves_fprintf.c gobuffer strings
+ ctf_encoder.c ctf_loader.c libctf.c dwarf_loader.c
+- dutil.c elf_symtab.c rbtree.c)
++ dutil.c elf_symtab.c rbtree.c obstack.c)
+ add_library(dwarves SHARED ${dwarves_LIB_SRCS})
+ set_target_properties(dwarves PROPERTIES VERSION 1.0.0 SOVERSION 1)
+ set_target_properties(dwarves PROPERTIES LINK_INTERFACE_LIBRARIES "")
+@@ -53,11 +56,11 @@ target_link_libraries(dwarves_reorganize
+
+ set(codiff_SRCS codiff.c)
+ add_executable(codiff ${codiff_SRCS})
+-target_link_libraries(codiff dwarves)
++target_link_libraries(codiff dwarves ${ARGP})
+
+ set(ctracer_SRCS ctracer.c)
+ add_executable(ctracer ${ctracer_SRCS})
+-target_link_libraries(ctracer dwarves dwarves_emit dwarves_reorganize ${ELF_LIBRARY})
++target_link_libraries(ctracer dwarves dwarves_emit dwarves_reorganize ${ELF_LIBRARY} ${ARGP})
+
+ set(dtagnames_SRCS dtagnames.c)
+ add_executable(dtagnames ${dtagnames_SRCS})
+@@ -65,19 +68,19 @@ target_link_libraries(dtagnames dwarves)
+
+ set(pahole_SRCS pahole.c)
+ add_executable(pahole ${pahole_SRCS})
+-target_link_libraries(pahole dwarves dwarves_reorganize)
++target_link_libraries(pahole dwarves dwarves_reorganize ${ARGP})
+
+ set(pdwtags_SRCS pdwtags.c)
+ add_executable(pdwtags ${pdwtags_SRCS})
+-target_link_libraries(pdwtags dwarves)
++target_link_libraries(pdwtags dwarves ${ARGP})
+
+ set(pglobal_SRCS pglobal.c)
+ add_executable(pglobal ${pglobal_SRCS})
+-target_link_libraries(pglobal dwarves)
++target_link_libraries(pglobal dwarves ${ARGP})
+
+ set(pfunct_SRCS pfunct.c )
+ add_executable(pfunct ${pfunct_SRCS})
+-target_link_libraries(pfunct dwarves dwarves_emit ${ELF_LIBRARY})
++target_link_libraries(pfunct dwarves dwarves_emit ${ELF_LIBRARY} ${ARGP})
+
+ set(prefcnt_SRCS prefcnt.c)
+ add_executable(prefcnt ${prefcnt_SRCS})
+@@ -89,7 +92,7 @@ target_link_libraries(scncopy dwarves ${
+
+ set(syscse_SRCS syscse.c)
+ add_executable(syscse ${syscse_SRCS})
+-target_link_libraries(syscse dwarves)
++target_link_libraries(syscse dwarves ${ARGP})
+
+ install(TARGETS codiff ctracer dtagnames pahole pdwtags
+ pfunct pglobal prefcnt scncopy syscse RUNTIME DESTINATION
Added: head/devel/dwarves/files/patch-ctf__loader.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-ctf__loader.c Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,10 @@
+--- ctf_loader.c.orig 2012-03-20 16:17:25 UTC
++++ ctf_loader.c
+@@ -11,7 +11,6 @@
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <stddef.h>
+-#include <malloc.h>
+ #include <string.h>
+ #include <limits.h>
+ #include <libgen.h>
Added: head/devel/dwarves/files/patch-dtagnames.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-dtagnames.c Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,37 @@
+--- dtagnames.c.orig 2012-03-20 16:17:25 UTC
++++ dtagnames.c
+@@ -9,16 +9,33 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <malloc.h>
++
++/* For mallctl */
++#include <err.h>
++#include <errno.h>
++#include <malloc_np.h>
+
+ #include "dwarves.h"
+ #include "dutil.h"
+
+ static void print_malloc_stats(void)
+ {
++#if 0
+ struct mallinfo m = mallinfo();
+
+ fprintf(stderr, "size: %u\n", m.uordblks);
++#else
++ size_t allocated, olen;
++ int rc;
++
++ olen = sizeof(allocated);
++ rc = mallctl("stats.allocated", &allocated, &olen, NULL, 0);
++ if (rc != 0) {
++ errno = rc;
++ err(1, "mallctl stats.allocated");
++ }
++ fprintf(stderr, "size: %zu\n", allocated);
++#endif
+ }
+
+ static int class__tag_name(struct tag *self, struct cu *cu __unused,
Added: head/devel/dwarves/files/patch-dutil.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-dutil.h Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,12 @@
+--- dutil.h.orig 2012-03-20 16:17:25 UTC
++++ dutil.h
+@@ -25,7 +25,9 @@
+ #define __pure __attribute__ ((pure))
+ #endif
+
++#ifndef roundup
+ #define roundup(x,y) ((((x) + ((y) - 1)) / (y)) * (y))
++#endif
+
+ static inline __attribute__((const)) bool is_power_of_2(unsigned long n)
+ {
Added: head/devel/dwarves/files/patch-dwarves.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-dwarves.c Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,11 @@
+--- dwarves.c.orig 2012-03-20 16:17:25 UTC
++++ dwarves.c
+@@ -16,6 +16,8 @@
+ #include <fcntl.h>
+ #include <fnmatch.h>
+ #include <libelf.h>
++/* For PATH_MAX */
++#include <limits.h>
+ #include <search.h>
+ #include <stdio.h>
+ #include <stdlib.h>
Added: head/devel/dwarves/files/patch-dwarves__fprintf.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-dwarves__fprintf.c Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,35 @@
+--- dwarves_fprintf.c.orig 2012-03-20 16:18:48 UTC
++++ dwarves_fprintf.c
+@@ -9,6 +9,9 @@
+ published by the Free Software Foundation.
+ */
+
++/* For CACHE_LINE_SIZE */
++#include <sys/param.h>
++
+ #include <dwarf.h>
+ #include <errno.h>
+ #include <stdio.h>
+@@ -74,7 +77,6 @@ static const char *dwarf_tag_names[] = {
+ [DW_TAG_unspecified_type] = "unspecified_type",
+ [DW_TAG_partial_unit] = "partial_unit",
+ [DW_TAG_imported_unit] = "imported_unit",
+- [DW_TAG_mutable_type] = "mutable_type",
+ [DW_TAG_condition] = "condition",
+ [DW_TAG_shared_type] = "shared_type",
+ #ifdef STB_GNU_UNIQUE
+@@ -1664,7 +1666,14 @@ void cus__print_error_msg(const char *pr
+ void dwarves__fprintf_init(uint16_t user_cacheline_size)
+ {
+ if (user_cacheline_size == 0) {
++#if 0
+ long sys_cacheline_size = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
++#else
++ /*
++ * CEM: Ideally we could get this programmatically.
++ */
++ long sys_cacheline_size = CACHE_LINE_SIZE;
++#endif
+
+ if (sys_cacheline_size > 0)
+ cacheline_size = sys_cacheline_size;
Added: head/devel/dwarves/files/patch-elf__symtab.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-elf__symtab.c Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,12 @@
+--- elf_symtab.c.orig 2012-03-20 16:17:25 UTC
++++ elf_symtab.c
+@@ -7,8 +7,8 @@
+ published by the Free Software Foundation.
+ */
+
+-#include <malloc.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <string.h>
+
+ #include "dutil.h"
Added: head/devel/dwarves/files/patch-exitfail.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-exitfail.h Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,5 @@
+--- exitfail.h.orig 2016-07-14 04:42:52 UTC
++++ exitfail.h
+@@ -0,0 +1,2 @@
++#pragma once
++#define exit_failure EXIT_FAILURE
Added: head/devel/dwarves/files/patch-libctf.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-libctf.c Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,12 @@
+--- libctf.c.orig 2012-03-20 16:17:25 UTC
++++ libctf.c
+@@ -1,7 +1,8 @@
++#include <sys/stat.h>
++
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <limits.h>
+-#include <malloc.h>
+ #include <errno.h>
+ #include <stdio.h>
+ #include <stdlib.h>
Added: head/devel/dwarves/files/patch-pdwtags.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-pdwtags.c Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,10 @@
+--- pdwtags.c.orig 2012-05-14 22:41:11 UTC
++++ pdwtags.c
+@@ -9,7 +9,6 @@
+ #include <argp.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <malloc.h>
+
+ #include "dwarves.h"
+ #include "dutil.h"
Added: head/devel/dwarves/files/patch-pglobal.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-pglobal.c Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,38 @@
+--- pglobal.c.orig 2012-03-20 16:17:25 UTC
++++ pglobal.c
+@@ -8,7 +8,6 @@
+ */
+
+ #include <argp.h>
+-#include <malloc.h>
+ #include <search.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -92,7 +91,7 @@ static void extvar__add(const struct var
+ nodep = tsearch(gvar, &tree, extvar__compare);
+ if (nodep == NULL)
+ oom("tsearch");
+- else if (*nodep != gvar)
++ else if (*nodep != gvar) {
+ if (gvar->var->declaration) {
+ gvar->next = (*nodep)->next;
+ (*nodep)->next = gvar;
+@@ -100,6 +99,7 @@ static void extvar__add(const struct var
+ gvar->next = *nodep;
+ *nodep = gvar;
+ }
++ }
+ }
+ }
+
+@@ -313,7 +313,10 @@ int main(int argc, char *argv[])
+ twalk(tree, function_action__walk);
+ }
+
++#if 0
++ /* Our search.h doesn't implement tdestroy; leak for now. */
+ tdestroy(tree, free_node);
++#endif
+ rc = EXIT_SUCCESS;
+ out_cus_delete:
+ cus__delete(cus);
Added: head/devel/dwarves/files/patch-prefcnt.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-prefcnt.c Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,16 @@
+--- prefcnt.c.orig 2012-03-20 16:17:25 UTC
++++ prefcnt.c
+@@ -66,9 +66,11 @@ static void refcnt_tag(struct tag *tag,
+
+ tag->visited = 1;
+
+- if (tag__is_struct(tag) || tag__is_union(tag))
+- type__for_each_member(tag__type(tag), member)
++ if (tag__is_struct(tag) || tag__is_union(tag)) {
++ type__for_each_member(tag__type(tag), member) {
+ refcnt_member(member, cu);
++ }
++ }
+ }
+
+ static void refcnt_lexblock(const struct lexblock *lexblock, const struct cu *cu)
Added: head/devel/dwarves/files/patch-strings.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/files/patch-strings.c Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,13 @@
+--- strings.c.orig 2012-03-20 16:17:25 UTC
++++ strings.c
+@@ -39,7 +39,10 @@ void strings__delete(struct strings *sel
+ {
+ if (self == NULL)
+ return;
++#if 0
++ /* Our search.h doesn't implement tdestroy; leak for now. */
+ tdestroy(self->tree, do_nothing);
++#endif
+ __gobuffer__delete(&self->gb);
+ free(self);
+ }
Added: head/devel/dwarves/pkg-descr
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/pkg-descr Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,18 @@
+Dwarves is a set of tools that use the debugging information inserted in ELF
+binaries by compilers such as GCC, used by well known debuggers such as GDB,
+and more recent ones such as systemtap.
+
+Utilities in the dwarves suite include pahole, that can be used to find
+alignment holes in structs and classes in languages such as C, C++, but not
+limited to these.
+
+It also extracts other information such as CPU cacheline alignment, helping
+pack those structures to achieve more cache hits.
+
+A diff like tool, codiff can be used to compare the effects changes in source
+code generate on the resulting binaries.
+
+Another tool is pfunct, that can be used to find all sorts of information about
+functions, inlines, decisions made by the compiler about inlining, etc.
+
+WWW: http://acmel.wordpress.com/
Added: head/devel/dwarves/pkg-plist
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/dwarves/pkg-plist Thu Jul 14 05:31:46 2016 (r418513)
@@ -0,0 +1,34 @@
+bin/codiff
+bin/ctracer
+bin/dtagnames
+bin/ostra-cg
+bin/pahole
+bin/pdwtags
+bin/pfunct
+bin/pglobal
+bin/prefcnt
+bin/scncopy
+bin/syscse
+include/dwarves/dutil.h
+include/dwarves/dwarves.h
+include/dwarves/dwarves_emit.h
+include/dwarves/dwarves_reorganize.h
+include/dwarves/gobuffer.h
+include/dwarves/list.h
+include/dwarves/rbtree.h
+include/dwarves/strings.h
+lib/libdwarves.so
+lib/libdwarves.so.1
+lib/libdwarves.so.1.0.0
+lib/libdwarves_emit.so
+lib/libdwarves_emit.so.1
+lib/libdwarves_emit.so.1.0.0
+lib/libdwarves_reorganize.so
+lib/libdwarves_reorganize.so.1
+lib/libdwarves_reorganize.so.1.0.0
+%%DATADIR%%/runtime/Makefile
+%%DATADIR%%/runtime/ctracer_relay.c
+%%DATADIR%%/runtime/ctracer_relay.h
+%%DATADIR%%/runtime/linux.blacklist.cu
+%%DATADIR%%/runtime/python/ostra.py
+share/man/man1/pahole.1
More information about the svn-ports-all
mailing list