On Fri, Feb 04, 2011, Graeme Russ wrote: > diff --git a/arch/i386/config.mk b/arch/i386/config.mk > index 3fb97c1..77a33dd 100644 > --- a/arch/i386/config.mk > +++ b/arch/i386/config.mk > @@ -21,8 +21,6 @@ > # MA 02111-1307 USA > # > > -CROSS_COMPILE ?= i386-linux- > - > STANDALONE_LOAD_ADDR = 0x40000 > > PLATFORM_CPPFLAGS += -fno-strict-aliasing > @@ -33,8 +31,13 @@ PLATFORM_CPPFLAGS += $(call cc-option, -ffreestanding) > PLATFORM_CPPFLAGS += $(call cc-option, -fno-toplevel-reorder, $(call > cc-option, -fno-unit-at-a-time)) > PLATFORM_CPPFLAGS += $(call cc-option, -fno-stack-protector) > PLATFORM_CPPFLAGS += $(call cc-option, -mpreferred-stack-boundary=2) > -PLATFORM_CPPFLAGS += -DCONFIG_I386 -D__I386__ > +PLATFORM_CPPFLAGS += -fno-dwarf2-cfi-asm > + > +PLATFORM_RELFLAGS += -ffunction-sections -fvisibility=hidden > + > +PLATFORM_LDFLAGS += --emit-relocs -Bsymbolic -Bsymbolic-functions > > LDFLAGS += --cref > -LDFLAGS_u-boot += --gc-sections > -PLATFORM_RELFLAGS += -ffunction-sections > +LDFLAGS_u-boot += --gc-sections -pie > +LDSCRIPT := $(SRCTREE)/$(CPUDIR)/u-boot.lds > + > diff --git a/arch/i386/cpu/config.mk b/arch/i386/cpu/config.mk > index 16a160d..ec1d102 100644 > --- a/arch/i386/cpu/config.mk > +++ b/arch/i386/cpu/config.mk > @@ -21,6 +21,6 @@ > # MA 02111-1307 USA > # > > -PLATFORM_RELFLAGS += > +CROSS_COMPILE ?= i386-linux- > > -PLATFORM_CPPFLAGS += -march=i386 -Werror > +PLATFORM_CPPFLAGS += -DCONFIG_I386 -D__I386__ -march=i386 -Werror > diff --git a/arch/i386/cpu/u-boot.lds b/arch/i386/cpu/u-boot.lds > new file mode 100644 > index 0000000..3eeb2a2 > --- /dev/null > +++ b/arch/i386/cpu/u-boot.lds > @@ -0,0 +1,104 @@ > +/* > + * (C) Copyright 2002 > + * Daniel Engstr?m, Omicron Ceti AB, dan...@omicron.se. > + * > + * See file CREDITS for list of people who contributed to this > + * project. > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License as > + * published by the Free Software Foundation; either version 2 of > + * the License, or (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, > + * MA 02111-1307 USA > + */ > + > +OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") > +OUTPUT_ARCH(i386) > +ENTRY(_start) > + > +SECTIONS > +{ > + . = CONFIG_SYS_TEXT_BASE; /* Location of bootcode in flash */ > + __text_start = .; > + .text : { *(.text*); } > + > + . = ALIGN(4); > + __u_boot_cmd_start = .; > + .u_boot_cmd : { *(.u_boot_cmd) } > + . = ALIGN(4); > + __u_boot_cmd_end = .; > + > + . = ALIGN(4); > + .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } > + > + . = ALIGN(4); > + .data : { *(.data*) } > + > + . = ALIGN(4); > + .dynsym : { *(.dynsym*) } > + > + . = ALIGN(4); > + .hash : { *(.hash*) } > + > + . = ALIGN(4); > + .got : { *(.got*) } > + > + . = ALIGN(4); > + __data_end = .; > + > + . = ALIGN(4); > + __bss_start = ABSOLUTE(.); > + .bss (NOLOAD) : { *(.bss) } > + . = ALIGN(4); > + __bss_end = ABSOLUTE(.); > + > + . = ALIGN(4); > + __rel_dyn_start = .; > + .rel.dyn : { *(.rel.dyn) } > + __rel_dyn_end = .; > + > + /DISCARD/ : { *(.dynstr*) } > + /DISCARD/ : { *(.dynamic*) } > + /DISCARD/ : { *(.plt*) } > + /DISCARD/ : { *(.interp*) } > + /DISCARD/ : { *(.gnu*) } > + > + /* 16bit realmode trampoline code */ > + .realmode 0x7c0 : AT ( LOADADDR(.rel.dyn) + SIZEOF(.rel.dyn) ) { > KEEP(*(.realmode)) } > + > + __realmode_start = LOADADDR(.realmode); > + __realmode_size = SIZEOF(.realmode); > + > + /* 16bit BIOS emulation code (just enough to boot Linux) */ > + .bios 0 : AT ( LOADADDR(.realmode) + SIZEOF(.realmode) ) { > KEEP(*(.bios)) } > + > + __bios_start = LOADADDR(.bios); > + __bios_size = SIZEOF(.bios); > + > + /* The load addresses below assumes that the flash > + * will be mapped so that 0x387f0000 == 0xffff0000 > + * at reset time > + * > + * The fe00 and ff00 offsets of the start32 and start16 > + * segments are arbitrary, the just have to be mapped > + * at reset and the code have to fit. > + * The fff0 offset of resetvec is important, however. > + */ > + . = 0xfffffe00; > + .start32 : AT (CONFIG_SYS_TEXT_BASE + 0x3fe00) { KEEP(*(.start32)); } > + > + . = 0xf800; > + .start16 : AT (CONFIG_SYS_TEXT_BASE + 0x3f800) { KEEP(*(.start16)); } > + > + . = 0xfff0; > + .resetvec : AT (CONFIG_SYS_TEXT_BASE + 0x3fff0) { KEEP(*(.resetvec)); } > +} > diff --git a/board/eNET/config.mk b/board/eNET/config.mk > index c4242ad..ce575ab 100644 > --- a/board/eNET/config.mk > +++ b/board/eNET/config.mk > @@ -22,7 +22,3 @@ > # > > CONFIG_SYS_TEXT_BASE = 0x06000000 > -CFLAGS_common/dlmalloc.o += -Wa,--no-warn -fno-strict-aliasing > -PLATFORM_RELFLAGS += -fvisibility=hidden > -PLATFORM_CPPFLAGS += -fno-dwarf2-cfi-asm > -PLATFORM_LDFLAGS += -pic --emit-relocs -Bsymbolic -Bsymbolic-functions > diff --git a/board/eNET/u-boot.lds b/board/eNET/u-boot.lds > deleted file mode 100644 > index 3eeb2a2..0000000 > --- a/board/eNET/u-boot.lds > +++ /dev/null > @@ -1,104 +0,0 @@ > -/* > - * (C) Copyright 2002 > - * Daniel Engstr?m, Omicron Ceti AB, dan...@omicron.se. > - * > - * See file CREDITS for list of people who contributed to this > - * project. > - * > - * This program is free software; you can redistribute it and/or > - * modify it under the terms of the GNU General Public License as > - * published by the Free Software Foundation; either version 2 of > - * the License, or (at your option) any later version. > - * > - * This program is distributed in the hope that it will be useful, > - * but WITHOUT ANY WARRANTY; without even the implied warranty of > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > - * GNU General Public License for more details. > - * > - * You should have received a copy of the GNU General Public License > - * along with this program; if not, write to the Free Software > - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, > - * MA 02111-1307 USA > - */ > - > -OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") > -OUTPUT_ARCH(i386) > -ENTRY(_start) > - > -SECTIONS > -{ > - . = CONFIG_SYS_TEXT_BASE; /* Location of bootcode in flash */ > - __text_start = .; > - .text : { *(.text*); } > - > - . = ALIGN(4); > - __u_boot_cmd_start = .; > - .u_boot_cmd : { *(.u_boot_cmd) } > - . = ALIGN(4); > - __u_boot_cmd_end = .; > - > - . = ALIGN(4); > - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } > - > - . = ALIGN(4); > - .data : { *(.data*) } > - > - . = ALIGN(4); > - .dynsym : { *(.dynsym*) } > - > - . = ALIGN(4); > - .hash : { *(.hash*) } > - > - . = ALIGN(4); > - .got : { *(.got*) } > - > - . = ALIGN(4); > - __data_end = .; > - > - . = ALIGN(4); > - __bss_start = ABSOLUTE(.); > - .bss (NOLOAD) : { *(.bss) } > - . = ALIGN(4); > - __bss_end = ABSOLUTE(.); > - > - . = ALIGN(4); > - __rel_dyn_start = .; > - .rel.dyn : { *(.rel.dyn) } > - __rel_dyn_end = .; > - > - /DISCARD/ : { *(.dynstr*) } > - /DISCARD/ : { *(.dynamic*) } > - /DISCARD/ : { *(.plt*) } > - /DISCARD/ : { *(.interp*) } > - /DISCARD/ : { *(.gnu*) } > - > - /* 16bit realmode trampoline code */ > - .realmode 0x7c0 : AT ( LOADADDR(.rel.dyn) + SIZEOF(.rel.dyn) ) { > KEEP(*(.realmode)) } > - > - __realmode_start = LOADADDR(.realmode); > - __realmode_size = SIZEOF(.realmode); > - > - /* 16bit BIOS emulation code (just enough to boot Linux) */ > - .bios 0 : AT ( LOADADDR(.realmode) + SIZEOF(.realmode) ) { > KEEP(*(.bios)) } > - > - __bios_start = LOADADDR(.bios); > - __bios_size = SIZEOF(.bios); > - > - /* The load addresses below assumes that the flash > - * will be mapped so that 0x387f0000 == 0xffff0000 > - * at reset time > - * > - * The fe00 and ff00 offsets of the start32 and start16 > - * segments are arbitrary, the just have to be mapped > - * at reset and the code have to fit. > - * The fff0 offset of resetvec is important, however. > - */ > - . = 0xfffffe00; > - .start32 : AT (CONFIG_SYS_TEXT_BASE + 0x3fe00) { KEEP(*(.start32)); } > - > - . = 0xf800; > - .start16 : AT (CONFIG_SYS_TEXT_BASE + 0x3f800) { KEEP(*(.start16)); } > - > - . = 0xfff0; > - .resetvec : AT (CONFIG_SYS_TEXT_BASE + 0x3fff0) { KEEP(*(.resetvec)); } > -}
Acked-By: Lo?c Minier <loic.min...@linaro.org> Build-tested on Debian i386 (native); fixes the build failure with tip -- Lo?c Minier
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot