svn commit: r190349 - in stable/7/usr.sbin/crunch: crunchgen crunchide

David E. O'Brien obrien at FreeBSD.org
Mon Mar 23 17:34:56 PDT 2009


Author: obrien
Date: Tue Mar 24 00:34:55 2009
New Revision: 190349
URL: http://svn.freebsd.org/changeset/base/190349

Log:
  MFC:
  r173412: Cleanup of userland __P use.
  r187943: Run with -B and just .POSIX.
  r173067: Include <stdlib.h> for the right prototype for exit(3).
  r173065: Set the program name if the crunched program is selected
  	 through argv[1] to mimic crt0 behaviour.

Modified:
  stable/7/usr.sbin/crunch/crunchgen/crunched_main.c
  stable/7/usr.sbin/crunch/crunchgen/crunchgen.c
  stable/7/usr.sbin/crunch/crunchide/crunchide.c

Modified: stable/7/usr.sbin/crunch/crunchgen/crunched_main.c
==============================================================================
--- stable/7/usr.sbin/crunch/crunchgen/crunched_main.c	Tue Mar 24 00:30:06 2009	(r190348)
+++ stable/7/usr.sbin/crunch/crunchgen/crunched_main.c	Tue Mar 24 00:34:55 2009	(r190349)
@@ -34,6 +34,7 @@
  *	the crunched binary without creating all the links.
  */
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 
 struct stub {
@@ -41,6 +42,7 @@ struct stub {
     int (*f)();
 };
 
+extern char *__progname;
 extern struct stub entry_points[];
 
 int main(int argc, char **argv, char **envp)
@@ -83,12 +85,16 @@ int crunched_here(char *path)
 
 int crunched_main(int argc, char **argv, char **envp)
 {
+    char *slash;
     struct stub *ep;
     int columns, len;
 
     if(argc <= 1)
 	crunched_usage();
 
+    slash = strrchr(argv[1], '/');
+    __progname = slash? slash+1 : argv[1];
+
     return main(--argc, ++argv, envp);
 }
 

Modified: stable/7/usr.sbin/crunch/crunchgen/crunchgen.c
==============================================================================
--- stable/7/usr.sbin/crunch/crunchgen/crunchgen.c	Tue Mar 24 00:30:06 2009	(r190348)
+++ stable/7/usr.sbin/crunch/crunchgen/crunchgen.c	Tue Mar 24 00:34:55 2009	(r190349)
@@ -709,12 +709,13 @@ void fillin_program_objs(prog_t *p, char
 	if (outhdrname[0] != '\0')
 		fprintf(f, ".include \"%s\"\n", outhdrname);
 	fprintf(f, ".include \"%s\"\n", path);
+	fprintf(f, ".POSIX:\n");
 	if (buildopts) {
 		fprintf(f, "BUILDOPTS+=");
 		output_strlst(f, buildopts);
 	}
-	fprintf(f, ".if defined(PROG) && !defined(%s)\n", objvar);
-	fprintf(f, "%s=${PROG}.o\n", objvar);
+	fprintf(f, ".if defined(PROG)\n");
+	fprintf(f, "%s?=${PROG}.o\n", objvar);
 	fprintf(f, ".endif\n");
 	fprintf(f, "loop:\n\t at echo 'OBJS= '${%s}\n", objvar);
 
@@ -727,7 +728,7 @@ void fillin_program_objs(prog_t *p, char
 
 	fclose(f);
 
-	snprintf(line, MAXLINELEN, "cd %s && make -f %s crunchgen_objs",
+	snprintf(line, MAXLINELEN, "cd %s && make -f %s -B crunchgen_objs",
 	    p->srcdir, tempfname);
 	if ((f = popen(line, "r")) == NULL) {
 		warn("submake pipe");

Modified: stable/7/usr.sbin/crunch/crunchide/crunchide.c
==============================================================================
--- stable/7/usr.sbin/crunch/crunchide/crunchide.c	Tue Mar 24 00:30:06 2009	(r190348)
+++ stable/7/usr.sbin/crunch/crunchide/crunchide.c	Tue Mar 24 00:34:55 2009	(r190349)
@@ -87,7 +87,7 @@ int hide_syms(const char *filename);
 
 int verbose;
 
-int main __P((int, char *[]));
+int main(int, char *[]);
 
 int main(argc, argv)
 int argc;


More information about the svn-src-stable-7 mailing list