NetStar: eeprom - fix linker error
authorLadislav Michl <Ladislav.Michl@seznam.cz>
Mon, 8 Feb 2010 19:15:47 +0000 (14:15 -0500)
committerTom Rix <Tom.Rix@windriver.com>
Sun, 7 Mar 2010 18:36:34 +0000 (12:36 -0600)
linking eeprom with libgeneric.a is not really needed and causes following
error:
../../lib_generic/libgeneric.a(string.o): In function `strcmp':
lib_generic/string.c:152: multiple definition of `strcmp'
../../examples/standalone/libstubs.a(stubs.o):include/_exports.h:24: first defined here
Remove eeprom linker script as well and generate entry point object
(to start application by jumping on its beginning) on the fly.
Out-of-tree build tested as well.

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
board/netstar/Makefile
board/netstar/eeprom.lds [deleted file]
board/netstar/eeprom_start.S [deleted file]

index 11578b7..c435762 100644 (file)
@@ -29,20 +29,15 @@ include $(TOPDIR)/config.mk
 LIB    = $(obj)lib$(BOARD).a
 
 COBJS  := netstar.o
-SOBJS  := setup.o crcek.o
+SOBJS  := setup.o
 
-SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.c \
-               eeprom_start.S
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
 LOAD_ADDR = 0x10400000
-LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/eeprom.lds
-lnk = $(if $(obj),$(obj),.)
 
-HOSTCFLAGS = -Wall -pedantic -I$(TOPDIR)/include
+#########################################################################
 
 all:   $(obj).depend $(LIB) $(obj)eeprom.srec $(obj)eeprom.bin \
                $(obj)crcek.srec $(obj)crcek.bin $(obj)crcit
@@ -50,41 +45,42 @@ all:        $(obj).depend $(LIB) $(obj)eeprom.srec $(obj)eeprom.bin \
 $(LIB):        $(OBJS) $(SOBJS)
        $(AR) $(ARFLAGS) $@ $^
 
-$(obj)eeprom.srec:     $(obj)eeprom.o $(obj)eeprom_start.o $(obj)u-boot.lds
-       cd $(lnk) && $(LD) -T $(obj)u-boot.lds -g -Ttext $(LOAD_ADDR) \
-               -o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
+$(obj)eeprom_start.o:
+       echo "b eeprom" | $(CC) $(AFLAGS) -c -x assembler -o $@ -
+
+$(obj)eeprom:          $(obj)eeprom_start.o $(obj)eeprom.o
+       $(LD) -Ttext $(LOAD_ADDR) -e eeprom -o $@ $^ \
                -L$(obj)../../examples/standalone -lstubs \
-               -L$(obj)../../lib_generic -lgeneric \
-               -L$(gcclibdir) -lgcc
-       $(OBJCOPY) -O srec $(<:.o=) $@
+               $(PLATFORM_LIBS)
 
-$(obj)eeprom.bin:      $(obj)eeprom.srec
-       $(OBJCOPY) -I srec -O binary $< $@ 2>/dev/null
+$(obj)eeprom.srec:     $(obj)eeprom
+       $(OBJCOPY) -S -O srec $(<:.o=) $@
+
+$(obj)eeprom.bin:      $(obj)eeprom
+       $(OBJCOPY) -S -O binary $< $@
 
 $(obj)crcek.srec:      $(obj)crcek.o
-       $(LD) -g -Ttext 0x00000000 \
-               -o $(<:.o=) -e crcek $^
-       $(OBJCOPY) -O srec $(<:.o=) $@
+       $(LD) -g -Ttext 0x00000000 -e crcek -o $(<:.o=) $^
+       $(OBJCOPY) -S -O srec $(<:.o=) $@
 
 $(obj)crcek.bin:       $(obj)crcek.srec
-       $(OBJCOPY) -I srec -O binary $< $@ 2>/dev/null
+       $(OBJCOPY) -I srec -O binary $< $@
 
 $(obj)crcit:           $(obj)crcit.o $(obj)crc32.o
        $(HOSTCC) $(HOSTCFLAGS) -o $@ $^
 
-$(obj)crcit.o: crcit.c
+$(obj)crcit.o:         crcit.c
        $(HOSTCC) $(HOSTCFLAGS) -o $@ -c $<
 
-$(obj)crc32.o: $(SRCTREE)/lib_generic/crc32.c
-       $(HOSTCC) $(HOSTCFLAGS) -DUSE_HOSTCC -o $@ -c $<
-
-$(obj)u-boot.lds: $(LDSCRIPT)
-       $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(obj)crc32.o:         $(SRCTREE)/lib_generic/crc32.c
+       $(HOSTCC) $(HOSTCFLAGS) -DUSE_HOSTCC -I$(TOPDIR)/include \
+               -o $@ -c $<
 
 clean:
-       rm -f $(SOBJS) $(OBJS) $(obj)eeprom $(obj)eeprom.srec \
-               $(obj)eeprom.bin $(obj)crcek $(obj)crcek.srec \
-               $(obj)crcek.bin $(obj)u-boot.lds
+       rm -f $(SOBJS) $(OBJS) \
+               $(obj)eeprom_start.o $(obj)eeprom.o \
+               $(obj)eeprom $(obj)eeprom.srec  $(obj)eeprom.bin \
+               $(obj)crcek.o $(obj)crcek $(obj)crcek.srec $(obj)crcek.bin
 
 distclean:     clean
        rm -f $(LIB) core *.bak $(obj).depend
diff --git a/board/netstar/eeprom.lds b/board/netstar/eeprom.lds
deleted file mode 100644 (file)
index 1e48494..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
- * (C) Copyright 2005
- * Ladislav Michl, 2N Telekomunikace, <michl@2n.cz>
- *
- * 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-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
-       . = ALIGN(4);
-       .text      :
-       {
-         eeprom_start.o        (.text)
-         *(.text)
-       }
-
-       . = ALIGN(4);
-       .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
-
-       . = ALIGN(4);
-       .data : { *(.data) }
-
-       . = ALIGN(4);
-       .got : { *(.got) }
-
-       . = ALIGN(4);
-       __bss_start = .;
-       .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
-       _end = .;
-}
diff --git a/board/netstar/eeprom_start.S b/board/netstar/eeprom_start.S
deleted file mode 100644 (file)
index 3609382..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright (c) 2005  2N Telekomunikace
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
- *
- */
-
-.globl _start
-_start:        b       eeprom
-
-.end