freebsd-dev/stand/i386/Makefile.inc
Ed Maste 93b980a802 stand: pass --no-rosegment for i386 bits when linking with lld
btxld does not correctly handle input with other than 2 PT_LOAD
segments.  Passing --no-rosegment lets lld produce output eqivalent to
ld.bfd: 2 PT_LOAD segments and no PT_GNU_RELRO.

PR:		225775
MFC after:	3 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D14956
2018-04-06 02:57:58 +00:00

41 lines
981 B
Makefile

# Common defines for all of stand/i386/
#
# $FreeBSD$
.sinclude <bsd.linker.mk>
LOADER_ADDRESS?=0x200000
LDFLAGS+= -nostdlib
.if defined(LINKER_TYPE) && ${LINKER_TYPE} == "lld"
LDFLAGS+= -Wl,--no-rosegment
.endif
# BTX components
BTXDIR= ${BOOTOBJ}/i386/btx
BTXLDR= ${BTXDIR}/btxldr/btxldr
BTXKERN= ${BTXDIR}/btx/btx
BTXCRT= ${BTXDIR}/lib/crt0.o
BTXSRC= ${BOOTSRC}/i386/btx
BTXLIB= ${BTXSRC}/lib
CFLAGS+= -I${BTXLIB}
# compact binary with no padding between text, data, bss
LDSCRIPT= ${BOOTSRC}/i386/boot.ldscript
# LDFLAGS_BIN=-e start -Ttext ${ORG} -Wl,-T,${LDSCRIPT},-S,--oformat,binary
# LD_FLAGS_BIN=-static -T ${LDSCRIPT} --gc-sections
LDFLAGS_BIN=-e start -Ttext ${ORG} -Wl,-N,-S,--oformat,binary
LD_FLAGS_BIN=-static -N --gc-sections
.if ${MACHINE_CPUARCH} == "amd64"
DO32=1
.endif
.if defined(LOADER_FIREWIRE_SUPPORT)
MK_LOADER_FIREWIRE=yes
.warning "LOADER_FIREWIRE_SUPPORT deprecated, please move to WITH_LOADER_FIREWIRE"
.endif
.include "../Makefile.inc"