What do people think about the following patch to install(1) to make
it strip additional useless (at runtime - they may be used for
debugging purposes) symbols and ELF sections from binaries at
install-time, if the '-s' option is used multiple times? This usually
saves a few tens of kilobytes per binary.
Kris
Index: xinstall.c
===================================================================
RCS file: /usr2/ncvs/src/usr.bin/xinstall/xinstall.c,v
retrieving revision 1.38.2.3
diff -u -r1.38.2.3 xinstall.c
--- xinstall.c 2001/08/01 06:48:41 1.38.2.3
+++ xinstall.c 2001/08/20 07:13:17
@@ -92,7 +92,7 @@
void install __P((char *, char *, u_long, u_int));
void install_dir __P((char *));
u_long numeric_id __P((char *, char *));
-void strip __P((char *));
+void strip __P((char *, int));
int trymmap __P((int));
void usage __P((void));
@@ -108,6 +108,7 @@
u_int iflags;
char *flags, *group, *owner, *to_name;
+ dostrip = 0;
iflags = 0;
group = owner = NULL;
while ((ch = getopt(argc, argv, "B:bCcdf:g:Mm:o:pSsv")) != -1)
@@ -156,7 +157,7 @@
safecopy = 1;
break;
case 's':
- dostrip = 1;
+ dostrip++;
break;
case 'v':
verbose = 1;
@@ -349,7 +350,7 @@
}
if (dostrip) {
- strip(tempcopy ? tempfile : to_name);
+ strip(tempcopy ? tempfile : to_name, dostrip);
/*
* Re-open our fd on the target, in case we used a strip
@@ -696,8 +697,9 @@
* use strip(1) to strip the target file
*/
void
-strip(to_name)
+strip(to_name, level)
char *to_name;
+ int level;
{
int serrno, status;
@@ -708,7 +710,12 @@
errno = serrno;
err(EX_TEMPFAIL, "fork");
case 0:
- execlp("strip", "strip", to_name, (char *)NULL);
+ if (level > 1)
+ execlp("strip", "strip", "-s", "-R", ".comment",
+ "-R", ".note", "-N", "gcc2_compiled",
+ to_name, (char *)NULL);
+ else
+ execlp("strip", "strip", to_name, (char *)NULL);
err(EX_OSERR, "exec(strip)");
default:
if (wait(&status) == -1 || status) {
PGP signature