Hi, On Mon, Dec 12, 2011 at 11:26 AM, Arnaud Lacombe <lacom...@gmail.com> wrote: > We want the `_start's symbols to be at the very beginning of the `stage2' > binary's `.text' section. However, nothing enforces this requirement. With > recent binutils (ie. post 2.19.1), this results in a corrupt binary, as ld(1) > puts another symbol (eg. `journal_init') at the beginning of the section. > > Fix this by providing a stripped down version of the default linker script > where we enforces the position of `_start' in the `.text' section. > > Signed-off-by: Arnaud Lacombe <lacom...@gmail.com> > ping ?
Thanks, - Arnaud > --- > .../grub/patches/030-add-stage2-ldscripts.patch | 77 > ++++++++++++++++++++ > 1 files changed, 77 insertions(+), 0 deletions(-) > create mode 100644 package/grub/patches/030-add-stage2-ldscripts.patch > > diff --git a/package/grub/patches/030-add-stage2-ldscripts.patch > b/package/grub/patches/030-add-stage2-ldscripts.patch > new file mode 100644 > index 0000000..aff7ed4 > --- /dev/null > +++ b/package/grub/patches/030-add-stage2-ldscripts.patch > @@ -0,0 +1,77 @@ > +From 8858927ddc6797489cad322fc2d2134aeae543cd Mon Sep 17 00:00:00 2001 > +From: Arnaud Lacombe <lacom...@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 > + > -- > 1.7.6.153.g78432 > _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel