freebsd-dev/stand/i386/loader
Dimitry Andric a2037dba7e Link stand/i386 components using a linker script
LLD 10.0.0 changed the behavior of the -Ttext option, so that using
-Ttext=0x0 now causes linking of the loaders to fail with:

ld: error: output file too large: 18446744073707016908 bytes

I reported this in https://bugs.llvm.org/show_bug.cgi?id=44715, and
initially reverted the upstream change in r357259 to work around it.

However, after some discussion with Fangrui Song in the upstream ticket,
I think we can classify this as an unfortunate interaction between using
-Ttext=0 in combination with --no-rosegment.  (We added the latter
in r332090, because btxld does not correctly handle input with more
than 2 PT_LOAD segments.)

Fangrui suggested to use a linker script instead, and Warner was already
attempting this in r305353, but had to revert it due to "crypto-using
boot problems" (not sure what those were :).

This review updates the stand/i386/boot.ldscript to handle more
sections, inserts some symbols like _edata and such that we use in
libsa, and also discards any .interp section.

It uses ORG which is defined on the linker command line using
--defsym ORG=value to set the start of all the sections.

Reviewed by:	imp
MFC after:	2 weeks
Differential Revision: https://reviews.freebsd.org/D23952
2020-03-04 21:01:22 +00:00
..
chain.c Verify files loaded in chain command. 2019-08-08 17:03:30 +00:00
conf.c Remove NAND and NANDFS support 2019-06-25 04:50:09 +00:00
help.i386
loader.rc Revert r332275, r332272, r332270 2018-04-11 18:02:13 +00:00
main.c Move smbios.c to libsa. 2020-02-20 00:46:22 +00:00
Makefile Link stand/i386 components using a linker script 2020-03-04 21:01:22 +00:00
Makefile.depend Enable veriexec for loader 2019-02-26 06:22:10 +00:00
version