parisc: Fix kernel memory layout regarding position of __gp
authorHelge Deller <deller@gmx.de>
Sun, 9 Oct 2016 09:12:34 +0000 (11:12 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 28 Oct 2016 07:01:27 +0000 (03:01 -0400)
commit f8850abb7ba68229838014b3409460e576751c6d upstream.

Architecturally we need to keep __gp below 0x1000000.

But because of ftrace and tracepoint support, the RO_DATA_SECTION now gets much
bigger than it was before. By moving the linkage tables before RO_DATA_SECTION
we can avoid that __gp gets positioned at a too high address.

Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/parisc/kernel/vmlinux.lds.S

index 308f29081d461b0a9b0a0d8eec0d54e0a1936ff3..60771df10fdea4e7ae3a45646a1615fe02823082 100644 (file)
@@ -88,8 +88,9 @@ SECTIONS
        /* Start of data section */
        _sdata = .;
 
-       RO_DATA_SECTION(8)
-
+       /* Architecturally we need to keep __gp below 0x1000000 and thus
+        * in front of RO_DATA_SECTION() which stores lots of tracepoint
+        * and ftrace symbols. */
 #ifdef CONFIG_64BIT
        . = ALIGN(16);
        /* Linkage tables */
@@ -104,6 +105,8 @@ SECTIONS
        }
 #endif
 
+       RO_DATA_SECTION(8)
+
        /* unwind info */
        .PARISC.unwind : {
                __start___unwind = .;