2955 Commits

Author SHA1 Message Date
Enji Cooper
051c9c6839 It _was_ .gcno's, not .gcda's that get produced with cc --coverage
Try to install them instead of the .gcda's, since the .gcda's likely won't exist.

TODO: verify that installworld does indeed do the right thing.

Ref: gcc(1) -ftest-coverage description; --coverage (option in use) is an alias
     for -fprofile-arcs -ftest-coverage
2017-10-22 07:12:55 +00:00
Enji Cooper
71ae7bc6a2 Have to evaluate GCDAS immediately b/c I .undef'ed the _GCDAS_SRCS var later.
Otherwise GCDAS will be empty. Womp womp.
2017-10-22 00:10:18 +00:00
Enji Cooper
0a8f81bc28 MFhead@r324837
While here, diff reduce some of the changes in sys/boot by moving
MK_COVERAGE=no to sys/boot/Makefile.inc .
2017-10-21 23:40:52 +00:00
Enji Cooper
cfe42233f8 Fix typo in prior commit with stray colon after :M 2017-10-21 23:37:41 +00:00
Enji Cooper
b0c7b002ca Mark MK_COVERAGE broken for arm64/arm* 2017-10-21 23:27:20 +00:00
Jonathan Anderson
4f2fac3759 Improve computation of {BC,LL}OBJS.
Now that OBJS has grown an OBJS_SRCS_FILTER variable, use this variable
in the computation of BCOBJS and LLOBJS too. Also move BCOBJS and LLOBJS
computation to be next to the OBJS computation: this should both make
the parallel structure clearer and serve to remind people changing OBJS
that parallel changes are required in BCOBJS and LLOBJS.

A side effect of this change is that BCOBJS and LLOBJS will be available
even when LLVM_LINK has not been defined, but that seems like a positive
change: there's no reason we can't ask "what bitcode files would you
generate" just because we can't link those files together into a
complete bitcode representation of a binary or library.

Reviewed by:	sjg
Sponsored by:	DARPA, AFRL
Differential Revision:	https://reviews.freebsd.org/D12701
2017-10-18 00:33:20 +00:00
Jonathan Anderson
6f6b66a827 Improve logic of CLEANFILES+=${PROG_FULL}.{bc,ll}.
The build rule describing how to create ${PROG_FULL}.{bc,ll} is only
dependent on LLVM_LINK being defined, not on MK_DEBUG_FILES being "yes".
Move the addition of ${PROG_FULL}.{bc,ll} out of the conditional block
under `.if ${MK_DEBUG_FILES} != "no"` and up next to where the build
rules for ${PROG_FULL}.{bc,ll} are defined.

Reviewed by:	emaste
MFC after:	1 week
Sponsored by:	DARPA, AFRL
Differential Revision:	https://reviews.freebsd.org/D12703
2017-10-18 00:30:15 +00:00
Jonathan Anderson
fd8103ed43 Add LLVM IR libraries to CLEANFILES.
We previously taught the build system how to create files like libfoo.bc,
but neglected to teach it about cleaning such files up. Rectify this now.

MFC after:	1 week
Sponsored by:	DARPA, AFRL
2017-10-17 16:29:50 +00:00
Enji Cooper
98be998591 Add appropriate safety belts for riscv so it compiles out of the box when MK_COVERAGE ==yes 2017-10-10 08:07:05 +00:00
Enji Cooper
50896984cd MFhead@r324482 2017-10-10 06:26:12 +00:00
Enji Cooper
aefcb745d8 Per r324481, remove MK_COVERAGE_SUPPORT 2017-10-10 06:20:55 +00:00
Warner Losh
c8550231ef Disconnect libstand from the build.
Remove libstand from the src/lib build. Remove LIBSTAND from
bsd.libnames.mk. Add affected files to the obsolete files list.

Sponsored by: Netflix
2017-10-09 22:12:57 +00:00
Enji Cooper
01f06122f9 Add MK_COVERAGE_SUPPORT
This is being done for reasons parallel to MK_TESTS_SUPPORT's addition in
^/head@r273449

Unlike ^/head@r273449 though, we do want binaries to be built with coverage
support in the libraries phase, but not in the cross-tools phase.
2017-10-09 01:17:12 +00:00
Jeremie Le Hen
e415aa2846 Remove rcmds.
If they are still needed, you can find them in the net/bsdrcmds port.

This was proposed June, 20th and approved by various committers [1].
They have been marked as deprecated on CURRENT in r320644 [2] on July, 4th.
Both stable/11 and release/11.1 contain the deprecation notice (thanks to
allanjude@).

Note that ruptime(1)/rwho(1)/rwhod(8) were initially thought to be part of
rcmds but this was a mistake and those are therefore NOT removed.

[1] https://lists.freebsd.org/pipermail/freebsd-arch/2017-June/018239.html
[2] https://svnweb.freebsd.org/base?view=revision&revision=320644

Reviewed by:	bapt, brooks
Differential Revision:	https://reviews.freebsd.org/D12573
2017-10-06 08:43:14 +00:00
Warner Losh
0b972ac92e Support armv7 builds for userland
Make armv7 as a new MACHINE_ARCH.

Copy all the places we do armv6 and add armv7 as basically an
alias. clang appears to generate code for armv7 by default. armv7 hard
float isn't supported by the the in-tree gcc, so it hasn't been
updated to have a new default.

Support armv7 as a new valid MACHINE_ARCH (and by extension
TARGET_ARCH).

Add armv7 to the universe build.

Differential Revision: https://reviews.freebsd.org/D12010
2017-10-05 23:01:33 +00:00
Enji Cooper
e31df75228 Fix .gcda to .pico (bsd.lib.mk) and .o (bsd.prog.mk) dependency mapping
The logic wasn't using a filtered version of SRCS -- it was using the
unfiltered version. This was causing some hilarity with unnecessary
dependencies, like headers and the like in lib/libc/... .

Also use .pico with bsd.lib.mk, not .o -- .o doesn't use SHARED_C*FLAGS,
which doesn't contain _COV_FLAG, which means that the .gcda's would have
relied on objects that didn't build them as a side-effect.
2017-10-05 07:10:28 +00:00
Andriy Voskoboinyk
9e63610e82 Mark libifconfig as private library in src.libnames.mk (completes r305700) 2017-10-01 12:54:40 +00:00
Enji Cooper
13bd47158e Use a pattern for GCDAS that actually works 2017-10-01 05:25:55 +00:00
Enji Cooper
25311a8015 Use a simpler pattern than what I used in r324150 2017-10-01 05:16:19 +00:00
Enji Cooper
d1335b630e Make the dependency relationship between .gcda and .o files explicit 2017-10-01 02:39:07 +00:00
Enji Cooper
d5db4328ad MFhead@r324148 2017-10-01 02:28:16 +00:00
Wojciech Macek
76541eb0a7 Compile loader as Little-Endian on PPC64/POWER8
Add flag to the makefile to allow loader compilation as
  Little-Endian 32-bit executable.
  Usage:

  make WITH_LOADER_FORCE_LE=yes -C sys/boot all

Submitted by:          Wojciech Macek <wma@freebsd.org>
Reviewed by:           imp, nwhitehorn
Obtained from:         Semihalf
Sponsored by:          QCM Technologies
Differential revision: https://reviews.freebsd.org/D12421
2017-09-29 06:36:19 +00:00
Enji Cooper
1bf78a6fe1 Unbreak pic library link/compilation when MK_COVERAGE == no
Use a separate variable (PIC_OBJS) for the objects that should be in a
pic-enabled static library.

This unbreaks libexec/rtld-elf compilation when MK_COVERAGE == no.
2017-09-24 20:16:38 +00:00
Enji Cooper
1207267e5c MFhead@r323974 2017-09-24 19:48:46 +00:00
Enji Cooper
95a55bd8cd Fix logic errors and simplify installation process
.gcda files should be installed, not .gcno files. It's easier to
formulate which .gcda's to install based on the SRCS and their
extension in bsd.{lib,prog}.mk .
2017-09-17 03:08:00 +00:00
Enji Cooper
b78bcbac59 MFhead@r323646 2017-09-16 16:37:18 +00:00
Simon J. Gerraty
2506d70010 Use OBJS_SRCS_FILTER to control setting OBJS from SRCS
Some makefiles do reachover builds.
In some cases it is convenient to list subdirs of the distribution
in SRCS.

It is not very convenient, or always even desirable to have corresponding
subdirs in .OBJDIR, so OBJS_SRCS_FILTER allows the makefile to choose.
The default value 'R' matches existing practice.

But a makefile can set OBJS_SRCS_FILTER= T (the R gets added by
bsd.init.mk) to avoid the need for subdirs in .OBJDIR

Differential Revision:	https://reviews.freebsd.org/D12218
Reviewed by:	bdrewery
2017-09-16 05:42:27 +00:00
Enji Cooper
8fcbcc2d74 MFhead@r323635 2017-09-16 03:54:20 +00:00
Kyle Evans
bf51ff5670 bsdgrep: disable TRE implementation by default
Start the phasing out of TRE by disabling it by default. r317254 introduced
a BSD_GREP_FASTMATCH knob (defaulting to on) for testing of bsdgrep with and
without TRE enabled. More bugs have cropped up since then, and
WITHOUT_BSD_GREP_FASTMATCH has shown in testing to be more stable than its
counterpart.

Approved by:	emaste (mentor)
Differential Revision:	https://reviews.freebsd.org/D12381
2017-09-15 15:57:15 +00:00
Ryan Libby
edaa206d08 gcc builds: reenable -Wstrict-overflow for bsd.sys.mk
This effectively reverts r304877, after having relegated the warning
suppression to the zic(8) makefile in r323572.

Reviewed by:	emaste
Sponsored by:	Dell EMC Isilon
X-Differential Revision:	https://reviews.freebsd.org/D12284
2017-09-14 03:41:49 +00:00
Enji Cooper
bed74aeeaf Chase recent changes to ^/head/share/mk/bsd.lib.mk
Doesn't compile with libexec/rtld-elf when WITH_LIB32 == yes for some
reason.. but it's a WiP.
2017-09-11 19:57:04 +00:00
Enji Cooper
5be4ad9e80 MFhead@r323343 2017-09-09 05:42:23 +00:00
Bryan Drewery
5179958a28 Tweak comment for install -S usage since it does not impact the build.
The -S flag is currently ignored for builds since we filter through
tools/install.sh that is intended for both non-root and cross-builds.

Sponsored by:	Dell EMC Isilon
X-MFC-With:	r322565
2017-09-08 19:20:42 +00:00
Enji Cooper
9a1f7ce50c Revert change (r322952) that was not yet destined for ^/head
This unbreaks the build.

This happened because of a botched "svn switch".

Reported by:	cem
2017-08-27 17:08:08 +00:00
Enji Cooper
b5197de15e Try and rebase the bsd.lib.mk changes after ^/head@r322824 was merged in
Unfortunately the snippet's now broken -- need to get the matching expressions to
work properly.
2017-08-27 16:46:51 +00:00
Enji Cooper
1be4c195db MFhead@r322870 2017-08-25 02:48:31 +00:00
John Baldwin
de6feefdb7 Improve the coverage of debug symbols for MK_DEBUG_FILES.
- Include debug symbols in static libraries.  This permits binaries
  to include debug symbols for functions obtained from static libraries.
- Permit the C/C++ compiler flags added for MK_DEBUG_FILES to be
  overridden by setting DEBUG_FILES_CFLAGS.  Use this to limit the debug
  information for llvm libraries and binaries.

Reviewed by:	emaste
Sponsored by:	DARPA / AFRL
Differential Revision:	https://reviews.freebsd.org/D12025
2017-08-23 23:30:25 +00:00
Enji Cooper
9efc32ad99 Only populate GCNOS if running clean or install targets 2017-08-23 03:54:34 +00:00
Enji Cooper
1a2361e50e Need to account for SRCS that don't get compiled with --coverage, e.g., .S files 2017-08-20 07:06:13 +00:00
Enji Cooper
0623f2fd61 Don't grok SOBJS directly -- only refer to the .pico files 2017-08-19 19:06:40 +00:00
Enji Cooper
de9c083936 Apparently SOBJS, etc, can have duplicates 2017-08-19 18:57:43 +00:00
Enji Cooper
e3b52b5eac Don't override COVERAGEDIR in bsd.own.mk 2017-08-19 18:52:43 +00:00
Enji Cooper
1ed13d2ea8 Use proper spelling for the directory variable
It's GCNOSDIR_foo:T, not GCNOS_foo:TDIR.
2017-08-19 18:52:13 +00:00
Enji Cooper
66e5cab5c0 Complete bsd.cov.mk integration
Pass through appropriate objects via COV_OBJS in bsd.lib.mk (based on
SOBJS), and appropriate objects via bsd.prog.mk (OBJS).

While here, do more intelligent things in terms of iterating over COV_OBJS,
building lists of items to install with the GCNOS variable/adding GCNOS to
FILESGROUPS, etc. This reduces the 2 unrolled .for loops into 1.
2017-08-19 18:31:00 +00:00
Enji Cooper
a451e71162 MFhead@r322675 2017-08-18 21:37:26 +00:00
Enji Cooper
611dfac360 - Only pass --coverage if NO_SHARED != yes (it doesn't work with static
libraries).
- Fix typo (${PROGNAME}.full should be ${PROG_FULL} -- this fixes installing
  usr.sbin/xinstall).
- Pass through appropriate sentinel for determining whether or not the program
  should be compiled with debug symbols, and hence whether or not --coverage
  should be enabled.
2017-08-17 20:10:30 +00:00
Enji Cooper
2e9742c123 Handle .ppico suffixed shared object files 2017-08-17 20:05:27 +00:00
Enji Cooper
d2258f7071 Fix libc_pic.a
In order to support coverage binaries and non-coverage binaries with libraries,
separate libraries need to be created which don't have coverage symbols (and
dependent symbols on libc) in them. libc_pic.a for instance will not link with
binaries if it's compiled with --coverage.

This allows buildworld to complete, minus rtld-elf -- it's a special snowflake
that needs to be resolved with a solution that I don't yet possess.
2017-08-17 20:04:17 +00:00
Bryan Drewery
96dd05dd7d Quote ${MAKE} when passing in env in case it contains spaces.
Downstream we are wrapping MAKE with a limits(1) call which
interferes with these non-quoted cases.

Sponsored by:	Dell EMC Isilon
2017-08-16 17:54:24 +00:00
Bryan Drewery
04594feee5 Use -S for library installations except for -DNO_ROOT builds.
Also disable this if NO_SAFE_LIBINSTALL is defined.

There is little harm in always using -S and it fixes several issues:
- A race during 'make libraries' where, for example, libgcc_s is being
  installed while another library is trying to link against it.  This is
  possible because libgcc_s is connected in both _prereq_libs and
  _startup_libs.  The first build (_prereq_libs) sets MK_PROFILE=no
  while the 2nd pass (_startup_libs) enables MK_PROFILE.  Thus the
  libgcc_s library *is* present in WORLDTMP for other libraries to
  link to, so serializing further items in _startup_libs is not
  required.  Just ensuring that libgcc_s is installed atomically (via
  rename(2)) is enough. [1]
- Installation to a running system where some library that cannot be
  detected, copied and used from the temporary INSTALLTMP with LD_LIBRARY_PATH
  that the build itself uses for installation.  Such an example is having the
  install an NSS module for user lookups that install(1) uses while
  concurrently installing the module in another process.  This is not
  a problem for the FreeBSD base build but can be for downstream
  vendors.  While this is a very specific case, installation to a
  running system with non-atomic library installation is prone to many
  problems.  A further step still is to install in proper dependency
  ordering.

Reported by:	dhw many times [1]
Sponsored by:	Dell EMC Isilon
MFC after:	2 weeks
2017-08-16 05:02:31 +00:00