tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: sys.mk broken for single-suffix rules since 1.144 (2021/11/09)



On 22.03.2021 01:56, bch wrote:
First thought is to alert rillig@, who’s been working a lot on make/lint

It's true that I've been working a lot there, but in this case I'm
innocent. :)

This is really about the wrong command line in sys.mk.  Here are the
relevant parts:

OBJECT_TARGET	?= -o ${.TARGET}${defined(CTFCONVERT):?.o:}
.c:
	${LINK.c} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}

In this condensed form, it's easy to see that when a .c file is directly
compiled to an executable, the -o option is added nevertheless.


Hmmm, code coverage for makefiles.  Sounds obvious since make has its
built-in turing-complete programming language, even allowing for
self-modifying code. ;)

It is definitely possible to record the code coverage for each value of
a variable, for each .if and .for directive, and for each line of shell
commands for the targets.  Maybe even for each ':D' and ':U' modifier,
to make sure that both cases are covered.  This would be a nice project
to hack into make.  Running this coverage analysis will probably find
several edge cases that have previously not been tested thoroughly, at
least that's my experience from working on pkglint (99.91% coverage),
make (85%) and lint1 (75%).

Roland


Home | Main Index | Thread Index | Old Index