public inbox for linux-kbuild@vger.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: linux-kbuild <linux-kbuild@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>
Cc: Jan Beulich <jbeulich@novell.com>, Sam Ravnborg <sam@ravnborg.org>
Subject: [PATCH 16/39] initconst adjustments
Date: Sat,  6 Jun 2009 01:42:34 +0200	[thread overview]
Message-ID: <1244245377-17441-16-git-send-email-sam@ravnborg.org> (raw)
In-Reply-To: <20090605233720.GA13588@uranus.ravnborg.org>

From: Jan Beulich <jbeulich@novell.com>

- add .init.rodata to INIT_DATA, and group all initconst flavors
  together
- move strings generated from __setup_param() into .init.rodata
- add .*init.rodata to modpost's sets of init sections
- make modpost warn about references between meminit and cpuinit
  as well as memexit and cpuexit sections (as CPU and memory
  hotplug are independently selectable features)

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 include/asm-generic/vmlinux.lds.h |    5 ++-
 include/linux/init.h              |    3 +-
 scripts/mod/modpost.c             |   48 +++++++++++++++++++++++++++++-------
 3 files changed, 43 insertions(+), 13 deletions(-)

diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 89853bc..3edb114 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -336,10 +336,11 @@
 #define INIT_DATA							\
 	*(.init.data)							\
 	DEV_DISCARD(init.data)						\
-	DEV_DISCARD(init.rodata)					\
 	CPU_DISCARD(init.data)						\
-	CPU_DISCARD(init.rodata)					\
 	MEM_DISCARD(init.data)						\
+	*(.init.rodata)							\
+	DEV_DISCARD(init.rodata)					\
+	CPU_DISCARD(init.rodata)					\
 	MEM_DISCARD(init.rodata)
 
 #define INIT_TEXT							\
diff --git a/include/linux/init.h b/include/linux/init.h
index 0e06c17..9f70c9f 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -225,7 +225,8 @@ struct obs_kernel_param {
  * obs_kernel_param "array" too far apart in .init.setup.
  */
 #define __setup_param(str, unique_id, fn, early)			\
-	static char __setup_str_##unique_id[] __initdata __aligned(1) = str; \
+	static const char __setup_str_##unique_id[] __initconst	\
+		__aligned(1) = str; \
 	static struct obs_kernel_param __setup_##unique_id	\
 		__used __section(.init.setup)			\
 		__attribute__((aligned((sizeof(long)))))	\
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 161b784..94e71ef 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -763,6 +763,8 @@ static void check_section(const char *modname, struct elf_info *elf,
 
 
 #define ALL_INIT_DATA_SECTIONS \
+	".init.setup$", ".init.rodata$", \
+	".devinit.rodata$", ".cpuinit.rodata$", ".meminit.rodata$" \
 	".init.data$", ".devinit.data$", ".cpuinit.data$", ".meminit.data$"
 #define ALL_EXIT_DATA_SECTIONS \
 	".exit.data$", ".devexit.data$", ".cpuexit.data$", ".memexit.data$"
@@ -772,21 +774,23 @@ static void check_section(const char *modname, struct elf_info *elf,
 #define ALL_EXIT_TEXT_SECTIONS \
 	".exit.text$", ".devexit.text$", ".cpuexit.text$", ".memexit.text$"
 
-#define ALL_INIT_SECTIONS ALL_INIT_DATA_SECTIONS, ALL_INIT_TEXT_SECTIONS
-#define ALL_EXIT_SECTIONS ALL_EXIT_DATA_SECTIONS, ALL_EXIT_TEXT_SECTIONS
+#define ALL_INIT_SECTIONS INIT_SECTIONS, DEV_INIT_SECTIONS, \
+	CPU_INIT_SECTIONS, MEM_INIT_SECTIONS
+#define ALL_EXIT_SECTIONS EXIT_SECTIONS, DEV_EXIT_SECTIONS, \
+	CPU_EXIT_SECTIONS, MEM_EXIT_SECTIONS
 
 #define DATA_SECTIONS ".data$", ".data.rel$"
 #define TEXT_SECTIONS ".text$"
 
-#define INIT_SECTIONS      ".init.data$", ".init.text$"
-#define DEV_INIT_SECTIONS  ".devinit.data$", ".devinit.text$"
-#define CPU_INIT_SECTIONS  ".cpuinit.data$", ".cpuinit.text$"
-#define MEM_INIT_SECTIONS  ".meminit.data$", ".meminit.text$"
+#define INIT_SECTIONS      ".init.*"
+#define DEV_INIT_SECTIONS  ".devinit.*"
+#define CPU_INIT_SECTIONS  ".cpuinit.*"
+#define MEM_INIT_SECTIONS  ".meminit.*"
 
-#define EXIT_SECTIONS      ".exit.data$", ".exit.text$"
-#define DEV_EXIT_SECTIONS  ".devexit.data$", ".devexit.text$"
-#define CPU_EXIT_SECTIONS  ".cpuexit.data$", ".cpuexit.text$"
-#define MEM_EXIT_SECTIONS  ".memexit.data$", ".memexit.text$"
+#define EXIT_SECTIONS      ".exit.*"
+#define DEV_EXIT_SECTIONS  ".devexit.*"
+#define CPU_EXIT_SECTIONS  ".cpuexit.*"
+#define MEM_EXIT_SECTIONS  ".memexit.*"
 
 /* init data sections */
 static const char *init_data_sections[] = { ALL_INIT_DATA_SECTIONS, NULL };
@@ -869,12 +873,36 @@ const struct sectioncheck sectioncheck[] = {
 	.tosec   = { INIT_SECTIONS, NULL },
 	.mismatch = XXXINIT_TO_INIT,
 },
+/* Do not reference cpuinit code/data from meminit code/data */
+{
+	.fromsec = { MEM_INIT_SECTIONS, NULL },
+	.tosec   = { CPU_INIT_SECTIONS, NULL },
+	.mismatch = XXXINIT_TO_INIT,
+},
+/* Do not reference meminit code/data from cpuinit code/data */
+{
+	.fromsec = { CPU_INIT_SECTIONS, NULL },
+	.tosec   = { MEM_INIT_SECTIONS, NULL },
+	.mismatch = XXXINIT_TO_INIT,
+},
 /* Do not reference exit code/data from devexit/cpuexit/memexit code/data */
 {
 	.fromsec = { DEV_EXIT_SECTIONS, CPU_EXIT_SECTIONS, MEM_EXIT_SECTIONS, NULL },
 	.tosec   = { EXIT_SECTIONS, NULL },
 	.mismatch = XXXEXIT_TO_EXIT,
 },
+/* Do not reference cpuexit code/data from memexit code/data */
+{
+	.fromsec = { MEM_EXIT_SECTIONS, NULL },
+	.tosec   = { CPU_EXIT_SECTIONS, NULL },
+	.mismatch = XXXEXIT_TO_EXIT,
+},
+/* Do not reference memexit code/data from cpuexit code/data */
+{
+	.fromsec = { CPU_EXIT_SECTIONS, NULL },
+	.tosec   = { MEM_EXIT_SECTIONS, NULL },
+	.mismatch = XXXEXIT_TO_EXIT,
+},
 /* Do not use exit code/data from init code */
 {
 	.fromsec = { ALL_INIT_SECTIONS, NULL },
-- 
1.6.3.rc3.40.g75b44


  parent reply	other threads:[~2009-06-05 23:41 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-05 23:37 kbuild-next content Sam Ravnborg
2009-06-05 23:42 ` [PATCH 01/39] kconfig: handle comment entries within choice/endchoice Sam Ravnborg
2009-06-05 23:42 ` [PATCH 02/39] kbuild, deb-pkg: minor general improvements in builddeb script Sam Ravnborg
2009-06-05 23:42 ` [PATCH 03/39] kbuild, deb-pkg: refactor code to reduce duplication Sam Ravnborg
2009-06-05 23:42 ` [PATCH 04/39] kbuild, deb-pkg: fix 'file not found' error when building .deb package for arm Sam Ravnborg
2009-06-05 23:42 ` [PATCH 05/39] kbuild, deb-pkg: pass Debian maintainer script parameters to packaging hook scripts Sam Ravnborg
2009-06-05 23:42 ` [PATCH 06/39] kbuild, deb-pkg: allow to specify a custom revision for .deb packages Sam Ravnborg
2009-06-05 23:42 ` [PATCH 07/39] kbuild, deb-pkg: allow alternative hook scripts directory in " Sam Ravnborg
2009-06-05 23:42 ` [PATCH 08/39] kbuild, deb-pkg: improve changelog entry and package descriptions Sam Ravnborg
2009-06-05 23:42 ` [PATCH 09/39] kbuild, deb-pkg: generate debian/copyright file Sam Ravnborg
2009-06-05 23:42 ` [PATCH 10/39] kbuild, deb-pkg: improve maintainer identification Sam Ravnborg
2009-06-05 23:42 ` [PATCH 11/39] kbuild, deb-pkg: improve Source field Sam Ravnborg
2009-06-05 23:42 ` [PATCH 12/39] kbuild, deb-pkg: fix generated package name Sam Ravnborg
2009-06-05 23:42 ` [PATCH 13/39] kbuild, deb-pkg: fix Provides field Sam Ravnborg
2009-06-05 23:42 ` [PATCH 14/39] kbuild, deb-pkg: fix Section field Sam Ravnborg
2009-06-05 23:42 ` [PATCH 15/39] kbuild, deb-pkg: bump standards version Sam Ravnborg
2009-06-05 23:42 ` Sam Ravnborg [this message]
2009-06-05 23:42 ` [PATCH 17/39] kbuild: fix header export when __ASSEMBLY__ is used Sam Ravnborg
2009-06-06  0:41   ` Arnd Bergmann
2009-06-06  5:45     ` Jaswinder Singh Rajput
2009-06-06  6:05     ` Sam Ravnborg
2009-06-06  8:14       ` Russell King
2009-06-05 23:42 ` [PATCH 18/39] kbuild/headers_check: refine extern check Sam Ravnborg
2009-06-06  0:46   ` Arnd Bergmann
2009-06-06  8:38     ` Sam Ravnborg
2009-06-06 15:25       ` Arnd Bergmann
2009-06-08  1:31       ` Amerigo Wang
2009-06-05 23:42 ` [PATCH 19/39] kbuild: clean up scripts/headers.sh Sam Ravnborg
2009-06-05 23:42 ` [PATCH 20/39] kbuild: allow docproc invocation from external Sam Ravnborg
2009-06-05 23:42 ` [PATCH 21/39] kbuild/Documentation: Incorrect makefile syntax in example Sam Ravnborg
2009-06-05 23:42 ` [PATCH 22/39] kbuild: remove extra ifdef/endif of top Makefile Sam Ravnborg
2009-06-05 23:42 ` [PATCH 23/39] kconfig: fix typo "mconfig" to "menuconfig" in a comment Sam Ravnborg
2009-06-05 23:42 ` [PATCH 24/39] kconfig: add a note about the deps to the 'silentoldconfig' help Sam Ravnborg
2009-06-05 23:42 ` [PATCH 25/39] kconfig: resort the documentation of the environment variables Sam Ravnborg
2009-06-05 23:42 ` [PATCH 26/39] gitignore: ignore Kconfig i18n files Sam Ravnborg
2009-06-05 23:42 ` [PATCH 27/39] kconfig qconf: fix -Wall compiler warnings Sam Ravnborg
2009-06-05 23:42 ` [PATCH 28/39] kconfig qconf: fix namespace for Horizontal and Vertical enum values Sam Ravnborg
2009-06-05 23:42 ` [PATCH 29/39] kconfig qconf: add namespace for use of Key_ " Sam Ravnborg
2009-06-05 23:42 ` [PATCH 30/39] kconfig qconf: fix the type of the desktop widget Sam Ravnborg
2009-06-05 23:42 ` [PATCH 31/39] kconfig: do not hardcode ".config" filename Sam Ravnborg
2009-06-05 23:42 ` [PATCH 32/39] kconfig: do not hardcode "include/config/auto.conf" filename Sam Ravnborg
2009-06-05 23:42 ` [PATCH 33/39] kernel/kallsyms.c: replace deprecated __initcall with device_initcall and fix whitespace Sam Ravnborg
2009-06-05 23:42 ` [PATCH 34/39] scripts/headers_check.pl: correct RE in header CONFIG leak check Sam Ravnborg
2009-06-05 23:42 ` [PATCH 35/39] kbuild: add hint about __refdata to modpost Sam Ravnborg
2009-06-05 23:42 ` [PATCH 36/39] menu: fix embedded menu presentation Sam Ravnborg
2009-06-05 23:42 ` [PATCH 37/39] Remove bashisms from scripts Sam Ravnborg
2009-06-05 23:42 ` [PATCH 38/39] ignore *.patch files Sam Ravnborg
2009-06-05 23:42 ` [PATCH 39/39] kbuild: fix "Argument list too long" error for "make headers_check", Sam Ravnborg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1244245377-17441-16-git-send-email-sam@ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=jbeulich@novell.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox