1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
From 8858927ddc6797489cad322fc2d2134aeae543cd Mon Sep 17 00:00:00 2001
From: Arnaud Lacombe <lacombar@gmail.com>
Date: Sun, 11 Dec 2011 16:44:02 -0500
Subject: [PATCH] add-stage2-ldscripts
---
stage2/Makefile.am | 2 +-
stage2/Makefile.in | 2 +-
stage2/stage2.ldscripts | 30 ++++++++++++++++++++++++++++++
3 files changed, 32 insertions(+), 2 deletions(-)
create mode 100644 stage2/stage2.ldscripts
diff --git a/stage2/Makefile.am b/stage2/Makefile.am
index f8e6d42..ea28a4d 100644
--- a/stage2/Makefile.am
+++ b/stage2/Makefile.am
@@ -55,7 +55,7 @@ noinst_PROGRAMS = pre_stage2.exec start.exec start_eltorito.exec \
endif
MOSTLYCLEANFILES = $(noinst_PROGRAMS)
-PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200
+PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Tstage2.ldscripts
START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000
NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0
PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00
diff --git a/stage2/Makefile.in b/stage2/Makefile.in
index d0062bd..7bee2d5 100644
--- a/stage2/Makefile.in
+++ b/stage2/Makefile.in
@@ -468,7 +468,7 @@ libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \
@DISKLESS_SUPPORT_FALSE@noinst_DATA = pre_stage2 start start_eltorito
@DISKLESS_SUPPORT_TRUE@noinst_DATA = pre_stage2 start start_eltorito nbloader pxeloader diskless
MOSTLYCLEANFILES = $(noinst_PROGRAMS)
-PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200
+PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Tstage2.ldscripts
START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000
NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0
PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00
diff --git a/stage2/stage2.ldscripts b/stage2/stage2.ldscripts
new file mode 100644
index 0000000..2c8b8e1
--- /dev/null
+++ b/stage2/stage2.ldscripts
@@ -0,0 +1,30 @@
+/* Script for -N: mix text and data on same page; don't align data */
+OUTPUT_FORMAT("elf32-i386", "elf32-i386",
+ "elf32-i386")
+OUTPUT_ARCH(i386)
+ENTRY(_start)
+SECTIONS
+{
+ . = 0x8200;
+ .text :
+ {
+ _start = .;
+ *(.text .text.* )
+ }
+ .rodata : { *(.rodata .rodata.* ) }
+ /* Adjust the address for the data segment. We want to adjust up to
+ the same address within the page on the next page up. */
+ . = .;
+ .data : { *(.data .data.* ) }
+ __bss_start = .;
+ .bss :
+ {
+ *(.bss .bss.* )
+ *(COMMON)
+ . = ALIGN(. != 0 ? 32 / 8 : 1);
+ }
+ . = ALIGN(32 / 8);
+ . = ALIGN(32 / 8);
+ _end = .; PROVIDE (end = .);
+ .comment 0 : { *(.comment) }
+}
--
1.7.6.153.g78432
|