config(8) does not add post-processing for source file with
compile-with command in sys/conf/files
Paul Ambrose
ambrosehua at gmail.com
Wed Oct 19 02:49:23 UTC 2011
when I digged the a PR(bin/160275), I found in_proto.c and
if_ethersubr.c ( see sys/conf/files ) does not get
${NORMAL_CTFCONVERT} post-processing in Makefile
(/usr/obj/usr/src/sys/MYKERNEL/Makefile) generated by config(8), so
the objs does not contain ctf section
In /usr/src/usr.sbin/config/mkmakefile.c, line 746
}
compilewith = ftp->f_compilewith;
if (compilewith == 0) { // no compile-with
const char *ftype = NULL;
switch (ftp->f_type) {
case NORMAL:
ftype = "NORMAL";
break;
case PROFILING:
if (!profiling)
continue;
ftype = "PROFILE";
break;
default:
fprintf(stderr,
"config: don't know rules for %s\n", np);
break;
}
// only add post-processing for source file without compile-with
snprintf(cmd, sizeof(cmd),
"${%s_%c%s}\n\t@${NORMAL_CTFCONVERT}", ftype,
toupper(och),
ftp->f_flags & NOWERROR ? "_NOWERROR" : "");
compilewith = cmd;
}
*cp = och;
if (strlen(ftp->f_objprefix))
fprintf(f, "\t%s $S/%s\n\n", compilewith, np);
else
fprintf(f, "\t%s\n\n", compilewith);
}
}
I wonder whether it was NOT allowed to add post-processing to files
with compile-with, license or other issues?
if not a license issue, then I wonder if this fix is OK( I test it on
8-stable with gcc, and 9-stable with both gcc and clang)
diff --git a/usr.sbin/config/mkmakefile.c b/usr.sbin/config/mkmakefile.c
index 2372839..25a85de 100644
--- a/usr.sbin/config/mkmakefile.c
+++ b/usr.sbin/config/mkmakefile.c
@@ -767,6 +767,14 @@ do_rules(FILE *f)
ftp->f_flags & NOWERROR ? "_NOWERROR" : "");
compilewith = cmd;
}
+ //handle CTF issule with NORMAL_C and NORMAL_C_NOERROR
+ else if (!strncmp(compilewith, "${NORMAL_C",sizeof("${NORMAL_C"))) {
+ snprintf(cmd, sizeof(cmd),
+ "%s\n\t@${NORMAL_CTFCONVERT}", compilewith);
+ compilewith = cmd;
+ }
More information about the freebsd-questions
mailing list