Date: Fri, 22 Apr 2005 19:56:00 +0200 From: "Marius Nuennerich" <marius.nuennerich@gmx.net> To: "FreeBSD gnats submit" <FreeBSD-gnats-submit@FreeBSD.org> Cc: marius.nuennerich@gmx.net Subject: docs/80258: [PATCH] Comment why some Binaries are statically linked Message-ID: <1114192560.0@olaf.hackerzberg.local> Resent-Message-ID: <200504221800.j3MI0dD3050289@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 80258 >Category: docs >Synopsis: [PATCH] Comment why some Binaries are statically linked >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-doc >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Fri Apr 22 18:00:39 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Marius Nuennerich >Release: FreeBSD 5.4-RC2 i386 >Organization: >Environment: System: FreeBSD 5.4-RC2 #1: Fri Apr 15 17:46:41 CEST 2005 marius@olaf.hackerzberg.local:/usr/obj/usr/src/sys/OLAF >Description: Some Binaries are statically linked, add comments to the Makefile why this is so. I obtained the comments from cvs, the versions are: devd: 1.5 ar: 1.6 as: 1.13 ld: 1.12 ranlib: 1.6 make: 1.19 nologin: was already commented pccardc and pccardd: 1.7 cc: 1.22 cc1: 1.7 cc1plus. 1.7 gdb: ??? I don't know why gdb is still statically linked. 1.59 is not a real reason, I think. :) Could someone please explain it in the Makefile? >How-To-Repeat: >Fix: --- patch begins here --- diff -ru src/gnu/usr.bin/binutils/ar/Makefile head/gnu/usr.bin/binutils/ar/Makefile --- src/gnu/usr.bin/binutils/ar/Makefile Thu Apr 21 16:29:47 2005 +++ head/gnu/usr.bin/binutils/ar/Makefile Fri Apr 22 18:24:20 2005 @@ -10,7 +10,10 @@ CFLAGS+= -I${.CURDIR}/${RELTOP}/libbinutils CFLAGS+= -I${SRCDIR}/binutils CFLAGS+= -I${SRCDIR}/bfd + +# Critical toolchain binaries are staticly linked NO_SHARED?= yes + DPADD= ${RELTOP}/libbinutils/libbinutils.a DPADD+= ${RELTOP}/libbfd/libbfd.a DPADD+= ${RELTOP}/libiberty/libiberty.a diff -ru src/gnu/usr.bin/binutils/as/Makefile head/gnu/usr.bin/binutils/as/Makefile --- src/gnu/usr.bin/binutils/as/Makefile Thu Apr 21 16:29:47 2005 +++ head/gnu/usr.bin/binutils/as/Makefile Fri Apr 22 18:24:56 2005 @@ -43,6 +43,7 @@ CFLAGS+= -I${SRCDIR}/gas -I${SRCDIR}/gas/config -I${SRCDIR} CFLAGS+= -I${.CURDIR} -I${.CURDIR}/${TARGET_ARCH}-freebsd +# Critical toolchain binaries are staticly linked NO_SHARED?= yes DPADD= ${RELTOP}/libbfd/libbfd.a diff -ru src/gnu/usr.bin/binutils/gdb/Makefile head/gnu/usr.bin/binutils/gdb/Makefile --- src/gnu/usr.bin/binutils/gdb/Makefile Thu Apr 21 16:29:55 2005 +++ head/gnu/usr.bin/binutils/gdb/Makefile Fri Apr 22 19:39:01 2005 @@ -16,7 +16,9 @@ GDB_CPU= ${TARGET_ARCH} .endif +# INSERT REASON HERE NO_SHARED?=yes + PROG= gdb XSRCS= annotate.c arch-utils.c ax-general.c ax-gdb.c bcache.c \ blockframe.c breakpoint.c buildsym.c complaints.c completer.c \ diff -ru src/gnu/usr.bin/binutils/ld/Makefile head/gnu/usr.bin/binutils/ld/Makefile --- src/gnu/usr.bin/binutils/ld/Makefile Thu Apr 21 16:29:55 2005 +++ head/gnu/usr.bin/binutils/ld/Makefile Fri Apr 22 18:25:20 2005 @@ -19,7 +19,10 @@ CFLAGS+= -DTOOLBINDIR=\"${TOOLS_PREFIX}/${BINDIR}/libexec\" CFLAGS+= -D_GNU_SOURCE CFLAGS+= -I${SRCDIR}/ld -I${SRCDIR}/bfd + +# Critical toolchain binaries are staticly linked NO_SHARED?= yes + DPADD= ${RELTOP}/libbfd/libbfd.a DPADD+= ${RELTOP}/libiberty/libiberty.a LDADD= ${DPADD} diff -ru src/gnu/usr.bin/binutils/ranlib/Makefile head/gnu/usr.bin/binutils/ranlib/Makefile --- src/gnu/usr.bin/binutils/ranlib/Makefile Thu Apr 21 16:29:55 2005 +++ head/gnu/usr.bin/binutils/ranlib/Makefile Fri Apr 22 18:25:39 2005 @@ -10,7 +10,10 @@ CFLAGS+= -I${.CURDIR}/${RELTOP}/libbinutils CFLAGS+= -I${SRCDIR}/binutils CFLAGS+= -I${SRCDIR}/bfd + +# Critical toolchain binaries are staticly linked NO_SHARED?= yes + DPADD= ${RELTOP}/libbinutils/libbinutils.a DPADD+= ${RELTOP}/libbfd/libbfd.a DPADD+= ${RELTOP}/libiberty/libiberty.a diff -ru src/gnu/usr.bin/cc/cc/Makefile head/gnu/usr.bin/cc/cc/Makefile --- src/gnu/usr.bin/cc/cc/Makefile Thu Apr 21 16:29:55 2005 +++ head/gnu/usr.bin/cc/cc/Makefile Fri Apr 22 18:37:01 2005 @@ -8,6 +8,8 @@ PROG= cc MAN= gcc.1 SRCS= gcc.c gccspec.c + +# Critical toolchain binaries are staticly linked NO_SHARED?=yes LINKS= ${BINDIR}/cc ${BINDIR}/gcc diff -ru src/gnu/usr.bin/cc/cc1/Makefile head/gnu/usr.bin/cc/cc1/Makefile --- src/gnu/usr.bin/cc/cc1/Makefile Thu Apr 21 16:29:55 2005 +++ head/gnu/usr.bin/cc/cc1/Makefile Fri Apr 22 19:24:54 2005 @@ -8,6 +8,9 @@ SRCS= main.c c-parse+%DIKED.c c-lang.c stub-objc.c BINDIR= /usr/libexec NO_MAN= + +# Build cc1 nonshared. This actually results in it consuming 40K *less* disk +# space and improves compile times by a few percent. NO_SHARED?=yes CFLAGS+= -I. diff -ru src/gnu/usr.bin/cc/cc1obj/Makefile head/gnu/usr.bin/cc/cc1obj/Makefile --- src/gnu/usr.bin/cc/cc1obj/Makefile Thu Apr 21 16:29:55 2005 +++ head/gnu/usr.bin/cc/cc1obj/Makefile Fri Apr 22 18:36:14 2005 @@ -8,6 +8,8 @@ SRCS= main.c objc-parse+DIKED.c objc-act.c objc-lang.c c-decl.c BINDIR= /usr/libexec NO_MAN= + +# Critical toolchain binaries are staticly linked NO_SHARED?=yes CFLAGS+= -I${GCCDIR}/objc -I. diff -ru src/gnu/usr.bin/cc/cc1plus/Makefile head/gnu/usr.bin/cc/cc1plus/Makefile --- src/gnu/usr.bin/cc/cc1plus/Makefile Thu Apr 21 16:29:55 2005 +++ head/gnu/usr.bin/cc/cc1plus/Makefile Fri Apr 22 19:31:54 2005 @@ -13,6 +13,8 @@ BINDIR= /usr/libexec NO_MAN= + +# Makes it smaller and faster NO_SHARED?=yes CFLAGS+= -I${GCCDIR}/cp -I. diff -ru src/sbin/devd/Makefile head/sbin/devd/Makefile --- src/sbin/devd/Makefile Thu Apr 21 16:35:48 2005 +++ head/sbin/devd/Makefile Fri Apr 22 18:22:22 2005 @@ -5,6 +5,11 @@ MAN= devd.8 devd.conf.5 WARNS?= 1 +# Force devd to be statically compiled. This avoids the +# need for libstdc++ in /lib, and the generated binary is actually smaller +# statically linked than dynamically + sizeof(libstdc++). Additionally, +# devd doesn't use get*by*() which is one of the main motivations for +# dynamically linking the root partition anyway. NO_SHARED?=YES DPADD= ${LIBL} diff -ru src/sbin/init/Makefile head/sbin/init/Makefile --- src/sbin/init/Makefile Thu Apr 21 16:35:58 2005 +++ head/sbin/init/Makefile Fri Apr 22 18:47:07 2005 @@ -12,6 +12,8 @@ DPADD= ${LIBUTIL} ${LIBCRYPT} LDADD= -lutil -lcrypt +# Make init statically linked by default. It's not worth the pain of having +# a dynamically linked init as seen by ia64 woes. NO_SHARED?= YES .include <bsd.prog.mk> diff -ru src/usr.bin/make/Makefile head/usr.bin/make/Makefile --- src/usr.bin/make/Makefile Thu Apr 21 16:41:48 2005 +++ head/usr.bin/make/Makefile Fri Apr 22 18:28:13 2005 @@ -9,6 +9,10 @@ NO_WERROR= WARNS?= 3 + +# Build as a static binary. It costs only 100k of additional +# disk space, buf provides measureable speed increase for make-intensive +# operations, such as pkg_version(1), `make world' and so on. NO_SHARED?= YES CFLAGS+=-DMAKE_VERSION=\"5200408120\" diff -ru src/usr.sbin/pccard/Makefile.inc head/usr.sbin/pccard/Makefile.inc --- src/usr.sbin/pccard/Makefile.inc Thu Apr 21 16:42:21 2005 +++ head/usr.sbin/pccard/Makefile.inc Fri Apr 22 18:31:57 2005 @@ -1,5 +1,7 @@ # $FreeBSD: src/usr.sbin/pccard/Makefile.inc,v 1.9 2004/12/21 09:59:45 ru Exp $ +# Must be compiled static so that it is possible +# to use them early in the boot process. NO_SHARED?= YES .include "../Makefile.inc" --- patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1114192560.0>