On 11/28/17 08:23, Justin Hibbits wrote:
On Tue, Nov 28, 2017 at 10:13 AM, Nathan Whitehorn
<nwhiteh...@freebsd.org> wrote:

On 11/28/17 07:27, Justin Hibbits wrote:
On Sat, Nov 25, 2017 at 3:45 PM, Nathan Whitehorn
<nwhiteh...@freebsd.org> wrote:
Author: nwhitehorn
Date: Sat Nov 25 21:45:51 2017
New Revision: 326203
URL: https://svnweb.freebsd.org/changeset/base/326203

Log:
    Avoid emitting a PT_INTERP section for powerpc64 kernels and arrange
for
    the first instruction to be at the start of the text segment. This
allows
    the kernel to be booted correctly by stock kexec-lite.

    MFC after:    2 weeks

Modified:
    head/sys/conf/ldscript.powerpc64

Modified: head/sys/conf/ldscript.powerpc64

==============================================================================
--- head/sys/conf/ldscript.powerpc64    Sat Nov 25 21:44:23 2017
(r326202)
+++ head/sys/conf/ldscript.powerpc64    Sat Nov 25 21:45:51 2017
(r326203)
@@ -10,7 +10,7 @@ SECTIONS
   {
     /* Read-only sections, merged into text segment: */

-  . = kernbase + SIZEOF_HEADERS;
+  . = kernbase;
     PROVIDE (begin = . - SIZEOF_HEADERS);

     .text      :
@@ -24,7 +24,10 @@ SECTIONS
     _etext = .;
     PROVIDE (etext = .);

-  .interp     : { *(.interp)   }
+  /* Do not emit PT_INTERP section, which confuses some loaders
(kexec-lite) */
+  .interpX    : { *(.interp)   } : NONE
+  /DISCARD/   : { *(.interp)   }
+
     .hash          : { *(.hash)          }
     .dynsym        : { *(.dynsym)                }
     .dynstr        : { *(.dynstr)                }

This broke powerpc64 Book-E kernels.  It now puts a 1MB blank space
ahead of the kernel data (ELF header + 1MB - sizeof(header) of 0's),
meaning that now the kernel needs to be loaded by uboot 1MB earlier in
memory, rather than straight on the 64MB boundary as it has been.

- Justin

How on Earth? It doesn't do that on my system. What binutils are you using?
-Nathan

This is using base binutils (2.17.50...)  I don't know why it's doing
this, but readelf shows that file offset 0x0000000000100000 maps to
0xc000000000000000, and it goes from there.

- Justin


Bizarre. Why don't you just revert for now (I need to run) and I can figure out what went wrong later?
-Nathan
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to