Commit Graph

49 Commits

Author SHA1 Message Date
Bryan Drewery
5608fd23c2 Revert r267233 for now. PIE support needs to be reworked.
1. 50+% of NO_PIE use is fixed by adding -fPIC to INTERNALLIB and other
   build-only utility libraries.
2. Another 40% is fixed by generating _pic.a variants of various libraries.
3. Some of the NO_PIE use is a bit absurd as it is disabling PIE (and ASLR)
   where it never would work anyhow, such as csu or loader. This suggests
   there may be better ways of adding support to the tree. Many of these
   cases can be fixed such that -fPIE will work but there is really no
   reason to have it in those cases.
4. Some of the uses are working around hacks done to some Makefiles that are
   really building libraries but have been using bsd.prog.mk because the code
   is cleaner. Had they been using bsd.lib.mk then NO_PIE would not have
   been needed.

We likely do want to enable PIE by default (opt-out) for non-tree consumers
(such as ports). For in-tree though we probably want to only enable PIE
(opt-in) for common attack targets such as remote service daemons and setuid
utilities. This is also a great performance compromise since ASLR is expected
to reduce performance. As such it does not make sense to enable it in all
utilities such as ls(1) that have little benefit to having it enabled.

Reported by:	kib
2014-08-19 15:04:32 +00:00
Bryan Drewery
864c53ead8 In preparation for ASLR [1] support add WITH_PIE to support building with -fPIE.
This is currently an opt-in build flag. Once ASLR support is ready and stable
it should changed to opt-out and be enabled by default along with ASLR.

Each application Makefile uses opt-out to ensure that ASLR will be enabled by
default in new directories when the system is compiled with PIE/ASLR. [2]

Mark known build failures as NO_PIE for now.

The only known runtime failure was rtld.

[1] http://www.bsdcan.org/2014/schedule/events/452.en.html
Submitted by:		Shawn Webb <lattera@gmail.com>
Discussed between:	des@ and Shawn Webb [2]
2014-06-08 17:29:31 +00:00
Warner Losh
3bdf775801 NO_MAN= has been deprecated in favor of MAN= for some time, go ahead
and finish the job. ncurses is now the only Makefile in the tree that
uses it since it wasn't a simple mechanical change, and will be
addressed in a future commit.
2014-04-13 05:21:56 +00:00
Dimitry Andric
dbfc29017c When rebooting (exiting) from the BTX loader, make sure to restore the
GDT from the correct segment, otherwise a triple fault would be caused.
In some virtual environments (VMware, VirtualBox, etc) this could lead
to a unhandled error or hang in the guest emulation software.

Thanks to avg and jhb for a few hints in the right direction.

Noticed by:	Jeremy Chadwick <jdc@koitsu.org> (and many others)
MFC after:	1 week
2013-04-24 17:20:45 +00:00
Yoshihiro Takahashi
f34d85e0ec MFi386: r241301
add detection of serial console presence to btx and boot2-like blocks
2012-11-10 12:25:27 +00:00
Yoshihiro Takahashi
d68fc999de Reduce diffs against i386. 2012-08-05 14:11:07 +00:00
Andriy Gapon
006d25ce15 MFi386: improve argument passing via btxldr
use related definitions in i386 bootargs.h

Reviewed by:	nyan, jhb
MFC after:	1 month
2012-05-11 09:46:17 +00:00
Dimitry Andric
07b202a847 Define several extra macros in bsd.sys.mk and sys/conf/kern.pre.mk, to
get rid of testing explicitly for clang (using ${CC:T:Mclang}) in
individual Makefiles.

Instead, use the following extra macros, for use with clang:
- NO_WERROR.clang       (disables -Werror)
- NO_WCAST_ALIGN.clang  (disables -Wcast-align)
- NO_WFORMAT.clang	(disables -Wformat and friends)
- CLANG_NO_IAS		(disables integrated assembler)
- CLANG_OPT_SMALL	(adds flags for extra small size optimizations)

As a side effect, this enables setting CC/CXX/CPP in src.conf instead of
make.conf!  For clang, use the following:

CC=clang
CXX=clang++
CPP=clang-cpp

MFC after:	2 weeks
2012-02-28 18:30:18 +00:00
John Baldwin
4f88092408 Consolidate duplicate definitions of V86_CY() and V86_ZR() which check for
the carry and zero flags being set, respectively, in <btxv86.h> and use
them throughout the x86 boot code.
2011-10-25 19:45:12 +00:00
Dimitry Andric
2754fe609d Upgrade our copy of llvm/clang to r126079, from upstream's trunk.
This contains many improvements, primarily better C++ support, an
integrated assembler for x86 and support for -pg.
2011-02-20 19:33:47 +00:00
Ed Schouten
d05becf2b6 Use -Wl,-N instead of the undocumented -N option for GCC.
GCC forwards the -N flag directly to ld. This flag is not documented and
not supported by (for example) Clang. Just use -Wl,-N.

Submitted by:	Pawel Worach
2010-06-03 17:42:32 +00:00
Yoshihiro Takahashi
ff85a22cfd MFi386: Use real mode instead of v86 mode.
MFC after:	1 week
2009-12-08 13:04:26 +00:00
Yoshihiro Takahashi
fc4dac79e6 MFi386:
Retire the support for using paging in BTX.  It hasn't been used since
  before 4.0.
2008-02-28 17:33:06 +00:00
Yoshihiro Takahashi
0765091d0e MFi386: revisions from 1.39 to 1.43. 2006-11-09 08:05:51 +00:00
Yoshihiro Takahashi
769f92857b Remove ifdef PC98. 2005-05-08 14:17:28 +00:00
Ruslan Ermilov
e653b48c80 Start the dreaded NOFOO -> NO_FOO conversion.
OK'ed by:	core
2004-12-21 08:47:35 +00:00
Yoshihiro Takahashi
028d40a592 MFi386: revision 1.38. 2004-11-29 11:54:42 +00:00
Yoshihiro Takahashi
c25984c97c MFi386: revision 1.4. 2004-10-24 12:16:18 +00:00
Yoshihiro Takahashi
dd4d0b14e8 MFi386: revisions from 1.15 to 1.17. 2004-04-29 08:24:57 +00:00
Yoshihiro Takahashi
798f9e7fa0 MFi386: revisions from 1.16 to 1.18. 2004-04-29 08:24:30 +00:00
Ruslan Ermilov
1e104f00e7 MFi386: Use C (and CPP) style comments for assembler-with-cpp
sources, for lines that start with a comment.
2004-04-28 10:15:31 +00:00
Yoshihiro Takahashi
1a413640ac MFi386: Get rid of unnecessary use of m4(1) by using cpp(1) instead.
Repocopied by:	joe
2004-02-13 15:39:59 +00:00
Yoshihiro Takahashi
5e0eb6243d MFi386: Factor out -nostdlib and use PROG. 2004-02-09 16:01:45 +00:00
Yoshihiro Takahashi
cc78dccee9 MFi386: Cleanups to sys/boot makefiles. 2004-02-07 12:19:44 +00:00
Yoshihiro Takahashi
6bef25432c MFi386: revision 1.33
PR:	kern/62005
2004-01-28 04:15:31 +00:00
Yoshihiro Takahashi
a5a39deba2 MFi386: revision 1.13. 2003-11-15 12:25:47 +00:00
Ruslan Ermilov
6c874d4fa8 Switch to using bsd.prog.mk; this gives us back the standard
.s.o transformation rule.
2003-06-30 14:10:58 +00:00
Yoshihiro Takahashi
209238dc3c Remove -elf option. 2002-09-19 13:43:02 +00:00
Peter Wemm
66422f5b7a Initiate deorbit burn for the i386-only a.out related support. Moves are
under way to move the remnants of the a.out toolchain to ports.  As the
comment in src/Makefile said, this stuff is deprecated and one should not
expect this to remain beyond 4.0-REL.  It has already lasted WAY beyond
that.

Notable exceptions:
gcc - I have not touched the a.out generation stuff there.
ldd/ldconfig - still have some code to interface with a.out rtld.
old as/ld/etc - I have not removed these yet, pending their move to ports.
some includes - necessary for ldd/ldconfig for now.

Tested on: i386 (extensively), alpha
2002-09-17 01:49:00 +00:00
Ruslan Ermilov
26aace39ab Fixed CLEANFILES after bsd.lib.mk sweep. 2002-05-13 15:48:05 +00:00
Ruslan Ermilov
2a53f3fb35 Major cleanup of bsd.lib.mk.
Get rid of the INTERNALSTATICLIB knob and just use plain INTERNALLIB.
INTERNALLIB now means to build static library only and don't install
anything.  Added a NOINSTALLLIB knob for libpam/modules.  To not
build any library at all, just do not set LIB.
2002-05-13 10:53:24 +00:00
David E. O'Brien
95cfc25d0d Back out last commit. I expect our bsd.*.mk gods to remove the need for
defining so many extra things in addition to INTERNALLIB.  We don't like
repetitive C code and we shouldn't for make code either.
2002-05-12 13:54:42 +00:00
David E. O'Brien
3bf8b9cee3 NOPIC, NOPROFILE, NOMAN, and INTERNALSTATICLIB are redundant when using
INTERNALLIB now.
2002-05-11 18:02:33 +00:00
Yoshihiro Takahashi
608f31f640 MFi386: revisions from 1.26 to 1.30. 2001-11-17 13:58:04 +00:00
Yoshihiro Takahashi
b9c5c179c3 MFi386: revision 1.12 2001-11-17 13:57:32 +00:00
KATO Takenori
b6da22604e Merged from sys/boot/i386/btx/btx/btx.s revision 1.25. 2001-06-23 08:04:14 +00:00
Yoshihiro Takahashi
a93f8c6e6e Merged from sys/boot/i386/btx/btx/btx.s revision 1.24. 2001-05-21 11:49:21 +00:00
Yoshihiro Takahashi
64ee4b5b08 Merged from the following changes.
sys/boot/i386/btx/btx/Makefile		1.9
sys/boot/i386/btx/btx/btx.s		1.23
sys/boot/i386/libi386/biosdisk.c	1.32 and 1.33
sys/boot/i386/libi386/biosmem.c		1.5
sys/boot/i386/libi386/comconsole.c	1.8
sys/boot/i386/libi386/gatea20.c		1.3
sys/boot/i386/libi386/time.c		1.4
sys/boot/i386/libi386/vidconsole.c	1.13
sys/boot/i386/loader/Makefile		1.48
sys/boot/i386/loader/main.c		1.22
2000-11-05 12:35:41 +00:00
Yoshihiro Takahashi
78a9e97b3a Merged from sys/boot/i386/btx/btx/btx.s revisions from 1.18 to 1.22. 2000-07-30 07:45:02 +00:00
Yoshihiro Takahashi
c787eb8a72 Sync with the following changes.
sys/boot/i386/btx/btx/Makefile          1.8
sys/boot/i386/btx/btx/btx.s             1.16 and 1.17
sys/boot/i386/btx/btxldr/btxldr.s       1.10
sys/boot/i386/loader/Makefile           1.45
2000-05-29 11:58:01 +00:00
KATO Takenori
c1cdadfffe Synced with following files:
src/sys/boot/i386/Makefile.inc	1.1
  src/sys/boot/i386/btx/btx/btx.s	1.15
  src/sys/boot/i386/btx/btxldr/Makefile	1.8
  src/sys/boot/i386/btx/btxldr/btxldr.s	1.9
  src/sys/boot/i386/libi386/biosdisk.c	1.29
  src/sys/boot/i386/loader/Makefile	1.42
  src/sys/boot/i386/loader/main.c	1.18
(entry point address of loader was not changed.)

Reviewed by:	nyan
2000-03-31 16:03:02 +00:00
KATO Takenori
0219f40756 Synced with sys/boot/i386/btx/btx/btx.s rev 1.14. 2000-01-29 13:48:36 +00:00
Yoshihiro Takahashi
09b1cdbdb5 Sync with sys/boot/i386/btx/btx/btx.s revision 1.13. 1999-11-03 08:32:03 +00:00
KATO Takenori
7639f2ba3d Sync with sys/boot/i386/btx/btx/Makefile and btx.s revisions 1.7 and
1.12, respectively.
1999-10-13 10:55:56 +00:00
Brian Somers
ad128796fd Blank out the twiddly thing when outputting the ``BTX loader'' message. 1999-10-12 06:57:26 +00:00
Peter Wemm
c3aac50f28 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
KATO Takenori
c9929b08f7 Sync with sys/boot/i386/btx/Makefile revision 1.5. 1999-05-20 08:00:08 +00:00
KATO Takenori
729b255473 Sync with sys/boot/i386/btx/btx/btx.s revision 1.10. 1999-03-01 10:02:45 +00:00
KATO Takenori
dccbc08d92 PC98 version of new boot loader. Because boot2 has not yet ported,
files in boot2 directory are copies from legacy biosboot.

Submitted by:	IMAI Takeshi <take-i@ceres.dti.ne.jp>
1999-02-03 08:39:09 +00:00