]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ARM: vmlinux.lds.S: replace open coded .data sections with generic macros
authorNicolas Pitre <nicolas.pitre@linaro.org>
Tue, 29 Aug 2017 20:33:57 +0000 (16:33 -0400)
committerNicolas Pitre <nicolas.pitre@linaro.org>
Sun, 10 Sep 2017 23:34:52 +0000 (19:34 -0400)
Our .data section is missing PAGE_ALIGNED_DATA() which contains,
amongst other things, the vdso page. This creates a System.map that
looks like this:

c15769a8 D _edata
c1577000 d vdso_data_store
c1578000 D __start___bug_table
c1580544 D __stop___bug_table
c1580544 B __bss_start

By using RW_DATA_SECTION() we pick whatever generic sections might be
added in the future and have page-aligned data next to other strongly
aligned data. Furthermore we now include the entire thing, including the
bug table, in the data accounting surrounded by _sdata/_edata.

While at it let's also remplace the open coded .init.data by its
equivalent INIT_DATA_SECTION().

Signed-off-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Tested-by: Chris Brandt <Chris.Brandt@renesas.com>
arch/arm/kernel/vmlinux.lds.S

index 4f86b4b7bdcc2be92da83a6d6b85c354d0a06f0e..f73ba564b5e54137e2d92b2f7f2a1558d78e0cd8 100644 (file)
@@ -214,14 +214,9 @@ SECTIONS
                *(.pv_table)
                __pv_table_end = .;
        }
-       .init.data : {
-               INIT_DATA
-               INIT_SETUP(16)
-               INIT_CALLS
-               CON_INITCALL
-               SECURITY_INITCALL
-               INIT_RAM_FS
-       }
+
+       INIT_DATA_SECTION(16)
+
        .exit.data : {
                ARM_EXIT_KEEP(EXIT_DATA)
        }
@@ -237,30 +232,9 @@ SECTIONS
 #endif
        __init_end = .;
 
-       .data : {
-               _data = .;              /* address in memory */
-               _sdata = .;
-
-               /*
-                * first, the init task union, aligned
-                * to an 8192 byte boundary.
-                */
-               INIT_TASK_DATA(THREAD_SIZE)
-
-               NOSAVE_DATA
-               CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
-               READ_MOSTLY_DATA(L1_CACHE_BYTES)
-
-               /*
-                * and the usual data section
-                */
-               DATA_DATA
-               CONSTRUCTORS
-
-               _edata = .;
-       }
-
-       BUG_TABLE
+       _sdata = .;
+       RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
+       _edata = .;
 
 #ifdef CONFIG_HAVE_TCM
         /*