mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-17 15:38:51 +09:00
![Wolfgang Denk](/assets/img/avatar_default.png)
Commit f62fb99941
fixed handling of all rodata sections by using a
wildcard combined with calls to ld's builtin functions SORT_BY_ALIGNMENT()
and SORT_BY_NAME(). Unfortunately these functions were only
introduced with biunutils version 2.16, so the modification broke
building with all tool chains using older binutils.
This patch makes it work again. This is done by omitting the use of
these functions for such old tool chains. This will result in
slightly larger target binaries, as the rodata sections are no longer
in optimal order alignment-wise which reauls in unused gaps, but the
effect was found to be insignificant - especially compared to the fact
that you cannot build U-Boot at all in the current state.
As ld seems to have no support for conditionals we run the linker
script through the C preprocessor which can be easily used to remove
the unwanted function calls.
Note that the C preprocessor must be run with the "-ansi" (or a
"-std=") option to make sure all the system-specific predefined
macros outside the reserved namespace are suppressed. Otherise, cpp
might for example substitute "powerpc" to "1", thus corrupting for
example "OUTPUT_ARCH(powerpc)" etc.
Signed-off-by: Wolfgang Denk <wd@denx.de>
Cc: Mike Frysinger <vapier@gentoo.org>
78 lines
2.3 KiB
Makefile
78 lines
2.3 KiB
Makefile
# (C) Copyright 2000-2006
|
|
# Wolfgang Denk, DENX Software Engineering, wd@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 version 2 as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# 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
|
|
#
|
|
|
|
include $(TOPDIR)/config.mk
|
|
|
|
LIB = $(obj)lib$(BOARD).a
|
|
|
|
COBJS := voiceblue.o
|
|
SOBJS := setup.o
|
|
|
|
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.c eeprom_start.S
|
|
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),.)
|
|
|
|
all: $(obj).depend $(LIB) $(obj)eeprom.srec $(obj)eeprom.bin
|
|
|
|
$(LIB): $(OBJS) $(SOBJS)
|
|
$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
|
|
|
|
$(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 \
|
|
-L$(obj)../../examples/standalone -lstubs \
|
|
-L$(obj)../../lib_generic -lgeneric \
|
|
-L$(gcclibdir) -lgcc
|
|
$(OBJCOPY) -O srec $(<:.o=) $@
|
|
|
|
$(obj)eeprom.bin: $(obj)eeprom.srec
|
|
$(OBJCOPY) -I srec -O binary $< $@ 2>/dev/null
|
|
|
|
$(obj)u-boot.lds: $(LDSCRIPT)
|
|
$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
|
|
|
|
clean:
|
|
rm -f $(SOBJS) $(OBJS) $(obj)eeprom \
|
|
$(obj)eeprom.srec $(obj)eeprom.bin \
|
|
$(obj)eeprom.o $(obj)eeprom_start.o \
|
|
$(obj)u-boot.lds
|
|
|
|
distclean: clean
|
|
rm -f $(LIB) core *.bak $(obj).depend
|
|
|
|
#########################################################################
|
|
|
|
# defines $(obj).depend target
|
|
include $(SRCTREE)/rules.mk
|
|
|
|
sinclude $(obj).depend
|
|
|
|
#########################################################################
|