Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Nov 2008 00:59:47 -0800
From:      Bruce Cran <bruce@cran.org.uk>
To:        Matthew Seaman <m.seaman@infracaninophile.co.uk>
Cc:        "Paul B. Mahol" <onemda@gmail.com>, freebsd-questions@freebsd.org
Subject:   Re: large binary, why not strip ?
Message-ID:  <20081127005947.1f74b224@tau.draftnet>
In-Reply-To: <492E4D07.8030908@infracaninophile.co.uk>
References:  <b10011eb0811160042w158656bld3b91a2bf7cfdd3f@mail.gmail.com> <20081116125622.E24752@wojtek.tensor.gdynia.pl> <20081117172100.GB43367@hub.freebsd.org> <b10011eb0811171040y536d5e18y171ca9aed686f9bf@mail.gmail.com> <20081117210649.GE63818@hub.freebsd.org> <49226AFD.6060505@infracaninophile.co.uk> <492D7E03.3070500@infracaninophile.co.uk> <3a142e750811260901j134e9ff9pa334fc50c52fadd2@mail.gmail.com> <492E4D07.8030908@infracaninophile.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 27 Nov 2008 07:32:23 +0000
Matthew Seaman <m.seaman@infracaninophile.co.uk> wrote:

> Paul B. Mahol wrote:
> > On 11/26/08, Matthew Seaman <m.seaman@infracaninophile.co.uk> wrote:
> >> Matthew Seaman wrote:
> >>> Kris Kennaway wrote:
> >>>
> >>>> Bonus points if you come up with a patch to do this: in most
> >>>> cases it will be a simple matter of changing the port's
> >>>> do-install: target to use INSTALL_* macros instead of cp/bsdtar
> >>>> etc.  This would be a good project to get some familiarity with
> >>>> the ports tree.
> >>> Would it be worthwhile to add a test and warning that all
> >>> installed binaries
> >>> have not been stripped to the 'security-check' target in
> >>> bsd.port.mk? That's
> >>> not really what that target was intended for (feeping creaturism
> >>> alert!) but
> >>> it's the obvious place to put such a test.
> >>>
> >>> Probably cleaner to create a whole new target, but that's going to
> >>> duplicate
> >>> some code.
> >>>
> >>> Hmmmm... I shall work up some patches, probably over the weekend,
> >>> so there's
> >>> something substantive to talk about.
> >> Done: ports/129210
> >>
> >> For the record, I also discovered that, contrary to what I said
> >> earlier, there is  apparently one class of binary object that will
> >> not work correctly if stripped: kernel loadable modules.
> > 
> > Kernel loadable modules are already stripped (--strip-debug).
> > 
> 
> KLDs aren't stripped in a way that file(1) recognises:
> 
> happy-idiot-talk:/boot/kernel:% file if_em.ko 
> if_em.ko: ELF 32-bit LSB shared object, Intel 80386, version 1
> (FreeBSD), dynamically linked, not stripped
> 
> Unfortunately file(1) seems to be about the only tool available to
> test a priori whether a binary object is stripped or not.  It's
> possible that objdump(1) or readelf(1) could do a similar thing, but
> I can't work it out from those man pages.

It seems nm also tells you fairly simply whether a file contains
symbols or not: 

> nm /bin/ls
nm: /bin/ls: no symbols
> nm /usr/local/bin/a2p
00000000004030d0 T Myfatal
0000000000510308 D No
000000000051a200 B Str
0000000000510300 D Yes
0000000000519e00 A _DYNAMIC
[...]

KLD .ko files are built with full debug data but the source
information (filenames, line numbers etc.) is stripped out into
separate .ko.symbols files, in a similar way that Windows uses .PDB
files; it lets you store the debug information separately and only
match them up if something goes wrong.

To see if a binary contains source data, you can run 'readelf
-w'; no output seems to mean it couldn't find any data.

-- 
Bruce Cran



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