minix/minix/commands
David van Moolenbroek 3ac58492b3 Add LLVM GCOV coverage support
With this patch, it is now possible to generate coverage information
for MINIX3 system services with LLVM.  In particular, the system can
be built with MKCOVERAGE=yes, either with a native "make build" or
with crosscompilation.  Either way, MKCOVERAGE=yes will build the
MINIX3 system services with coverage profiling support, generating a
.gcno file for each source module.  After a reboot it is possible to
obtain runtime coverage data (.gcda files) for individual system
services using gcov-pull(8).  The combination of the .gcno and .gcda
files can then be inspected with llvm-cov(1).

For reasons documented in minix.gcov.mk, only system service program
modules are supported for now; system service libraries (libsys etc.)
are not included.  Userland programs are not affected by MKCOVERAGE.

The heart of this patch is the libsys code that writes data generated
by the LLVM coverage hooks into a serialized format using the routines
we already had for GCC GCOV.  Unfortunately, the new llvm_gcov.c code
is LLVM ABI dependent, and may therefore have to be updated later when
we upgrade LLVM.  The current implementation should support all LLVM
versions 3.x with x >= 4.

The rest of this patch is mostly a light cleanup of our existing GCOV
infrastructure, with as most visible change that gcov-pull(8) now
takes a service label string rather than a PID number.

Change-Id: I6de055359d3d2b3f53e426f3fffb17af7877261f
2016-09-24 22:18:31 +00:00
..
add_route commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
arp Deprivilege some network commands 2015-09-23 12:03:12 +00:00
at commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
atnormalize Import a few manpages 2014-11-25 11:04:20 +01:00
autopart commands/autopart: Fix dead code block 2015-03-13 18:53:05 +01:00
backup commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
cawf commands: fix various small issues 2016-08-05 11:17:19 +00:00
cdprobe New image framework generation 2015-10-10 19:09:35 +02:00
cleantmp commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
compress commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
crc commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
cron commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
crontab commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
DESCRIBE Add PTYFS, Unix98 pseudo terminal support 2015-06-23 17:43:46 +00:00
devmand devmand: properly prevent overflow 2015-04-15 08:28:59 +02:00
devsize commands: resolve compiler warnings 2015-09-23 12:03:11 +00:00
dhcpd commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
dhrystone commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
dosread commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
eject commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
fdisk commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
fetch Importing crypto libraries 2015-10-07 23:37:12 +02:00
fix commands/fix: create manpage for fix(8) 2015-03-24 08:21:14 +01:00
format commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
fsck.mfs commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
gcov-pull Add LLVM GCOV coverage support 2016-09-24 22:18:31 +00:00
host commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
hostaddr Retire sysuname(2), synchronize sys/utsname.h 2016-01-13 20:32:46 +01:00
ifconfig commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
ifdef commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
intr commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
irdpd commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
isoread commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
loadfont commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
loadkeys commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
loadramdisk commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
logger commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
look commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
lp commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
lpd commands: resolve compiler warnings 2015-09-23 12:03:11 +00:00
lspci commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
mail mail: close fp after use 2016-02-07 09:50:08 -05:00
MAKEDEV Add PTYFS, Unix98 pseudo terminal support 2015-06-23 17:43:46 +00:00
mount New image framework generation 2015-10-10 19:09:35 +02:00
mt commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
netconf commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
nonamed commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
part Allow part(8) to make subpartitions above 4G 2016-07-14 12:34:41 +02:00
partition Resolve a number of GCC-generated warnings 2016-08-05 16:24:04 +02:00
pkgin_all
pkgin_cd
pkgin_sets pkgin_sets: Fix python package name 2014-09-12 11:10:30 +02:00
playwave commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
pr_routes commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
prep commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
printroot commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
profile commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
progressbar
ramdisk ramdisk: fix command output to stdout 2015-10-08 12:11:03 +02:00
rarpd commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
rawspeed commands: resolve compiler warnings 2015-09-23 12:03:11 +00:00
readclock commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
recwave commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
remsync commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
repartition Allow repartition(8) subpartitions above 4G 2016-08-06 10:52:38 +02:00
rget commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
rlogin commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
rotate Make rotate manpage more detailed 2015-03-23 11:06:37 +01:00
screendump commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
service Clean up traces from long-gone sys_int86 interface 2016-07-20 19:00:44 +02:00
setup setup.sh: fix various issues 2016-02-26 19:45:55 +00:00
slip commands: fix various small issues 2016-08-05 11:17:19 +00:00
spell commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
sprofalyze Basic statistical profiling fixes 2016-01-28 13:09:35 +01:00
sprofdiff Add manpage for sprofdiff 2015-05-18 13:52:13 +02:00
srccrc commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
svrctl commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
swifi swifi: various improvements 2015-09-23 12:03:12 +00:00
synctree commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
sysenv commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
tcpd commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
tcpdp commands: resolve compiler warnings 2015-09-23 12:03:11 +00:00
tcpstat NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
telnet commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
telnetd commands: resolve compiler warnings 2015-09-23 12:03:11 +00:00
term commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
termcap commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
tget commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
truncate commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
udpstat commands: resolve compiler warnings 2015-09-23 12:03:11 +00:00
umount commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
update commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
update_asr Integrate ASR instrumentation into build system 2016-01-13 20:32:34 +01:00
update_bootcfg update_bootcfg(8): Add actually useful information 2015-07-28 10:03:50 +00:00
updateboot Import a few manpages 2014-11-25 11:04:20 +01:00
version
vol commands: move manpages into command directories 2015-09-28 14:06:06 +00:00
worldstone
writeisofs Resolve more warnings 2015-09-23 12:04:58 +00:00
zmodem commands: fix various small issues 2016-08-05 11:17:19 +00:00
Makefile Drop obsolete postinstall script 2016-07-20 17:35:49 +02:00
Makefile.inc commands: resolve compiler warnings 2015-09-23 12:03:11 +00:00