x86: vdso linker script cleanup
Roland McGrath [Wed, 17 Oct 2007 16:04:41 +0000 (18:04 +0200)]
I can't see the reason ".  = VDSO_PRELINK + 0x900;" was ever there in
the linker script for the x86_64 vDSO.  I can't find anything that
depends on this magic offset, or that should care at all about the
particular location of of the .data section (all from vvar.c) in the
vDSO image.  If it is really desireable to place .data at 0x900, then it
should be after all the other sections so they fill in the space up to
0x900.

This removes the 0x900 magic and cleans up the output sections generally
in the vDSO linker script.  This saves a few hundred bytes in the size
of the vDSO file, bringing it back well under 4kb total so that its vma
only needs one page.

Signed-off-by: Roland McGrath <roland@redhat.com>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

arch/x86/vdso/vdso.lds.S

index b9a60e6..667d324 100644 (file)
@@ -26,13 +26,16 @@ SECTIONS
      is insufficient, ld -shared will barf.  Just increase it here.  */
   . = VDSO_PRELINK + VDSO_TEXT_OFFSET;
 
-  .text           : { *(.text) }               :text
-  .text.ptr       : { *(.text.ptr) }           :text
-  . = VDSO_PRELINK + 0x900;
-  .data           : { *(.data) }               :text
-  .bss            : { *(.bss) }                        :text
+  .text           : { *(.text*) }              :text
+  .rodata         : { *(.rodata*) }            :text
+  .data                  : {
+       *(.data*)
+       *(.sdata*)
+       *(.bss*)
+       *(.dynbss*)
+  }                                            :text
 
-  .altinstructions : { *(.altinstructions) }                   :text
+  .altinstructions : { *(.altinstructions) }           :text
   .altinstr_replacement  : { *(.altinstr_replacement) }        :text
 
   .note                  : { *(.note.*) }              :text :note
@@ -42,7 +45,6 @@ SECTIONS
   .useless        : {
        *(.got.plt) *(.got)
        *(.gnu.linkonce.d.*)
-       *(.dynbss)
        *(.gnu.linkonce.b.*)
   }                                            :text
 }