dragonfly.git
19 months agokernel: Add simpler make depend variant for kernel.
zrj [Mon, 28 May 2018 15:07:31 +0000 (18:07 +0300)]
kernel: Add simpler make depend variant for kernel.

For now only for make {build,native}kernel -DNO_MODULES. The modules part
is more involved and will follow next.

Idea is to avoid a seprate mkdep(1) run before the actual compilation by
simply writing out separate dependency files while compiling in one go.
This variant reuses depenency information from last compilation, while
mkdep(1) variant reconstructs the dep chains on the current tree.
Depending if headers where removed or added both variants can miss out.

Due to several constraints (checks in makefiles if .depend file already
exists and implicit handling of device firmware stub files) try to mimic
previous behaviour by reconstructing depend on next quickkernel.
Later on we could remove anchoring on hack.So, creation of .depend file
and include all foo.d dependency files directly using bmake's .dinclude
directive that acts on stale dependencies as .MAKE.DEPENDFILE .depend.
Also turns out mkdep(1) was not tracking deps for ${MFILES:S/.m$/.c/}},
this simpler variant catches them and only vmx_genassym.d is not hooked
in .depend (coming from sys/platform/pc64/conf/files).
Shaves ~30s for make -jN nativekernel -DNO_MODULES.

19 months agokernel/hpt*: Mangle names of foreign binary objects.
zrj [Mon, 28 May 2018 14:51:38 +0000 (17:51 +0300)]
kernel/hpt*: Mangle names of foreign binary objects.

We already do it for the firmware objects (.fwo). Explictly handle
unpacked precompiled objects to separate them from other generic ones.
These are not device firmware and they do run on CPU, also they have
different osabi tag, so without adjustment the ld.gold (default ld)
will change osabi for the whole linked object.
Having them seprated from the rest simplifies the depend logic, such
objects have no source or headers dependencies other than hardcoded
one in Makefiles. Add missing dependencies on .uu in kernel modules.

19 months agobuild: Remove use of unsupported flag.
zrj [Mon, 28 May 2018 14:34:59 +0000 (17:34 +0300)]
build: Remove use of unsupported flag.

It looks like a inherited feature that was used in patched GCC.

19 months agokernel: Normalize conf/files rules.
zrj [Mon, 28 May 2018 14:24:32 +0000 (17:24 +0300)]
kernel: Normalize conf/files rules.

Prefer to use config(8) variables to reduce duplication
In the recipies for atomic.c we override global -fno-frame-pointer only
if not profiling (at the moment unusable .mcount), add missing ${WERROR}.
For vkernel64/mp.c just swap additions for consistency.

We could merge the ${WERROR} directly into ${NORMAL_C} later on.

19 months agokernel - Add support for MosChip PCIe serial com, and console support (2)
Matthew Dillon [Tue, 29 May 2018 03:10:01 +0000 (20:10 -0700)]
kernel - Add support for MosChip PCIe serial com, and console support (2)

* Fix oops in last commit.

19 months agokernel - Add support for MosChip PCIe serial com, and console support
Matthew Dillon [Tue, 29 May 2018 02:58:03 +0000 (19:58 -0700)]
kernel - Add support for MosChip PCIe serial com, and console support

* Add support for the MosChip PCIe serial com (brand is typically
  'StarTech' 'Natikve PCI Express RS232 serial adapter card with
  16550 UART'.

* Add late console support.  Console operation works the same
  way, set it up in /boot/loader.conf.  Typically:

  sio0.flags=0x00
  sio4.flags=0x30
  sio4.baud=115200
  #set boot_serial="YES" <-- commented out, do not set this

  Note that at the point a late-configured serial port
  wants to become the console, syscons is probably already
  the console, so you have to use flags 0x30 instead of
  0x10 to force it to change the console.

* Note, you do not have to set boot_serial="YES", because it
  won't really help since the adapter isn't accessible to the
  boot loader or to the kernel until the PCIe device probes
  in the middle of the boot sequence.

* The kernel now retests for consoles at the end of its normal
  configuration sequence, which allows the now-available
  sioN devices from PCIe card(s) to become the console.

* Remove syscons sccnterm() code that tried to undo the syscons
  console designation.  This code was never called in the past
  because the system console couldn't actually change once
  selected.  But now it can, and the code completely blows up
  syscons for numerous reasons.  Just leave the console
  designation intact from syscons's point of view (the main
  system will be vectored elsewhere so syscons will simply
  not receive new kernel console reads and writes).

* Add a siocntxwait() call before changing com parameters,
  since we are potentially changing the baud rate here.

* Change how the SIO driver assigns baud rates for the console
  to handle late-console configurations.  Also, allow sio*.baud
  variables in loader.conf to override the default com rate.

* Add entries for com5 and com6 to /etc/remote, and default to
  a more reasonable baud rate of 115200.

19 months agoFix missing make depend for quickkernel.
zrj [Mon, 28 May 2018 05:41:08 +0000 (08:41 +0300)]
Fix missing make depend for quickkernel.

Only realquickkernel should skip it.

19 months agokernel - Fix rare pmap_scan_callback() panic
Matthew Dillon [Sun, 27 May 2018 15:45:28 +0000 (08:45 -0700)]
kernel - Fix rare pmap_scan_callback() panic

* Fix a panic where pmap_scan_callback() can sometimes call
  pv_put() with a NULL pd_pv.

19 months agohammer2 - Fix missing initialization (fix broken root mount)
Matthew Dillon [Sun, 27 May 2018 15:31:06 +0000 (08:31 -0700)]
hammer2 - Fix missing initialization (fix broken root mount)

* For hammer2 root mounts a missing initialization resulted in
  a garbage test, causing root mounts to fail under some
  circumstances.

* Properly initialize the 'done' variable.

19 months agohammer2 - Be a be more verbose in the mount and getroot path
Matthew Dillon [Sun, 27 May 2018 15:26:21 +0000 (08:26 -0700)]
hammer2 - Be a be more verbose in the mount and getroot path

* kprintf more info when a hammer2 mount fails with EINVAL

19 months agolibipfw3: Clean up the Makefiles a bit.
Sascha Wildner [Sat, 26 May 2018 21:41:15 +0000 (23:41 +0200)]
libipfw3: Clean up the Makefiles a bit.

19 months agoMakefile.inc1: Do not continue the build upon an error in various cases.
Sascha Wildner [Sat, 26 May 2018 16:41:33 +0000 (18:41 +0200)]
Makefile.inc1: Do not continue the build upon an error in various cases.

Before this commit, the build would limp on even though a library
failed building, for example, leading to sometimes confusing followup
errors later in the build. It was also more difficult to see directly
why a build really failed in the first place.

To prevent this, make various targets use '&&' instead of ';' to
chain commands.

People wanting the build to carry on for as long as possible, can
always use make's -k option.

19 months agohammer2 - Fix focus vs modify race
Matthew Dillon [Fri, 25 May 2018 02:22:52 +0000 (19:22 -0700)]
hammer2 - Fix focus vs modify race

* Fixes rare panics when e.g. removing large numbers (as in hundreds of
  millions) of directory entries.

  The XOP collection code holds the collected cluster but cannot
  safely lock it without risking a deadlock against backend operations
  or dead backends.  The hold on the chain prevents its destruction,
  but does not prevent another thread from locking it and issuing
  hammer2_chain_modify().

* Fix bugs due to the unsafe nature of an unlocked chain's content,
  especially chain->data and chain->dio, by adding an interlock between
  frontend access to the data and backend hammer2_chain_modify() calls.
  Held but unlocked chains are used by the XOP API to pass chains back to
  the frontend.

* Remove the automatic (because it is unsafe) dio synchronization
  in hammer2_xop_collect() and instead implement an API that the
  frontend can use to safely access the data. The API is
  hammer2_xop_gdata()/hammer2_xop_pdata().

* Remove the unsafe hammer2_cluster_rdata().  Use gdata/pdata for this
  too.

* Rewire hammer2_inode_get() to pass-in a hammer2_xop_head instead
  of a hammer2_cluster so it can use the gdata/pdata API too.

19 months agohammer2 - remove hammer2_cluster_wdata()
Matthew Dillon [Thu, 24 May 2018 23:48:31 +0000 (16:48 -0700)]
hammer2 - remove hammer2_cluster_wdata()

* Remove hammer2_cluster_wdata(), function is not applicable for
  context any more since the focus chain is held, but no longer
  locked.

19 months agoncurses: Add few missing dependencies.
zrj [Sat, 26 May 2018 12:15:11 +0000 (15:15 +0300)]
ncurses: Add few missing dependencies.

The lib_gen.c is generated source and it's dependencies too.
This should solve rare races where lib_gen.c is partially constructed,
even if it is not fatal problem (only XSI req for callable functions).

19 months agodrm/i915: Sync hpd_pulse return values with Linux
François Tigeot [Sat, 26 May 2018 11:32:07 +0000 (13:32 +0200)]
drm/i915: Sync hpd_pulse return values with Linux

Now that we know how to handle irqreturn enums, we can use more
Linux code unmodified.

19 months agoMakefile.inc1: Reduce strict ordering where not needed.
zrj [Sat, 26 May 2018 10:02:04 +0000 (13:02 +0300)]
Makefile.inc1: Reduce strict ordering where not needed.

Helps with parallel builds. Shaves off about 40s from make buildworld.

19 months agoMakefile.inc1: Update _prebuild_libs dependencies.
zrj [Sat, 26 May 2018 09:54:22 +0000 (12:54 +0300)]
Makefile.inc1: Update _prebuild_libs dependencies.

The lib/libdevattr is not strictly needed in _prebuild_libs, because
it has dependency on libprop only if libdevattr/mktest is hooked.

19 months agoMakefile.inc1: Reduce strict ordering for libc.
zrj [Sat, 26 May 2018 09:44:57 +0000 (12:44 +0300)]
Makefile.inc1: Reduce strict ordering for libc.

Mark lib/csu as a hard dep for lib/libc (needed only for libc.so link).
Even if lib/libc_rtld is not strictly needed to be handled at all in
Makefile.inc1 (its _pic.a archive only used by libexec/rtld-elf),
having it here is not a big issue since both libc and libc_rtld spend a
lot of time in make depend and running those in parallel helps somewhat.

19 months agostrip(1): Perform safe install.
zrj [Sat, 26 May 2018 06:56:08 +0000 (09:56 +0300)]
strip(1): Perform safe install.

Pass -S flag to install(1) as it is currently done for /bin/sh.
The install(1) might call strip(1) on itself when installing.

19 months agobuildworld: Add support to skip toolchain if requested.
zrj [Fri, 25 May 2018 07:50:12 +0000 (10:50 +0300)]
buildworld: Add support to skip toolchain if requested.

These two new features are mainly aimed at developers, to speed up their
rebuilds on development branches. Often there are no changes that would
influence the toolchain components in any way. So it is reasonable to
skip rebuild of certain parts (mostly to avoid building c++ sources).

Previously we were rebuilding both main and alternative compilers twice
during buildworld for a full bootstrap that allowed us to avoid certain
breakages and not to keep adding lots of backwards compatibility hacks.

The new additions:
  * -DNO_CROSSTOOLS - skip compiler and binutils bootstrap;
  * -DNO_TOOLCHAINS - do not build compilers/binutils for installworld.

Both features are aimed for testing DESTDIR targets. Decision to
activate any of these features is left to the user's own discretion
based on reviewing the commits to the git repository or local clone.

The NO_CROSSTOOLS feature is implemented by installing the shell script
wrappers that add a sysroot and patch the specs. Idea is not to disturb
in any way the Makefile.inc1 or objformat logic at this moment. Since
all the main toolchain tools are installed as shell scripts this has a
nice bonus for quick hooks/probes and other hacky/pretty stuff without
disturbing the rest of the buildworld. You can even add your favorite
static analyser tool, just don't forget to change default include path
to /usr/obj/../world_x86_64/usr/include for it.

The objformat changes for sysroot would only make sense when we make a
port for another architecture. None of the new features are considered
to be guessTM enabled automatically at this moment. To be sure that
nothing has changed since previous buildworld from other changes in the
source tree one would have to compile and hex-diff the final products.
Keep in mind that libraries coming with the compilers will be rebuilt
even with both knobs passed. This should help catching most of the
issues before installworld step and not on the next {build,quick}world.

Both knobs are not documented in make.conf(5) on purpose. It is highly
advised *not* adding any of these knobs into make.conf, sooner or later
you will forget it and *will* get yourself in world recovery situation:
 a) world backup machinery (unless you had NO_BACKUP=true in make.conf);
 b) perform manual bootstrap to fix up the breakage;
 c) restore from H1/H2 snapshots (toolchain components are located in
    /usr/libexec/* and /usr/lib/${CCVER}/ directories);
 d) clean overwrite by mounting from other system (like usb img stick).

Features should work with quickworld too.
To put things in perspective here is a little chart of the cleaned
fresh 'make -jX buildworld' times impact on few setups:

 netbook:      hw.model: Intel(R) Core(TM) i3 CPU  U380  @ 1.33GHz
 compiler:     gcc50 as cc(1) (4gb usb stick for /, ironlake cpu)
 make -j3  buildworld [-DNO_CROSSTOOLS] [-DNO_TOOLCHAIN]

      min:sec      | STANDARD |   NO_C   |   NO_T   | NO_C/NO_T |
 ----------------------------------------------------------------
 gcc50             |   73:56  |   59:57  |   54:11  |   39:38   |
 gcc47 (host+world)|    N/I   |    N/I   |    N/I   |   37:51   |
 ----------------------------------------------------------------

 laptop setup: hw.model: Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz
 compiler:     gcc50 as cc(1) (default)
 make -j9  buildworld [-DNO_CROSSTOOLS] [-DNO_TOOLCHAIN]

      min:sec      | STANDARD |   NO_C   |   NO_T   | NO_C/NO_T |
 ----------------------------------------------------------------
 gcc50             |   17:06  |   13:57  |   12:58  |   09:42   |
 gcc50 gcc47 (def) |   20:18  |   16:03  |   14:58  |   10:37   |
 gcc50 gcc80       |   24:24  |   18:06  |   17:31  |   11:23   |
 gcc50 gcc47 gcc80 |   27:47  |   20:17  |   19:23  |   12:00   |
 ----------------------------------------------------------------

 blade setup:  dual hw.model: Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
 compiler:     gcc80 as cc(1) (soon gcc80 will replace gcc50 in master)
 make -j32 buildworld [-DNO_CROSSTOOLS] [-DNO_TOOLCHAIN]

      min:sec      | STANDARD |   NO_C   |   NO_T   | NO_C/NO_T |
 ----------------------------------------------------------------
 gcc80             |   06:58  |   05:19  |   05:33  |   03:51   |
 gcc80 gcc47 (def*)|   08:03  |   06:06  |   06:02  |   04:05   |
 gcc80 gcc50       |   08:23  |   06:12  |   06:19  |   04:08   |
 gcc80 gcc47 gcc50 |   09:24  |   06:59  |   06:51  |   04:21   |
 ----------------------------------------------------------------

19 months agogcc80: Shorten build time in libraries target.
zrj [Thu, 24 May 2018 12:35:30 +0000 (15:35 +0300)]
gcc80: Shorten build time in libraries target.

When compiling compiler libraries build the minimal set of tools
required to generated the needed headers. Rest of the tools including
libcpp.na will be built during more parallel gnu/usr.bin stage.
Shaves off ~30s from make buildworld.

While there, do the same for gcc47 and gcc50. Also clean stale file.

19 months agoMakefile.inc1: Add libelf to _prebuilt_libs.
zrj [Thu, 24 May 2018 12:33:03 +0000 (15:33 +0300)]
Makefile.inc1: Add libelf to _prebuilt_libs.

Even if it is internallib for libexecinfo it is very close to race in
_generic_libs.

While there, add ordering for liblzma against libpthread.

19 months agotools/make_libdeps.sh: Use sys.mk from src/.
zrj [Thu, 24 May 2018 12:16:00 +0000 (15:16 +0300)]
tools/make_libdeps.sh: Use sys.mk from src/.

While there, remove not needed /bin from PATH.

Suggested-by: swildner
19 months agoRemove some duplicated includes.
Sascha Wildner [Thu, 24 May 2018 12:23:51 +0000 (14:23 +0200)]
Remove some duplicated includes.

19 months agotools/make_libdeps.sh: Add needed mangling rules.
zrj [Thu, 24 May 2018 09:21:09 +0000 (12:21 +0300)]
tools/make_libdeps.sh: Add needed mangling rules.

For tool to work properly:
 * suppess all of the -Wl,--foo (yes, we have those unfortunately);
 * mangle all of pthread references;
 * ignore libstdc++'s ../components/blah/libfoo_pic.a (used as int libs);
 * remangle internallib libelf_pic.a for libexecinfo;
 * mangle all of the privatelibs to get correct lib location.

19 months agotools/make_libdeps.sh: Adjust invocation.
zrj [Thu, 24 May 2018 09:16:49 +0000 (12:16 +0300)]
tools/make_libdeps.sh: Adjust invocation.

Small changes:
 * add /sbin to the patch for `sysctl hw.platform` in sys.mk;
 * use tr(1) from /bin instead of rs(1) that might truncate;
 * enforce C collate;
 * explicitly sort find(1) results.

19 months agotools/make_libdeps.sh: Update directory list.
zrj [Thu, 24 May 2018 09:13:53 +0000 (12:13 +0300)]
tools/make_libdeps.sh: Update directory list.

20 months agohammer2 - Fix kmalloc pool blowout on low-memory machines
Matthew Dillon [Thu, 24 May 2018 00:25:44 +0000 (17:25 -0700)]
hammer2 - Fix kmalloc pool blowout on low-memory machines

* Fix a kmalloc pool blown that can occur on low-memory machines due
  to too many disconnected hammer2_inode structures building up.

* Was previously fixed for things like rm -rf and bulk renames,
  but not for setattr (aka chown/chmod -R ops).

Reported-by: gjs278
20 months agodrm/linux/timer.h: No need to protect a callout struct from MP accesses
François Tigeot [Wed, 23 May 2018 20:33:36 +0000 (22:33 +0200)]
drm/linux/timer.h: No need to protect a callout struct from MP accesses

Spotted-by: Imre Vadász <imre@vdsz.com>
20 months agodrm - No need to protect a callout struct from MP accesses.
Imre Vadász [Wed, 23 May 2018 18:21:10 +0000 (20:21 +0200)]
drm - No need to protect a callout struct from MP accesses.

20 months agobsd-family-tree: Fix SVN tag.
Sascha Wildner [Wed, 23 May 2018 12:24:41 +0000 (14:24 +0200)]
bsd-family-tree: Fix SVN tag.

20 months agoAnnounce DragonFly 5.2.1
Eitan Adler [Wed, 23 May 2018 04:57:54 +0000 (04:57 +0000)]
Announce DragonFly 5.2.1

20 months agobsd.kern.mk: Remove gcc80 workaround.
zrj [Wed, 23 May 2018 05:50:36 +0000 (08:50 +0300)]
bsd.kern.mk: Remove gcc80 workaround.

No longer needed.

20 months agodrm/i915: Disable few unused const structs and functions.
zrj [Wed, 23 May 2018 05:30:46 +0000 (08:30 +0300)]
drm/i915: Disable few unused const structs and functions.

No functional change.

20 months agobtxld(8): Convert to hostprog.
zrj [Mon, 21 May 2018 16:52:20 +0000 (19:52 +0300)]
btxld(8): Convert to hostprog.

There is no point to provide this utility in base. We are not planing to
bring back i386 support. Move it into sys/boot/pc32/ for easier handling.

This way the AOUT_H_FORCE32 now is confined to the same pc32/ directory.
The <sys/imgact_aout.h> has override for it to create proper btx header.

For future we should make btxld endian neutral.

20 months agobtools: Obsolete pre hostprog era cc_tools.
zrj [Mon, 21 May 2018 09:38:00 +0000 (12:38 +0300)]
btools: Obsolete pre hostprog era cc_tools.

We no longer depend on them so this shaves about 1 min from buildworld.

Verified by comparing intermediates and final products.

20 months agohammer2(8): Clean up the Makefile a bit.
Sascha Wildner [Mon, 21 May 2018 08:46:20 +0000 (10:46 +0200)]
hammer2(8): Clean up the Makefile a bit.

Reported-by: zrj
20 months agoacpi: Add SUBDIR_ORDERED for the ACPICA tools for better parallelism.
Sascha Wildner [Mon, 21 May 2018 08:17:44 +0000 (10:17 +0200)]
acpi: Add SUBDIR_ORDERED for the ACPICA tools for better parallelism.

Reported-by: zrj
20 months agohammer2 - Beef up bulkfree buffering
Matthew Dillon [Mon, 21 May 2018 05:59:37 +0000 (22:59 -0700)]
hammer2 - Beef up bulkfree buffering

* Beef up the bulkfree buffering to allow a lot more memory
  to be used for the in-memory freemap copy.

* Add a -m mem[k,m,g] override option for hammer2 bulkfree.

* Reduce console spam.

20 months agoi386 removal, part 68/x: Remove a number of obsolete Makefiles from gnu/.
Sascha Wildner [Sun, 20 May 2018 11:19:17 +0000 (13:19 +0200)]
i386 removal, part 68/x: Remove a number of obsolete Makefiles from gnu/.

Reported-by: zrj
20 months agokbdcontrol(1): Remove not needed defines.
zrj [Sun, 20 May 2018 14:28:36 +0000 (17:28 +0300)]
kbdcontrol(1): Remove not needed defines.

While there, do the same for vidcontrol(1).

20 months agoshare/syscons: Separate hostprog and remove it from btools.
zrj [Sun, 20 May 2018 14:22:51 +0000 (17:22 +0300)]
share/syscons: Separate hostprog and remove it from btools.

The scrnmaps are not needed for buildworld.

20 months agoboot/pc32: Separate hostprog.
zrj [Sun, 20 May 2018 14:19:55 +0000 (17:19 +0300)]
boot/pc32: Separate hostprog.

Add guard in common sys/boot/pc32/Makefile.inc.
Hostprog shall not take any of those definitions.

20 months agoboot/pc32: Fix typo in mbr.
zrj [Sun, 20 May 2018 14:14:18 +0000 (17:14 +0300)]
boot/pc32: Fix typo in mbr.

Wrong patch in faa6f4d7da5ad6ef2d3e68dd2671b6d6f8161a9b,
the generated mbr was still OK (bmake warning).

While there, only extract XREADORG constant from boot1*.out and not
from bootasmdef.nx in case it ever get one.

20 months ago{un,}vis.3: Bring back some small fixes we had earlier.
Sascha Wildner [Sun, 20 May 2018 09:09:38 +0000 (11:09 +0200)]
{un,}vis.3: Bring back some small fixes we had earlier.

20 months agovm_page_alloc.9: Adjust for the removal of PG_BUSY.
Sascha Wildner [Sun, 20 May 2018 08:42:09 +0000 (10:42 +0200)]
vm_page_alloc.9: Adjust for the removal of PG_BUSY.

20 months agoip6.4: Clean up a bit.
Sascha Wildner [Sun, 20 May 2018 08:34:47 +0000 (10:34 +0200)]
ip6.4: Clean up a bit.

* Remove info about IPV6_IPCOMP_LEVEL which was removed along with IPsec.

* Fix a typo.

20 months agomtree/BSD.root.dist: Use spaces.
Sascha Wildner [Sun, 20 May 2018 08:09:09 +0000 (10:09 +0200)]
mtree/BSD.root.dist: Use spaces.

20 months agokernel - Change closefrom() EINTR behavior
Matthew Dillon [Sun, 20 May 2018 05:58:58 +0000 (22:58 -0700)]
kernel - Change closefrom() EINTR behavior

* closefrom() no longer breaks out of its loop if it gets an
  EINTR from a close().  EINTR can only occur from NFS in this
  situation, and the descriptor is still closed.  Any EINTR's
  which occur will be rolled up and returned after the loop
  completes.

* Callers usually ignore closefrom()'s return value anyway.

Suggested-by: mjg
20 months agobuild - Change default /root directory perms
Matthew Dillon [Sun, 20 May 2018 02:26:01 +0000 (19:26 -0700)]
build - Change default /root directory perms

* Change from 755 to 700.  700 is a more suitable default for
  ~root's home directory.

Reported-by: aly
20 months ago/usr/include/netinet6: Remove three unused IPsec related headers.
Sascha Wildner [Sat, 19 May 2018 22:47:05 +0000 (00:47 +0200)]
/usr/include/netinet6: Remove three unused IPsec related headers.

20 months agokgdb(1): Add missing "
Sascha Wildner [Sat, 19 May 2018 17:54:14 +0000 (19:54 +0200)]
kgdb(1): Add missing "

Reported-by: zrj
20 months agobsd.dep.mk: Split logic for CC and CXX handling.
zrj [Sat, 19 May 2018 07:39:24 +0000 (10:39 +0300)]
bsd.dep.mk: Split logic for CC and CXX handling.

Previously it assumed that cc(1) will be able to handle c++ sources.
That is not the case for compilers other than gcc or clang.

While there:
  * add MKDEPCC that could be used to override CC in certain
    more convoluted scenarios;
  * finally add a fix for hostprog deps, note that PATH skip from
    NXENV is intentional, we prefer not to use host's mkdep(1).

20 months agogcc50: Plug in WARNS framework for tools.
zrj [Sat, 19 May 2018 07:36:19 +0000 (10:36 +0300)]
gcc50: Plug in WARNS framework for tools.

At this point should be no-op change.

While there, do the same for gcc50 and gcc47.

20 months agogcc80: Create headers before depend in libbacktrace.
zrj [Sat, 19 May 2018 07:33:06 +0000 (10:33 +0300)]
gcc80: Create headers before depend in libbacktrace.

Avoids the situation where (if make depend fails for some reason)
build stops in a strange state.

While there, do the same for gcc50.

20 months agoboot/pc32: Filter out global LDFLAGS.
zrj [Sat, 19 May 2018 07:30:59 +0000 (10:30 +0300)]
boot/pc32: Filter out global LDFLAGS.

For cases when we need to set global LDFLAGS for compiler frontends.

20 months agokernel: Declare the enum for the guest type before using it.
Sascha Wildner [Sat, 19 May 2018 11:31:16 +0000 (13:31 +0200)]
kernel: Declare the enum for the guest type before using it.

Found-by: zrj
20 months agohammer(8): Add inline keywords in two prototypes of inline functions.
Sascha Wildner [Sat, 19 May 2018 11:30:36 +0000 (13:30 +0200)]
hammer(8): Add inline keywords in two prototypes of inline functions.

Found-by: zrj
20 months agokernel - Fix swapcache cleaning issue
Matthew Dillon [Sat, 19 May 2018 06:41:14 +0000 (23:41 -0700)]
kernel - Fix swapcache cleaning issue

* Fix a bug when a single object has swapcached pages.  In this
  situation, when swapcache exhausts its scan of the object it
  will fail to cycle back to the beginning.  This prevents it
  from cycling any further pages for the object.

* Does not corrupt the system or anything like that, but causes
  swapcache to behave in a way that can sometimes make it less
  useful.

Reported-by: tuxillo (java on monster)
20 months agoexamples/rconfig: Fix typos.
Sascha Wildner [Sat, 19 May 2018 01:18:23 +0000 (03:18 +0200)]
examples/rconfig: Fix typos.

20 months agortld-elf: -e is an ld(1) option.
Sascha Wildner [Fri, 18 May 2018 12:15:29 +0000 (14:15 +0200)]
rtld-elf: -e is an ld(1) option.

20 months agoerrno.9: Fix reference.
Sascha Wildner [Fri, 18 May 2018 05:23:38 +0000 (07:23 +0200)]
errno.9: Fix reference.

20 months agotop(1): Remove an unused file from the Makefile. We do pass HAVE_GETOPT.
Sascha Wildner [Thu, 17 May 2018 20:06:21 +0000 (22:06 +0200)]
top(1): Remove an unused file from the Makefile. We do pass HAVE_GETOPT.

Based-on-a-patch-by: zrj
20 months agoMerge branch 'vendor/TOP'
Sascha Wildner [Thu, 17 May 2018 20:04:54 +0000 (22:04 +0200)]
Merge branch 'vendor/TOP'

20 months agotop(1): Remove an unused file on the vendor branch.
Sascha Wildner [Thu, 17 May 2018 20:03:39 +0000 (22:03 +0200)]
top(1): Remove an unused file on the vendor branch.

20 months agotcsh: Remove MINIX specific file from the build.
Sascha Wildner [Thu, 17 May 2018 12:58:22 +0000 (14:58 +0200)]
tcsh: Remove MINIX specific file from the build.

20 months agoMerge branch 'vendor/TCSH'
Sascha Wildner [Thu, 17 May 2018 12:56:13 +0000 (14:56 +0200)]
Merge branch 'vendor/TCSH'

20 months agotcsh: Remove MINIX specific file. vendor/TCSH
Sascha Wildner [Thu, 17 May 2018 12:54:54 +0000 (14:54 +0200)]
tcsh: Remove MINIX specific file.

Reported-by: zrj
20 months agogcc80: Add missing atomic variants in libgcov.
zrj [Thu, 17 May 2018 09:33:36 +0000 (12:33 +0300)]
gcc80: Add missing atomic variants in libgcov.

Use correct config (currently unused).

20 months agogcc80: Partially implement TOOLCHAIN_CHECKING.
zrj [Thu, 17 May 2018 08:30:16 +0000 (11:30 +0300)]
gcc80: Partially implement TOOLCHAIN_CHECKING.

Will be needed for special feature testing in newer binutils.

20 months agocollect2(1): Trim sources that create empty objects.
zrj [Thu, 17 May 2018 07:20:55 +0000 (10:20 +0300)]
collect2(1): Trim sources that create empty objects.

20 months agoas(1): Trim sources that create empty objects.
zrj [Thu, 17 May 2018 07:17:27 +0000 (10:17 +0300)]
as(1): Trim sources that create empty objects.

20 months agoSync ACPICA with Intel's version 20180508 (from previously 20170831).
Sascha Wildner [Wed, 16 May 2018 16:50:43 +0000 (18:50 +0200)]
Sync ACPICA with Intel's version 20180508 (from previously 20170831).

Tons of fixes and improvements.

For detailed list, please see sys/contrib/dev/acpica/changes.txt.

20 months agoBring in an errno.9 manual page (based on NetBSD's).
Sascha Wildner [Wed, 16 May 2018 07:18:38 +0000 (09:18 +0200)]
Bring in an errno.9 manual page (based on NetBSD's).

20 months agoUpdate the pciconf(8) database.
Sascha Wildner [Tue, 15 May 2018 06:31:39 +0000 (08:31 +0200)]
Update the pciconf(8) database.

April 28, 2018 snapshot from https://pci-ids.ucw.cz

20 months agokernel/ipfw3: Remove unused malloc type.
Sascha Wildner [Tue, 15 May 2018 06:29:47 +0000 (08:29 +0200)]
kernel/ipfw3: Remove unused malloc type.

20 months agoRemove some headers via 'make upgrade'.
Sascha Wildner [Tue, 15 May 2018 06:28:25 +0000 (08:28 +0200)]
Remove some headers via 'make upgrade'.

20 months agoLTO: Few workarounds for gcc80 -flto.
zrj [Tue, 8 May 2018 15:20:05 +0000 (18:20 +0300)]
LTO: Few workarounds for gcc80 -flto.

20 months agobsd.sys.mk: Add handling for gcc80.
zrj [Wed, 2 May 2018 15:34:06 +0000 (18:34 +0300)]
bsd.sys.mk: Add handling for gcc80.

  * Turn off -Wformat-* family of warnings, the -Wformat-truncation and
    -Wformat-overflow is just too noisy for not much benefit.
    Do the same for -Wstringop-* family for now.
    Move these warnings (at their default settings) to WARNS_AUDIT.
  * Disable -Wimplicit-fallthough at WARNS=3, most of contrib is there.

20 months agoworld: Lower WARNS for bmake/tcsh contrib.
zrj [Wed, 2 May 2018 14:26:29 +0000 (17:26 +0300)]
world: Lower WARNS for bmake/tcsh contrib.

Revert this once issues have been solved upstream.

20 months agogcc80: Mark few sources as special for narrowing.
zrj [Wed, 2 May 2018 13:50:54 +0000 (16:50 +0300)]
gcc80: Mark few sources as special for narrowing.

While there, add -Wpragmas suppression for gcc47.

20 months agogcc80: Activate workaround for libgcc_pic.a.
zrj [Wed, 2 May 2018 13:43:22 +0000 (16:43 +0300)]
gcc80: Activate workaround for libgcc_pic.a.

Port 082b455eab27fdd982397abd20137b57c063d594 from gcc50.

20 months agogcc80: Hook into the buildworld as optional compiler.
zrj [Wed, 2 May 2018 13:42:24 +0000 (16:42 +0300)]
gcc80: Hook into the buildworld as optional compiler.

This alternative compiler can be activated by WORLD_ALTCOMPILER variable.
It will not be built by default.

20 months agogcc80: Add pregenerated manpages.
zrj [Wed, 2 May 2018 13:40:58 +0000 (16:40 +0300)]
gcc80: Add pregenerated manpages.

20 months agogcc80: Add pregenerated headers.
zrj [Wed, 2 May 2018 13:36:10 +0000 (16:36 +0300)]
gcc80: Add pregenerated headers.

20 months agogcc80: Bring in makefiles but leave them unhooked.
zrj [Wed, 2 May 2018 13:35:59 +0000 (16:35 +0300)]
gcc80: Bring in makefiles but leave them unhooked.

Makefile infrastructure was reused from gcc50 one writen by John Marino.

20 months agogcc80: Handle TZ specific "%+" format in strftime.
zrj [Wed, 2 May 2018 13:34:50 +0000 (16:34 +0300)]
gcc80: Handle TZ specific "%+" format in strftime.

After removal of %b and %r formats from kernel,
only one extra format remains.

Requested-by: swildner
20 months agogcc80: Remove throw() from protos in libstdc++ headers.
zrj [Wed, 2 May 2018 13:32:23 +0000 (16:32 +0300)]
gcc80: Remove throw() from protos in libstdc++ headers.

The throw() as dynamic exception specificators was deprecated in c++11
and removed in c++17 (empty was made as an alias to noexcept(true)).

Our libc headers does not have the __attribute__(__nothrow__) markups.
To make libstdc++ fully usable for clangs on DragonFly it makes sense
to just remove the throw() additions in c++ language binding headers.
Previously in gcc50 we were excluding them just for __clang__ case as in:
838772be3c028f0cfd9fae5da181858e4199863a

20 months agogcc80: Include <stdlib.h> for alloca() prototype.
zrj [Wed, 2 May 2018 13:19:51 +0000 (16:19 +0300)]
gcc80: Include <stdlib.h> for alloca() prototype.

20 months agogcc80: Add alternative variant of pthread presence checking.
zrj [Wed, 2 May 2018 13:18:32 +0000 (16:18 +0300)]
gcc80: Add alternative variant of pthread presence checking.

Port the 5f76495ba37ea12fb60cf57228cc78b83d889fb from gcc50.

20 months agogcc80: Adjust search paths for base compiler layout.
zrj [Wed, 2 May 2018 13:17:46 +0000 (16:17 +0300)]
gcc80: Adjust search paths for base compiler layout.

All tools are located in a common /usr/libexec/gcc80/ directory.

20 months agogcc80: Adjust default dynamic linker search location.
zrj [Wed, 2 May 2018 13:14:32 +0000 (16:14 +0300)]
gcc80: Adjust default dynamic linker search location.

Needed for split root setups.

20 months agogcc80: Document changes in contrib sources.
zrj [Wed, 2 May 2018 13:13:52 +0000 (16:13 +0300)]
gcc80: Document changes in contrib sources.

20 months agoAdd READMEs for new vendor/GCC80 branch.
zrj [Wed, 2 May 2018 13:08:23 +0000 (16:08 +0300)]
Add READMEs for new vendor/GCC80 branch.

Next planned major gcc version update is gcc-11.0 in next three years.
Roadmap: gcc34 -> gcc41 -> gcc44 -> gcc47 -> gcc50 -> gcc80 [-> gcc11]

20 months agox86_64/lapic: Use function pointer for EOI.
Sepherosa Ziehau [Mon, 14 May 2018 14:35:04 +0000 (22:35 +0800)]
x86_64/lapic: Use function pointer for EOI.

This helps upcoming X2APIC support and virtualization EOI optmization,
e.g. Hyper-V can be configured to do auto-EOI.

Discussed-with: Imre Vadasz

20 months agolibc/termios: #undef TTYDEFCHARS after including <termios.h>.
Sascha Wildner [Mon, 14 May 2018 09:36:05 +0000 (11:36 +0200)]
libc/termios: #undef TTYDEFCHARS after including <termios.h>.

20 months agokernel: Include <sys/ttydefaults.h> where appropriate.
Sascha Wildner [Mon, 14 May 2018 09:35:08 +0000 (11:35 +0200)]
kernel: Include <sys/ttydefaults.h> where appropriate.

This is in preparation for moving <sys/termios.h> to <termios.h>.

20 months agohammer2(8)/svc(8): Include <sys/ttycom.h> for ioctls.
Sascha Wildner [Mon, 14 May 2018 07:04:37 +0000 (09:04 +0200)]
hammer2(8)/svc(8): Include <sys/ttycom.h> for ioctls.

20 months agoMerge remote-tracking branch 'origin/vendor/GCC80'
zrj [Mon, 14 May 2018 04:36:02 +0000 (07:36 +0300)]
Merge remote-tracking branch 'origin/vendor/GCC80'