xen/init: Annotate all command line parameter infrastructure as const
authorAndrew Cooper <andrew.cooper3@citrix.com>
Mon, 8 Feb 2016 10:19:34 +0000 (10:19 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 23 Jun 2016 11:57:51 +0000 (12:57 +0100)
There is no reason for any of it to be modified.  Additionally, link
.init.setup beside the other constant .init data.

While editing this area, correct the types used in the extern
declarations for __setup_start and __setup_end to match the types the
linker actually produces.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Julien Grall <julien.grall@arm.com>
xen/arch/arm/xen.lds.S
xen/arch/x86/xen.lds.S
xen/common/kernel.c
xen/include/xen/init.h

index 832038164c93f6a988e0550f7d582a441d7d6535..2ed7deedeea51d1ee7d6229da56a1e072183bcb3 100644 (file)
@@ -135,6 +135,12 @@ SECTIONS
        *(.init.rodata)
        *(.init.rodata.rel)
        *(.init.rodata.str*)
+
+       . = ALIGN(POINTER_ALIGN);
+       __setup_start = .;
+       *(.init.setup)
+       __setup_end = .;
+
        *(.init.data)
        *(.init.data.rel)
        *(.init.data.rel.*)
@@ -145,11 +151,6 @@ SECTIONS
        __ctors_end = .;
   } :text
   . = ALIGN(32);
-  .init.setup : {
-       __setup_start = .;
-       *(.init.setup)
-       __setup_end = .;
-  } :text
   .init.proc.info : {
        __proc_info_start = .;
        *(.init.proc.info)
index dcbb8fef73f1f08263eff1c05fb80f8b42ce1010..2443b931f063e81c0569d33e797af6c01026af17 100644 (file)
@@ -152,6 +152,12 @@ SECTIONS
        *(.init.rodata)
        *(.init.rodata.rel)
        *(.init.rodata.str*)
+
+       . = ALIGN(POINTER_ALIGN);
+       __setup_start = .;
+       *(.init.setup)
+       __setup_end = .;
+
        *(.init.data)
        *(.init.data.rel)
        *(.init.data.rel.*)
@@ -178,11 +184,6 @@ SECTIONS
        __ctors_end = .;
   } :text
   . = ALIGN(32);
-  .init.setup : {
-       __setup_start = .;
-       *(.init.setup)
-       __setup_end = .;
-  } :text
   .initcall.init : {
        __initcall_start = .;
        *(.initcallpresmp.init)
index dae7e35514ce0075520df3178a7beebe4e2d4211..942b042403b5cbc628ea2a8f5a6e74a98c0c34fe 100644 (file)
@@ -27,7 +27,7 @@ int tainted;
 xen_commandline_t saved_cmdline;
 
 static void __init assign_integer_param(
-    struct kernel_param *param, uint64_t val)
+    const struct kernel_param *param, uint64_t val)
 {
     switch ( param->len )
     {
@@ -52,7 +52,7 @@ void __init cmdline_parse(const char *cmdline)
 {
     char opt[100], *optval, *optkey, *q;
     const char *p = cmdline;
-    struct kernel_param *param;
+    const struct kernel_param *param;
     int bool_assert;
 
     if ( cmdline == NULL )
@@ -96,7 +96,7 @@ void __init cmdline_parse(const char *cmdline)
         if ( !bool_assert )
             optkey += 3;
 
-        for ( param = &__setup_start; param < &__setup_end; param++ )
+        for ( param = __setup_start; param < __setup_end; param++ )
         {
             if ( strcmp(param->name, optkey) )
             {
index 671ac81ecee5ed8a33f18f0a0838adc1882f7f47..b04bcf98c10841b8b1f2199ad1f87d59c1b89225 100644 (file)
@@ -86,10 +86,11 @@ struct kernel_param {
     void *var;
 };
 
-extern struct kernel_param __setup_start, __setup_end;
+extern const struct kernel_param __setup_start[], __setup_end[];
 
-#define __setup_str static __initdata __attribute__((__aligned__(1))) char
-#define __kparam static __initsetup \
+#define __setup_str static const  __initconstrel \
+    __attribute__((__aligned__(1))) char
+#define __kparam static const __initsetup \
     __attribute__((__aligned__(sizeof(void *)))) struct kernel_param
 
 #define custom_param(_name, _var) \