
On 08/09/2012 01:43 AM, Nick Mathewson wrote:
On Wed, Aug 8, 2012 at 7:09 PM, Jordi Espasa Clofent <jespasac@minibofh.org> wrote:
Here is the log:
===> Installing for tor-0.2.2.37 ===> tor-0.2.2.37 depends on file: /usr/local/lib/libcrypto.so.7 - found ===> tor-0.2.2.37 depends on shared library: event-2.0 - found ===> tor-0.2.2.37 depends on shared library: tcmalloc - found
So here's the line that makes Tor:
cc -O2 -pipe -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -fstack-protector-all -fwrapv -fPIE -Wstack-protector --param ssp-buffer-size=1 -Wall -fno-strict-aliasing -L/usr/local/lib -L/usr/local/lib/event2 -rpath=/usr/local/lib -pie -Wl,-z,relro -Wl,-z,now -o tor tor_main.o ./libtor.a ../common/libor.a ../common/libor-crypto.a ../common/libor-event.a -lz -lm -levent-2.0 -lssl -lcrypto -pthread
and yeah, there's no tcmalloc there.
Nice. Maybe we're skipping something obvious, because I remember perfectly that google-perftools package was installed when I configure the port to use tcmalloc. Still, it seems not using it at all.
This is a little strange; when I try it with Tor master, I get (removing my pile of warning options):
gcc -g -O2 -D_FORTIFY_SOURCE=2 -fstack-protector-all -Wstack-protector -fwrapv -fPIE -Wall -fno-strict-aliasing -ltcmalloc -pie -z relro -z now -o tor tor_main.o ./libtor.a ../common/libor.a ../common/libor-crypto.a ../common/libor-event.a -lz -lm -levent -lssl -lcrypto -lpthread -lrt -ldl
[...]
Is plain to see the script is checking if the tcmalloc is there, but more than that... I cannot see the compiler itself is calling the mentioned library.
Can you see what arguments are being passed to configure, and what configure does with them? Is the freebsd build process passing --with-tcmalloc to the configure script?
Sure. mb# pwd && make showconfig /usr/ports/security/tor ===> The following configuration options are available for tor-0.2.2.37: BUFFREELISTS=on: Freelists for buffer RAM GMAKE=off: Parallel build safety via GNU make INSTR_DOWNLOADS=off: Instrument downloads for analysis TCMALLOC=on: Use the tcmalloc memory allocation library THREADS=on: Threading support TRANSPARENT=on: Transparent proxy support ===> Use 'make config' to modify these settings mb# cat Makefile # ports collection makefile for: tor-devel # Date created: 2005.10.20 # Whom: peter.thoenen@yahoo.com # # $FreeBSD: ports/security/tor/Makefile,v 1.83 2012/06/29 00:38:55 bf Exp $ # PORTNAME= tor DISTVERSION= 0.2.2.37 CATEGORIES= security net ipv6 MASTER_SITES= https://www.torproject.org/dist/ \ ftp://ftp.bit.nl/mirror/tor/ \ http://cyberside.net.ee/tor/ \ http://ftp.bit.nl/mirror/tor/ \ http://mirror.hessmo.com/tor/dist/ \ http://mirror.host4site.co.il/torproject.org/dist/ \ http://mirror.open-networx.org/torproject.org/dist/ \ http://mirror.tor.hu/dist/ \ https://mirror.torland.me/torproject.org/dist/ \ http://mirrors.chaos-darmstadt.de/tor-mirror/dist/ \ http://onion.anonymo.us.org/dist/ \ http://theonionrouter.com/dist/ \ http://tor.amorphis.eu/dist/ \ http://tor.askapache.com/dist/ \ http://tor.beme-it.de/dist/ \ http://tor.blingblingsquad.net/dist/ \ http://tor.borgmann.tv/dist/ \ http://tor.ccc.de/dist/ \ http://tor.cyberarmy.at/dist/ \ http://tor.dont-know-me.at/dist/ \ http://tor.factor.cc/dist/ \ http://tor.homosu.net/dist/ \ http://tor.idnr.ws/dist/ \ http://tor.myrl.net/dist/ \ http://tor.kamagurka.org/dist/ \ http://tor.searchprivate.com/dist/ \ http://tor.spline.de/dist/ \ http://tor.taiga-san.net/dist/ \ http://tor.unregistered.eu/dist/ \ http://tor.vesta.nu/dist/ \ http://tordistua.reactor-xg.kiev.ua/ \ http://torproj.xpdm.us/dist/ \ https://torproject.antagonism.org/dist/ \ https://torproject.crypto.is/dist/ \ http://torproject.is/dist/ \ http://torproject.jcsh.it/dist/ \ http://torproject.nwlinux.us/dist/ \ http://torproject.ph3x.at/dist/ \ http://torua.reactor-xg.kiev.ua/dist/ \ https://www.coevoet.nl/tor/dist/ \ http://www.oignon.net/dist/ \ http://www.torproject.nl/dist/ \ http://www.torproject.org.in/dist/ \ http://www.torproject.org.nyud.net/dist/ \ http://www.torproject.us/dist/ \ http://www.torservers.net/mirrors/torproject.org/dist/ MAINTAINER= bf@FreeBSD.org COMMENT= An anonymizing overlay network for TCP LICENSE= BSD LICENSE_FILE= ${WRKSRC}/LICENSE LIB_DEPENDS= event-2.0:${PORTSDIR}/devel/libevent2 GNU_CONFIGURE= yes CONFIGURE_ARGS= --with-openssl-dir="${OPENSSLBASE}" --disable-asciidoc \ --enable-linker-hardening CONFIGURE_ENV= TOR_CPPFLAGS_libevent="-I${LOCALBASE}/include/event2 -I${LOCALBASE}/include" \ TOR_LDFLAGS_libevent="-L${LOCALBASE}/lib/event2" \ TOR_LIBEVENT_LIBS="-levent-2.0" OPTIONS_DEFINE= BUFFREELISTS GMAKE INSTR_DOWNLOADS TCMALLOC THREADS TRANSPARENT BUFFREELISTS_DESC= Freelists for buffer RAM GMAKE_DESC= Parallel build safety via GNU make INSTR_DOWNLOADS_DESC= Instrument downloads for analysis TCMALLOC_DESC= Use the tcmalloc memory allocation library TRANSPARENT_DESC= Transparent proxy support OPTIONS_DEFAULT= BUFFREELISTS THREADS TRANSPARENT USE_OPENSSL= yes USE_RC_SUBR= tor SUB_FILES= pkg-message GROUPS = _tor USERS= _tor CONFLICTS= tor-devel-[0-9]* MANCOMPRESSED= no MAN1= tor.1 tor-resolve.1 torify.1 tor-gencert.1 .include <bsd.port.options.mk> .if ${PORT_OPTIONS:MGMAKE} USE_GMAKE= yes .else MAKE_JOBS_UNSAFE= yes .endif .if ( (${OSVERSION} >= 703100 && ${OSVERSION} < 800000) || \ (${OSVERSION} >= 800500 && ${OSVERSION} < 900000) || \ (${OSVERSION} >= 900003) ) && !defined(USE_GCC) && empty(CC:T:M*gcc4*) CONFIGURE_ARGS+= --enable-gcc-hardening .endif .if ( ${OSVERSION} < 704000 || \ (${OSVERSION} >= 800000 && ${OSVERSION} < 801500) || \ (${OSVERSION} >= 900000 && ${OSVERSION} < 900011) ) WITH_OPENSSL_PORT= yes .endif .if ${PORT_OPTIONS:MBUFFREELISTS} CONFIGURE_ARGS+= --enable-buf-freelists .else CONFIGURE_ARGS+= --disable-buf-freelists .endif .if ${PORT_OPTIONS:MINSTR_DOWNLOADS} CONFIGURE_ARGS+= --enable-instrument-downloads .else CONFIGURE_ARGS+= --disable-instrument-downloads .endif .if ${PORT_OPTIONS:MTCMALLOC} CONFIGURE_ARGS+= --with-tcmalloc LIB_DEPENDS+= tcmalloc:${PORTSDIR}/devel/google-perftools .endif .if ${PORT_OPTIONS:MTHREADS} CONFIGURE_ARGS+= --enable-threads CFLAGS+= ${PTHREAD_CFLAGS} .else CONFIGURE_ARGS+= --disable-threads .endif .if ${PORT_OPTIONS:MTRANSPARENT} CONFIGURE_ARGS+= --enable-transparent .else CONFIGURE_ARGS+= --disable-transparent .endif post-patch: @${MV} ${WRKSRC}/contrib/tor-tsocks.conf \ ${WRKSRC}/contrib/tor-tsocks.conf.sample @${REINPLACE_CMD} -e "s|tor-tsocks.conf|tor-tsocks.conf.sample|g" \ ${WRKSRC}/contrib/Makefile.in @${REINPLACE_CMD} -e '\|^install-data-am:|s|install-docDATA||' \ ${WRKSRC}/doc/Makefile.in @${REINPLACE_CMD} -e "s|-ltcmalloc|${LOCALBASE}/lib/libtcmalloc.so|" \ ${WRKSRC}/configure post-configure: @${FIND} -X ${WRKSRC} -type f -name Makefile | ${XARGS} ${REINPLACE_CMD} -e \ "s|-lpthread|${PTHREAD_LIBS}|g" @${REINPLACE_CMD} -e '\|^nodist_man_MANS =|s|$$|${MAN1}|' \ ${WRKSRC}/doc/Makefile post-install: ${MKDIR} /var/run/tor ${CHOWN} -R _tor:_tor /var/run/tor ${TOUCH} /var/log/tor ${CHOWN} _tor:_tor /var/log/tor ${MKDIR} /var/db/tor/data ${CHOWN} -R _tor:_tor /var/db/tor ${CHMOD} -R 700 /var/db/tor ${CAT} ${PKGMESSAGE} check regression-test test: build @( cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} \ ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} check ) .include <bsd.port.mk> BTW, I sent this thread to the supposed FreeBSD port mantainer and another guy (I found him using freshports.org). No answer at all (yet).