[PowerPC] Fix LLD10 linking of ofw loader on ppc

Before this change, LLD10 was creating several extra PT_LOAD sections,
which OFW does not understand.

Like we do for the kernel already, specify the program headers manually.

Additionally, to work around a crash in our base ld.bfd, we need to
actually assign something to the output section. LLD does not need this.

One side effect of this change is the removal of the GNU_STACK header.
This is more correct, since we are using a statically-allocated stack and
RWX mappings across the board this early in boot.

Reviewed by:	jhibbits, Fangrui Song <i@maskray.me>
Sponsored by:	Tag1 Consulting, Inc.
Differential Revision:	https://reviews.freebsd.org/D23778
This commit is contained in:
bdragon 2020-02-25 00:45:09 +00:00
parent b28561216a
commit fd4d4b2d44

View File

@ -6,11 +6,15 @@ OUTPUT_ARCH(powerpc:common)
ENTRY(_start) ENTRY(_start)
SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/lib);
PROVIDE (__stack = 0); PROVIDE (__stack = 0);
PHDRS
{
text PT_LOAD;
}
SECTIONS SECTIONS
{ {
/* Read-only sections, merged into text segment: */ /* Read-only sections, merged into text segment: */
. = 0x02c00000 + SIZEOF_HEADERS; . = 0x02c00000 + SIZEOF_HEADERS;
.interp : { *(.interp) } .interp : { *(.interp) } :text
.hash : { *(.hash) } .hash : { *(.hash) }
.dynsym : { *(.dynsym) } .dynsym : { *(.dynsym) }
.dynstr : { *(.dynstr) } .dynstr : { *(.dynstr) }