Commit c80d471a476b6d6fe0bc1fd25293c24c66b7aaaf

Authored by Tim Abbott
Committed by Linus Torvalds
1 parent 0c8454f566

Add new HEAD_TEXT_SECTION macro.

This patch is preparation for replacing all uses of ".head.text" or
".text.head" in the kernel with macros, so that the section name can
later be changed without having to touch a lot of the kernel.

Since some linker scripts do more complex things than referencing
HEAD_TEXT, we add a HEAD_TEXT_SECTION macro that just contains the
actual name.

I've defined HEAD_TEXT_SECTION in a new header,
include/linux/section-names.h, so that this section name only needs to
appear in one place.  I anticipate creating similar macro structures
for a number of other section names.

The long-term goal here is to be able to change the kernel's magic
section names to those that are compatible with -ffunction-sections
-fdata-sections.  This requires renaming all magic sections with names
of the form ".text.foo".

Signed-off-by: Tim Abbott <tabbott@mit.edu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 3 changed files with 12 additions and 2 deletions Side-by-side Diff

include/asm-generic/vmlinux.lds.h
  1 +#include <linux/section-names.h>
  2 +
1 3 #ifndef LOAD_OFFSET
2 4 #define LOAD_OFFSET 0
3 5 #endif
... ... @@ -331,7 +333,7 @@
331 333 #endif
332 334  
333 335 /* Section used for early init (in .S files) */
334   -#define HEAD_TEXT *(.head.text)
  336 +#define HEAD_TEXT *(HEAD_TEXT_SECTION)
335 337  
336 338 /* init and exit section handling */
337 339 #define INIT_DATA \
include/linux/init.h
... ... @@ -2,6 +2,8 @@
2 2 #define _LINUX_INIT_H
3 3  
4 4 #include <linux/compiler.h>
  5 +#include <linux/section-names.h>
  6 +#include <linux/stringify.h>
5 7  
6 8 /* These macros are used to mark some functions or
7 9 * initialized data (doesn't apply to uninitialized data)
... ... @@ -107,7 +109,7 @@
107 109 #define __memexitconst __section(.memexit.rodata)
108 110  
109 111 /* For assembly routines */
110   -#define __HEAD .section ".head.text","ax"
  112 +#define __HEAD .section __stringify(HEAD_TEXT_SECTION),"ax"
111 113 #define __INIT .section ".init.text","ax"
112 114 #define __FINIT .previous
113 115  
include/linux/section-names.h
  1 +#ifndef __LINUX_SECTION_NAMES_H
  2 +#define __LINUX_SECTION_NAMES_H
  3 +
  4 +#define HEAD_TEXT_SECTION .head.text
  5 +
  6 +#endif /* !__LINUX_SECTION_NAMES_H */