* [U-Boot] [PATCH v3] libgcc inclusion from common Makefile overwritable from platform configs files
@ 2009-07-08 19:36 Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 19:42 ` Scott Wood
` (2 more replies)
0 siblings, 3 replies; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-08 19:36 UTC (permalink / raw)
To: u-boot
This patch allow to overwrit the libgcc Makefile inclusion from the toplevel
Makefile by the arch_config.mk files. This is in preparation for the ARM
architecture to move away from including libgcc function and only using
self-contained U-Boot functions as done in Linux.
Currently all the ARM boards that use the nand are broken due to the adding of
the 64 Bit device size support. In the past we have seen problems with different
toolchains due to EABI, FPU as example.
With this patch and the following one we move away from all these problems and
we will be able to have full control to have a functions embedded into u-boot.
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
Makefile | 3 ++-
api_examples/Makefile | 4 +---
board/netstar/Makefile | 4 +---
board/sl8245/config.mk | 1 -
board/trab/Makefile | 2 --
board/voiceblue/Makefile | 4 +---
examples/Makefile | 2 +-
7 files changed, 6 insertions(+), 14 deletions(-)
diff --git a/Makefile b/Makefile
index 2a06440..e2a61fb 100644
--- a/Makefile
+++ b/Makefile
@@ -288,7 +288,8 @@ LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
# Add GCC lib
-PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+PLATFORM_LIBGCC ?= -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+PLATFORM_LIBS += $(PLATFORM_LIBGCC)
ifeq ($(CONFIG_NAND_U_BOOT),y)
NAND_SPL = nand_spl
diff --git a/api_examples/Makefile b/api_examples/Makefile
index 4c01437..4bfa7e6 100644
--- a/api_examples/Makefile
+++ b/api_examples/Makefile
@@ -56,8 +56,6 @@ OBJS := $(addprefix $(obj),$(COBJS))
ELF := $(addprefix $(obj),$(ELF))
BIN := $(addprefix $(obj),$(BIN))
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
CPPFLAGS += -I..
all: $(obj).depend $(OBJS) $(LIB) $(ELF) $(BIN)
@@ -70,7 +68,7 @@ $(ELF):
$(obj)%: $(obj)%.o $(LIB)
$(LD) $(obj)crt0.o -Ttext $(LOAD_ADDR) \
-o $@ $< $(LIB) \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(BIN):
$(obj)%.bin: $(obj)%
diff --git a/board/netstar/Makefile b/board/netstar/Makefile
index 91bac38..1cc2722 100644
--- a/board/netstar/Makefile
+++ b/board/netstar/Makefile
@@ -36,8 +36,6 @@ SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.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),.)
@@ -55,7 +53,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
-o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
-L$(obj)../../examples -lstubs \
-L$(obj)../../lib_generic -lgeneric \
- -L$(gcclibdir) -lgcc
+ $(PLATFROM_LIBGCC)
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)eeprom.bin: $(obj)eeprom.srec
diff --git a/board/sl8245/config.mk b/board/sl8245/config.mk
index 022512b..299fc6c 100644
--- a/board/sl8245/config.mk
+++ b/board/sl8245/config.mk
@@ -28,4 +28,3 @@
TEXT_BASE = 0xFFF00000
PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
-PLATFORM_LIBS += $(shell $(CC) -print-libgcc-file-name)
diff --git a/board/trab/Makefile b/board/trab/Makefile
index 30e5fbb..a3661c4 100644
--- a/board/trab/Makefile
+++ b/board/trab/Makefile
@@ -36,8 +36,6 @@ SOBJS := $(addprefix $(obj),$(SOBJS))
OBJS_FKT := $(addprefix $(obj),$(COBJS_FKT))
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
LOAD_ADDR = 0xc100000
#########################################################################
diff --git a/board/voiceblue/Makefile b/board/voiceblue/Makefile
index e7c1cbb..0d1e079 100644
--- a/board/voiceblue/Makefile
+++ b/board/voiceblue/Makefile
@@ -33,8 +33,6 @@ 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),.)
@@ -49,7 +47,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
-o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
-L$(obj)../../examples -lstubs \
-L$(obj)../../lib_generic -lgeneric \
- -L$(gcclibdir) -lgcc
+ $(PLATFROM_LIBGCC)
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)eeprom.bin: $(obj)eeprom.srec
diff --git a/examples/Makefile b/examples/Makefile
index dbcfa92..5bd13f1 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -178,7 +178,7 @@ $(ELF):
$(obj)%: $(obj)%.o $(LIB)
$(LD) -g $(EX_LDFLAGS) -Ttext $(LOAD_ADDR) \
-o $@ -e $(SYM_PREFIX)$(notdir $(<:.o=)) $< $(LIB) \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(SREC):
$(obj)%.srec: $(obj)%
--
1.6.3.1
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v3] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 19:36 [U-Boot] [PATCH v3] libgcc inclusion from common Makefile overwritable from platform configs files Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-08 19:42 ` Scott Wood
2009-07-08 20:09 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:14 ` [U-Boot] [PATCH V4] " Jean-Christophe PLAGNIOL-VILLARD
2009-07-09 10:24 ` [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file Jean-Christophe PLAGNIOL-VILLARD
2 siblings, 1 reply; 69+ messages in thread
From: Scott Wood @ 2009-07-08 19:42 UTC (permalink / raw)
To: u-boot
Jean-Christophe PLAGNIOL-VILLARD wrote:
> LOAD_ADDR = 0x10400000
> LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/eeprom.lds
> lnk = $(if $(obj),$(obj),.)
> @@ -49,7 +47,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
> -o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
> -L$(obj)../../examples -lstubs \
> -L$(obj)../../lib_generic -lgeneric \
> - -L$(gcclibdir) -lgcc
> + $(PLATFROM_LIBGCC)
PLATFROM?
-Scott
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v3] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 19:42 ` Scott Wood
@ 2009-07-08 20:09 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 0 replies; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-08 20:09 UTC (permalink / raw)
To: u-boot
On 14:42 Wed 08 Jul , Scott Wood wrote:
> Jean-Christophe PLAGNIOL-VILLARD wrote:
> > LOAD_ADDR = 0x10400000
> > LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/eeprom.lds
> > lnk = $(if $(obj),$(obj),.)
> >@@ -49,7 +47,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
> > -o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
> > -L$(obj)../../examples -lstubs \
> > -L$(obj)../../lib_generic -lgeneric \
> >- -L$(gcclibdir) -lgcc
> >+ $(PLATFROM_LIBGCC)
>
> PLATFROM?
I've build it
it does not to need the libgcc at all
I'll fix anyway
Best Regards,
J.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH V4] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 19:36 [U-Boot] [PATCH v3] libgcc inclusion from common Makefile overwritable from platform configs files Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 19:42 ` Scott Wood
@ 2009-07-08 20:14 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:26 ` Scott Wood
2009-07-08 20:30 ` [U-Boot] [PATCH V4] " Wolfgang Denk
2009-07-09 10:24 ` [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file Jean-Christophe PLAGNIOL-VILLARD
2 siblings, 2 replies; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-08 20:14 UTC (permalink / raw)
To: u-boot
This patch allow to overwrit the libgcc Makefile inclusion from the toplevel
Makefile by the arch_config.mk files. This is in preparation for the ARM
architecture to move away from including libgcc function and only using
self-contained U-Boot functions as done in Linux.
Currently all the ARM boards that use the nand are broken due to the adding of
the 64 Bit device size support. In the past we have seen problems with different
toolchains due to EABI, FPU as example.
With this patch and the following one we move away from all these problems and
we will be able to have full control to have a functions embedded into u-boot.
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
v4:
fix typo
evenif that with the typo work fine
I'll send an other patch clean the non need lib link
Best Regards,
J.
Makefile | 3 ++-
api_examples/Makefile | 4 +---
board/netstar/Makefile | 4 +---
board/sl8245/config.mk | 1 -
board/trab/Makefile | 2 --
board/voiceblue/Makefile | 4 +---
examples/Makefile | 2 +-
7 files changed, 6 insertions(+), 14 deletions(-)
diff --git a/Makefile b/Makefile
index 2a06440..e2a61fb 100644
--- a/Makefile
+++ b/Makefile
@@ -288,7 +288,8 @@ LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
# Add GCC lib
-PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+PLATFORM_LIBGCC ?= -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+PLATFORM_LIBS += $(PLATFORM_LIBGCC)
ifeq ($(CONFIG_NAND_U_BOOT),y)
NAND_SPL = nand_spl
diff --git a/api_examples/Makefile b/api_examples/Makefile
index 4c01437..4bfa7e6 100644
--- a/api_examples/Makefile
+++ b/api_examples/Makefile
@@ -56,8 +56,6 @@ OBJS := $(addprefix $(obj),$(COBJS))
ELF := $(addprefix $(obj),$(ELF))
BIN := $(addprefix $(obj),$(BIN))
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
CPPFLAGS += -I..
all: $(obj).depend $(OBJS) $(LIB) $(ELF) $(BIN)
@@ -70,7 +68,7 @@ $(ELF):
$(obj)%: $(obj)%.o $(LIB)
$(LD) $(obj)crt0.o -Ttext $(LOAD_ADDR) \
-o $@ $< $(LIB) \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(BIN):
$(obj)%.bin: $(obj)%
diff --git a/board/netstar/Makefile b/board/netstar/Makefile
index 91bac38..a52ded4 100644
--- a/board/netstar/Makefile
+++ b/board/netstar/Makefile
@@ -36,8 +36,6 @@ SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.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),.)
@@ -55,7 +53,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
-o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
-L$(obj)../../examples -lstubs \
-L$(obj)../../lib_generic -lgeneric \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)eeprom.bin: $(obj)eeprom.srec
diff --git a/board/sl8245/config.mk b/board/sl8245/config.mk
index 022512b..299fc6c 100644
--- a/board/sl8245/config.mk
+++ b/board/sl8245/config.mk
@@ -28,4 +28,3 @@
TEXT_BASE = 0xFFF00000
PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
-PLATFORM_LIBS += $(shell $(CC) -print-libgcc-file-name)
diff --git a/board/trab/Makefile b/board/trab/Makefile
index 30e5fbb..a3661c4 100644
--- a/board/trab/Makefile
+++ b/board/trab/Makefile
@@ -36,8 +36,6 @@ SOBJS := $(addprefix $(obj),$(SOBJS))
OBJS_FKT := $(addprefix $(obj),$(COBJS_FKT))
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
LOAD_ADDR = 0xc100000
#########################################################################
diff --git a/board/voiceblue/Makefile b/board/voiceblue/Makefile
index e7c1cbb..0d1e079 100644
--- a/board/voiceblue/Makefile
+++ b/board/voiceblue/Makefile
@@ -33,8 +33,6 @@ 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),.)
@@ -49,7 +47,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
-o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
-L$(obj)../../examples -lstubs \
-L$(obj)../../lib_generic -lgeneric \
- -L$(gcclibdir) -lgcc
+ $(PLATFROM_LIBGCC)
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)eeprom.bin: $(obj)eeprom.srec
diff --git a/examples/Makefile b/examples/Makefile
index dbcfa92..5bd13f1 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -178,7 +178,7 @@ $(ELF):
$(obj)%: $(obj)%.o $(LIB)
$(LD) -g $(EX_LDFLAGS) -Ttext $(LOAD_ADDR) \
-o $@ -e $(SYM_PREFIX)$(notdir $(<:.o=)) $< $(LIB) \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(SREC):
$(obj)%.srec: $(obj)%
--
1.6.3.1
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH V4] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 20:14 ` [U-Boot] [PATCH V4] " Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-08 20:26 ` Scott Wood
2009-07-08 20:33 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:38 ` [U-Boot] [PATCH V5] " Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:30 ` [U-Boot] [PATCH V4] " Wolfgang Denk
1 sibling, 2 replies; 69+ messages in thread
From: Scott Wood @ 2009-07-08 20:26 UTC (permalink / raw)
To: u-boot
Jean-Christophe PLAGNIOL-VILLARD wrote:
> This patch allow to overwrit the libgcc Makefile inclusion from the toplevel
> Makefile by the arch_config.mk files. This is in preparation for the ARM
> architecture to move away from including libgcc function and only using
> self-contained U-Boot functions as done in Linux.
>
> Currently all the ARM boards that use the nand are broken due to the adding of
> the 64 Bit device size support. In the past we have seen problems with different
> toolchains due to EABI, FPU as example.
> With this patch and the following one we move away from all these problems and
> we will be able to have full control to have a functions embedded into u-boot.
>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> ---
> v4:
> fix typo
>
> evenif that with the typo work fine
I'm assuming that the variable reference is there for a reason, even if
it isn't necessary right now, and thus should be correct...
> LOAD_ADDR = 0x10400000
> LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/eeprom.lds
> lnk = $(if $(obj),$(obj),.)
> @@ -49,7 +47,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
> -o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
> -L$(obj)../../examples -lstubs \
> -L$(obj)../../lib_generic -lgeneric \
> - -L$(gcclibdir) -lgcc
> + $(PLATFROM_LIBGCC)
Still there.
-Scott
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH V4] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 20:14 ` [U-Boot] [PATCH V4] " Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:26 ` Scott Wood
@ 2009-07-08 20:30 ` Wolfgang Denk
2009-07-08 20:45 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:47 ` Mike Frysinger
1 sibling, 2 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-08 20:30 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe PLAGNIOL-VILLARD,
In message <1247084077-12867-1-git-send-email-plagnioj@jcrosoft.com> you wrote:
> This patch allow to overwrit the libgcc Makefile inclusion from the toplevel
overwrite
> Makefile by the arch_config.mk files. This is in preparation for the ARM
> architecture to move away from including libgcc function and only using
> self-contained U-Boot functions as done in Linux.
>
> Currently all the ARM boards that use the nand are broken due to the adding of
> the 64 Bit device size support. In the past we have seen problems with different
> toolchains due to EABI, FPU as example.
tool chains
> With this patch and the following one we move away from all these problems and
"the following one" makes no sense. After comitting the patch, nobody
knows what "the following one" might have been - even now I don't know
what you are referring to.
> we will be able to have full control to have a functions embedded into u-boot.
This sentence makes no sense to me either.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The high cost of living hasn't affected its popularity.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH V4] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 20:26 ` Scott Wood
@ 2009-07-08 20:33 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:38 ` [U-Boot] [PATCH V5] " Jean-Christophe PLAGNIOL-VILLARD
1 sibling, 0 replies; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-08 20:33 UTC (permalink / raw)
To: u-boot
On 15:26 Wed 08 Jul , Scott Wood wrote:
> Jean-Christophe PLAGNIOL-VILLARD wrote:
> >This patch allow to overwrit the libgcc Makefile inclusion from the toplevel
> >Makefile by the arch_config.mk files. This is in preparation for the ARM
> >architecture to move away from including libgcc function and only using
> >self-contained U-Boot functions as done in Linux.
> >
> >Currently all the ARM boards that use the nand are broken due to the adding of
> >the 64 Bit device size support. In the past we have seen problems with different
> >toolchains due to EABI, FPU as example.
> >With this patch and the following one we move away from all these problems and
> >we will be able to have full control to have a functions embedded into u-boot.
> >
> >Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> >---
> >v4:
> >fix typo
> >
> >evenif that with the typo work fine
>
> I'm assuming that the variable reference is there for a reason, even
> if it isn't necessary right now, and thus should be correct...
from the eeprom we can remove the libgcc include
as there is no need to use it
Best Regards,
J.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH V5] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 20:26 ` Scott Wood
2009-07-08 20:33 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-08 20:38 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:38 ` [U-Boot] [PATCH 2/2] netstar/voiceblue: remove no-need libgcc link for eeprom standalone Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:55 ` [U-Boot] [PATCH V5] libgcc inclusion from common Makefile overwritable from platform configs files Wolfgang Denk
1 sibling, 2 replies; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-08 20:38 UTC (permalink / raw)
To: u-boot
This patch allow to overwrit the libgcc Makefile inclusion from the toplevel
Makefile by the arch_config.mk files. This is in preparation for the ARM
architecture to move away from including libgcc function and only using
self-contained U-Boot functions as done in Linux.
Currently all the ARM boards that use the nand are broken due to the adding of
the 64 Bit device size support. In the past we have seen problems with different
toolchains due to EABI, FPU as example.
With this patch and the following one we move away from all these problems and
we will be able to have full control to have a functions embedded into u-boot.
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
V5
typo fix
Makefile | 3 ++-
api_examples/Makefile | 4 +---
board/netstar/Makefile | 4 +---
board/sl8245/config.mk | 1 -
board/trab/Makefile | 2 --
board/voiceblue/Makefile | 4 +---
examples/Makefile | 2 +-
7 files changed, 6 insertions(+), 14 deletions(-)
diff --git a/Makefile b/Makefile
index 2a06440..e2a61fb 100644
--- a/Makefile
+++ b/Makefile
@@ -288,7 +288,8 @@ LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
# Add GCC lib
-PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+PLATFORM_LIBGCC ?= -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+PLATFORM_LIBS += $(PLATFORM_LIBGCC)
ifeq ($(CONFIG_NAND_U_BOOT),y)
NAND_SPL = nand_spl
diff --git a/api_examples/Makefile b/api_examples/Makefile
index 4c01437..4bfa7e6 100644
--- a/api_examples/Makefile
+++ b/api_examples/Makefile
@@ -56,8 +56,6 @@ OBJS := $(addprefix $(obj),$(COBJS))
ELF := $(addprefix $(obj),$(ELF))
BIN := $(addprefix $(obj),$(BIN))
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
CPPFLAGS += -I..
all: $(obj).depend $(OBJS) $(LIB) $(ELF) $(BIN)
@@ -70,7 +68,7 @@ $(ELF):
$(obj)%: $(obj)%.o $(LIB)
$(LD) $(obj)crt0.o -Ttext $(LOAD_ADDR) \
-o $@ $< $(LIB) \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(BIN):
$(obj)%.bin: $(obj)%
diff --git a/board/netstar/Makefile b/board/netstar/Makefile
index 91bac38..a52ded4 100644
--- a/board/netstar/Makefile
+++ b/board/netstar/Makefile
@@ -36,8 +36,6 @@ SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.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),.)
@@ -55,7 +53,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
-o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
-L$(obj)../../examples -lstubs \
-L$(obj)../../lib_generic -lgeneric \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)eeprom.bin: $(obj)eeprom.srec
diff --git a/board/sl8245/config.mk b/board/sl8245/config.mk
index 022512b..299fc6c 100644
--- a/board/sl8245/config.mk
+++ b/board/sl8245/config.mk
@@ -28,4 +28,3 @@
TEXT_BASE = 0xFFF00000
PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
-PLATFORM_LIBS += $(shell $(CC) -print-libgcc-file-name)
diff --git a/board/trab/Makefile b/board/trab/Makefile
index 30e5fbb..a3661c4 100644
--- a/board/trab/Makefile
+++ b/board/trab/Makefile
@@ -36,8 +36,6 @@ SOBJS := $(addprefix $(obj),$(SOBJS))
OBJS_FKT := $(addprefix $(obj),$(COBJS_FKT))
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
LOAD_ADDR = 0xc100000
#########################################################################
diff --git a/board/voiceblue/Makefile b/board/voiceblue/Makefile
index e7c1cbb..369dc0b 100644
--- a/board/voiceblue/Makefile
+++ b/board/voiceblue/Makefile
@@ -33,8 +33,6 @@ 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),.)
@@ -49,7 +47,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
-o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
-L$(obj)../../examples -lstubs \
-L$(obj)../../lib_generic -lgeneric \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)eeprom.bin: $(obj)eeprom.srec
diff --git a/examples/Makefile b/examples/Makefile
index dbcfa92..5bd13f1 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -178,7 +178,7 @@ $(ELF):
$(obj)%: $(obj)%.o $(LIB)
$(LD) -g $(EX_LDFLAGS) -Ttext $(LOAD_ADDR) \
-o $@ -e $(SYM_PREFIX)$(notdir $(<:.o=)) $< $(LIB) \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(SREC):
$(obj)%.srec: $(obj)%
--
1.6.3.1
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 2/2] netstar/voiceblue: remove no-need libgcc link for eeprom standalone
2009-07-08 20:38 ` [U-Boot] [PATCH V5] " Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-08 20:38 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-20 22:03 ` Wolfgang Denk
2009-07-08 20:55 ` [U-Boot] [PATCH V5] libgcc inclusion from common Makefile overwritable from platform configs files Wolfgang Denk
1 sibling, 1 reply; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-08 20:38 UTC (permalink / raw)
To: u-boot
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
board/netstar/Makefile | 3 +--
board/voiceblue/Makefile | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/board/netstar/Makefile b/board/netstar/Makefile
index a52ded4..7237a3d 100644
--- a/board/netstar/Makefile
+++ b/board/netstar/Makefile
@@ -52,8 +52,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
cd $(lnk) && $(LD) -T $(LDSCRIPT) -g -Ttext $(LOAD_ADDR) \
-o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
-L$(obj)../../examples -lstubs \
- -L$(obj)../../lib_generic -lgeneric \
- $(PLATFORM_LIBGCC)
+ -L$(obj)../../lib_generic -lgeneric
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)eeprom.bin: $(obj)eeprom.srec
diff --git a/board/voiceblue/Makefile b/board/voiceblue/Makefile
index 369dc0b..b7710ee 100644
--- a/board/voiceblue/Makefile
+++ b/board/voiceblue/Makefile
@@ -46,8 +46,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
cd $(lnk) && $(LD) -T $(LDSCRIPT) -g -Ttext $(LOAD_ADDR) \
-o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
-L$(obj)../../examples -lstubs \
- -L$(obj)../../lib_generic -lgeneric \
- $(PLATFORM_LIBGCC)
+ -L$(obj)../../lib_generic -lgeneric
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)eeprom.bin: $(obj)eeprom.srec
--
1.6.3.1
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH V4] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 20:30 ` [U-Boot] [PATCH V4] " Wolfgang Denk
@ 2009-07-08 20:45 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:47 ` Mike Frysinger
1 sibling, 0 replies; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-08 20:45 UTC (permalink / raw)
To: u-boot
On 22:30 Wed 08 Jul , Wolfgang Denk wrote:
> Dear Jean-Christophe PLAGNIOL-VILLARD,
>
> In message <1247084077-12867-1-git-send-email-plagnioj@jcrosoft.com> you wrote:
> > This patch allow to overwrit the libgcc Makefile inclusion from the toplevel
>
> overwrite
>
> > Makefile by the arch_config.mk files. This is in preparation for the ARM
> > architecture to move away from including libgcc function and only using
> > self-contained U-Boot functions as done in Linux.
> >
> > Currently all the ARM boards that use the nand are broken due to the adding of
> > the 64 Bit device size support. In the past we have seen problems with different
> > toolchains due to EABI, FPU as example.
>
> tool chains
>
> > With this patch and the following one we move away from all these problems and
>
> "the following one" makes no sense. After comitting the patch, nobody
> knows what "the following one" might have been - even now I don't know
> what you are referring to.
I refer to the arm patch that remove the libgcc depency
>
> > we will be able to have full control to have a functions embedded into u-boot.
>
> This sentence makes no sense to me either.
for arm as example the gcc does not provide necessarely cored functions for
all ABI we do need to control wich one we need to use into u-boot
Best Regards,
J.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH V4] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 20:30 ` [U-Boot] [PATCH V4] " Wolfgang Denk
2009-07-08 20:45 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-08 20:47 ` Mike Frysinger
1 sibling, 0 replies; 69+ messages in thread
From: Mike Frysinger @ 2009-07-08 20:47 UTC (permalink / raw)
To: u-boot
On Wednesday 08 July 2009 16:30:03 Wolfgang Denk wrote:
> Jean-Christophe PLAGNIOL-VILLARD wrote:
> > This patch allow to overwrit the libgcc Makefile inclusion from the
> > toplevel
>
> overwrite
override is a better word for this behavior
this general method works for me (ignoring the issues others point out), so
assuming you fix those, acked-by-me
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090708/1a1d3866/attachment.pgp
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH V5] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 20:38 ` [U-Boot] [PATCH V5] " Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:38 ` [U-Boot] [PATCH 2/2] netstar/voiceblue: remove no-need libgcc link for eeprom standalone Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-08 20:55 ` Wolfgang Denk
2009-07-08 21:19 ` Jean-Christophe PLAGNIOL-VILLARD
1 sibling, 1 reply; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-08 20:55 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe PLAGNIOL-VILLARD,
In message <1247085496-21754-1-git-send-email-plagnioj@jcrosoft.com> you wrote:
> This patch allow to overwrit the libgcc Makefile inclusion from the toplevel
Please mind the hints: "overwrit" is a typo. You meant "overwrite",
and Mike just explained that "override" is even more appropriate
here.
> Makefile by the arch_config.mk files. This is in preparation for the ARM
> architecture to move away from including libgcc function and only using
> self-contained U-Boot functions as done in Linux.
>
> Currently all the ARM boards that use the nand are broken due to the adding of
> the 64 Bit device size support. In the past we have seen problems with different
> toolchains due to EABI, FPU as example.
Correct spelling is "tool chains", not "toolchains".
> With this patch and the following one we move away from all these problems and
> we will be able to have full control to have a functions embedded into u-boot.
Please fix the comment.
In git history, there will be no "following one" patch, and here you
did not post one either. If you don't have it ready yet, then please
use a description of what it will do.
And "we will be able to have full control to have a functions
embedded into u-boot" makes no sense. Either it is "a function"
(singular), or it is "functions" (plural, without "a"). But what do
you want to tell us? "have functions embedded into U-Boot"? We do
this all the time by linking them in - we already have full control
over it (except that it's not working as expected sometimes), and
your patch does not really change anything of this.
You wrote: "gcc does not provide necessarely cored functions". Sorry,
but I have no idea what you are talking about here. What is a "cored
function"?
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
When some people discover the truth, they just can't understand why
everybody isn't eager to hear it.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH V5] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 20:55 ` [U-Boot] [PATCH V5] libgcc inclusion from common Makefile overwritable from platform configs files Wolfgang Denk
@ 2009-07-08 21:19 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 21:29 ` Wolfgang Denk
0 siblings, 1 reply; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-08 21:19 UTC (permalink / raw)
To: u-boot
On 22:55 Wed 08 Jul , Wolfgang Denk wrote:
> Dear Jean-Christophe PLAGNIOL-VILLARD,
>
> In message <1247085496-21754-1-git-send-email-plagnioj@jcrosoft.com> you wrote:
> > This patch allow to overwrit the libgcc Makefile inclusion from the toplevel
>
> Please mind the hints: "overwrit" is a typo. You meant "overwrite",
> and Mike just explained that "override" is even more appropriate
> here.
>
> > Makefile by the arch_config.mk files. This is in preparation for the ARM
> > architecture to move away from including libgcc function and only using
> > self-contained U-Boot functions as done in Linux.
> >
> > Currently all the ARM boards that use the nand are broken due to the adding of
> > the 64 Bit device size support. In the past we have seen problems with different
> > toolchains due to EABI, FPU as example.
>
> Correct spelling is "tool chains", not "toolchains".
>
> > With this patch and the following one we move away from all these problems and
> > we will be able to have full control to have a functions embedded into u-boot.
>
> Please fix the comment.
>
> In git history, there will be no "following one" patch, and here you
> did not post one either. If you don't have it ready yet, then please
> use a description of what it will do.
the precedent patch still apply cleany so I do not resend it
>
> And "we will be able to have full control to have a functions
> embedded into u-boot" makes no sense. Either it is "a function"
> (singular), or it is "functions" (plural, without "a"). But what do
> you want to tell us? "have functions embedded into U-Boot"? We do
> this all the time by linking them in - we already have full control
> over it (except that it's not working as expected sometimes), and
> your patch does not really change anything of this.
gcc for arm is really boring about abi support and float support
so on arm we do need to control it and be sure about what we use for basic
function and do not use the libgcc provide by the tool chains as we can not
trust them
so for linux as example we implement it correctly and are able to manage
against what armv we want to compile or be comptatible
ditto when we will be able to support Thumb2 as needed for cortex-m3
>
>
> You wrote: "gcc does not provide necessarely cored functions". Sorry,
> but I have no idea what you are talking about here. What is a "cored
> function"?
correct function
>
> Best regards,
>
> Wolfgang Denk
>
> --
> DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
> When some people discover the truth, they just can't understand why
> everybody isn't eager to hear it.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH V5] libgcc inclusion from common Makefile overwritable from platform configs files
2009-07-08 21:19 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-08 21:29 ` Wolfgang Denk
0 siblings, 0 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-08 21:29 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe PLAGNIOL-VILLARD,
In message <20090708211902.GH12394@game.jcrosoft.org> you wrote:
>
> > > With this patch and the following one we move away from all these problems and
> > > we will be able to have full control to have a functions embedded into u-boot.
> >
> > Please fix the comment.
> >
> > In git history, there will be no "following one" patch, and here you
> > did not post one either. If you don't have it ready yet, then please
> > use a description of what it will do.
> the precedent patch still apply cleany so I do not resend it
You don't get it.
Your commit message uses the phrase "the following [patch]", but
nobody knows what this "following one" is. I do not know it even now,
while we are discussing it. Please use some form of reference that
can be understood.
> > And "we will be able to have full control to have a functions
> > embedded into u-boot" makes no sense. Either it is "a function"
> > (singular), or it is "functions" (plural, without "a"). But what do
> > you want to tell us? "have functions embedded into U-Boot"? We do
> > this all the time by linking them in - we already have full control
> > over it (except that it's not working as expected sometimes), and
> > your patch does not really change anything of this.
> gcc for arm is really boring about abi support and float support
> so on arm we do need to control it and be sure about what we use for basic
> function and do not use the libgcc provide by the tool chains as we can not
> trust them
> so for linux as example we implement it correctly and are able to manage
> against what armv we want to compile or be comptatible
> ditto when we will be able to support Thumb2 as needed for cortex-m3
I do understand the situation and what you are trying to do.
What I do not understand is the sentence you wrote in the commit
message.
> > You wrote: "gcc does not provide necessarely cored functions". Sorry,
> > but I have no idea what you are talking about here. What is a "cored
> > function"?
> correct function
Ah.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Q: How do you spell "onomatopoeia"?
A: The way it sounds.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-08 19:36 [U-Boot] [PATCH v3] libgcc inclusion from common Makefile overwritable from platform configs files Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 19:42 ` Scott Wood
2009-07-08 20:14 ` [U-Boot] [PATCH V4] " Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-09 10:24 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 7:54 ` Dirk Behme
2009-07-23 9:36 ` Wolfgang Denk
2 siblings, 2 replies; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-09 10:24 UTC (permalink / raw)
To: u-boot
This patch allows to override the libgcc Makefile inclusion from the toplevel
Makefile by the arch config.mk files. This is in preparation for the ARM
architecture to move away from including libgcc functions and only using
self-contained U-Boot functions as done in Linux.
Currently all the ARM boards that use NAND are broken due to the addition of
64 Bit device size support. In the past we have seen similar problems with
different tool chains due to EABI and FPU for example.
With this patch and this one: "ARM: Don't include libgcc anymore" we move away
from all these problems on ARM since we don't include any functions from
libgcc anymore.
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Acked-by: Mike Frysinger <vapier@gentoo.org>
---
Makefile | 3 ++-
api_examples/Makefile | 4 +---
board/netstar/Makefile | 4 +---
board/sl8245/config.mk | 1 -
board/trab/Makefile | 2 --
board/voiceblue/Makefile | 4 +---
examples/Makefile | 2 +-
7 files changed, 6 insertions(+), 14 deletions(-)
diff --git a/Makefile b/Makefile
index 2a06440..e2a61fb 100644
--- a/Makefile
+++ b/Makefile
@@ -288,7 +288,8 @@ LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
# Add GCC lib
-PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+PLATFORM_LIBGCC ?= -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+PLATFORM_LIBS += $(PLATFORM_LIBGCC)
ifeq ($(CONFIG_NAND_U_BOOT),y)
NAND_SPL = nand_spl
diff --git a/api_examples/Makefile b/api_examples/Makefile
index 4c01437..4bfa7e6 100644
--- a/api_examples/Makefile
+++ b/api_examples/Makefile
@@ -56,8 +56,6 @@ OBJS := $(addprefix $(obj),$(COBJS))
ELF := $(addprefix $(obj),$(ELF))
BIN := $(addprefix $(obj),$(BIN))
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
CPPFLAGS += -I..
all: $(obj).depend $(OBJS) $(LIB) $(ELF) $(BIN)
@@ -70,7 +68,7 @@ $(ELF):
$(obj)%: $(obj)%.o $(LIB)
$(LD) $(obj)crt0.o -Ttext $(LOAD_ADDR) \
-o $@ $< $(LIB) \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(BIN):
$(obj)%.bin: $(obj)%
diff --git a/board/netstar/Makefile b/board/netstar/Makefile
index 91bac38..a52ded4 100644
--- a/board/netstar/Makefile
+++ b/board/netstar/Makefile
@@ -36,8 +36,6 @@ SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.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),.)
@@ -55,7 +53,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
-o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
-L$(obj)../../examples -lstubs \
-L$(obj)../../lib_generic -lgeneric \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)eeprom.bin: $(obj)eeprom.srec
diff --git a/board/sl8245/config.mk b/board/sl8245/config.mk
index 022512b..299fc6c 100644
--- a/board/sl8245/config.mk
+++ b/board/sl8245/config.mk
@@ -28,4 +28,3 @@
TEXT_BASE = 0xFFF00000
PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
-PLATFORM_LIBS += $(shell $(CC) -print-libgcc-file-name)
diff --git a/board/trab/Makefile b/board/trab/Makefile
index 30e5fbb..a3661c4 100644
--- a/board/trab/Makefile
+++ b/board/trab/Makefile
@@ -36,8 +36,6 @@ SOBJS := $(addprefix $(obj),$(SOBJS))
OBJS_FKT := $(addprefix $(obj),$(COBJS_FKT))
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
LOAD_ADDR = 0xc100000
#########################################################################
diff --git a/board/voiceblue/Makefile b/board/voiceblue/Makefile
index e7c1cbb..369dc0b 100644
--- a/board/voiceblue/Makefile
+++ b/board/voiceblue/Makefile
@@ -33,8 +33,6 @@ 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),.)
@@ -49,7 +47,7 @@ $(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
-o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
-L$(obj)../../examples -lstubs \
-L$(obj)../../lib_generic -lgeneric \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)eeprom.bin: $(obj)eeprom.srec
diff --git a/examples/Makefile b/examples/Makefile
index dbcfa92..5bd13f1 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -178,7 +178,7 @@ $(ELF):
$(obj)%: $(obj)%.o $(LIB)
$(LD) -g $(EX_LDFLAGS) -Ttext $(LOAD_ADDR) \
-o $@ -e $(SYM_PREFIX)$(notdir $(<:.o=)) $< $(LIB) \
- -L$(gcclibdir) -lgcc
+ $(PLATFORM_LIBGCC)
$(SREC):
$(obj)%.srec: $(obj)%
--
1.6.3.1
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-09 10:24 ` [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-12 7:54 ` Dirk Behme
2009-07-12 8:02 ` Stefan Roese
2009-07-23 9:36 ` Wolfgang Denk
1 sibling, 1 reply; 69+ messages in thread
From: Dirk Behme @ 2009-07-12 7:54 UTC (permalink / raw)
To: u-boot
Dear Stefan and Jean-Christophe,
Jean-Christophe PLAGNIOL-VILLARD wrote:
> This patch allows to override the libgcc Makefile inclusion from the toplevel
> Makefile by the arch config.mk files. This is in preparation for the ARM
> architecture to move away from including libgcc functions and only using
> self-contained U-Boot functions as done in Linux.
>
> Currently all the ARM boards that use NAND are broken due to the addition of
> 64 Bit device size support. In the past we have seen similar problems with
> different tool chains due to EABI and FPU for example.
>
> With this patch and this one: "ARM: Don't include libgcc anymore" we move away
> from all these problems on ARM since we don't include any functions from
> libgcc anymore.
You know, I'm a big fan of these two patches and like to see them in
mainline asap ;)
I applied them locally. Now, I'm preparing a patch to enable
CONFIG_SYS_64BIT_VSPRINTF for all OMAP3 boards to get rid of these
annoying "warning: #warning Please define CONFIG_SYS_64BIT_VSPRINTF
for correct output!".
While without CONFIG_SYS_64BIT_VSPRINTF everything compiles fine with
both libgcc patches applied, enabling CONFIG_SYS_64BIT_VSPRINTF still
results in
lib_generic/libgeneric.a(vsprintf.o): In function `put_dec':
lib_generic/vsprintf.c:242: undefined reference to `__umoddi3'
lib_generic/vsprintf.c:242: undefined reference to `__udivdi3'
Any idea why this still happens *with* libgcc patches? Any idea how to
fix this? Add __umoddi3 and __udivdi3 to libgcc patch, too?
Many thanks and best regards
Dirk
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 7:54 ` Dirk Behme
@ 2009-07-12 8:02 ` Stefan Roese
2009-07-12 8:15 ` Dirk Behme
2009-07-12 10:29 ` Wolfgang Denk
0 siblings, 2 replies; 69+ messages in thread
From: Stefan Roese @ 2009-07-12 8:02 UTC (permalink / raw)
To: u-boot
Hi Dirk,
On Sunday 12 July 2009 09:54:12 Dirk Behme wrote:
> While without CONFIG_SYS_64BIT_VSPRINTF everything compiles fine with
> both libgcc patches applied, enabling CONFIG_SYS_64BIT_VSPRINTF still
> results in
>
> lib_generic/libgeneric.a(vsprintf.o): In function `put_dec':
>
> lib_generic/vsprintf.c:242: undefined reference to `__umoddi3'
>
>
> lib_generic/vsprintf.c:242: undefined reference to `__udivdi3'
>
> Any idea why this still happens *with* libgcc patches? Any idea how to
> fix this? Add __umoddi3 and __udivdi3 to libgcc patch, too?
I have to admit that I'm not sure why this is the case. But I suggest that you
take a look at Simon's patch sent to the list a few days ago:
[PATCH 5/8]: Use do_div from div64.h for vsprintf
This should fix this issue.
Let me know if this helps.
Best regards,
Stefan
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 8:02 ` Stefan Roese
@ 2009-07-12 8:15 ` Dirk Behme
2009-07-12 10:29 ` Wolfgang Denk
1 sibling, 0 replies; 69+ messages in thread
From: Dirk Behme @ 2009-07-12 8:15 UTC (permalink / raw)
To: u-boot
Stefan Roese wrote:
> Hi Dirk,
>
> On Sunday 12 July 2009 09:54:12 Dirk Behme wrote:
>> While without CONFIG_SYS_64BIT_VSPRINTF everything compiles fine with
>> both libgcc patches applied, enabling CONFIG_SYS_64BIT_VSPRINTF still
>> results in
>>
>> lib_generic/libgeneric.a(vsprintf.o): In function `put_dec':
>>
>> lib_generic/vsprintf.c:242: undefined reference to `__umoddi3'
>>
>>
>> lib_generic/vsprintf.c:242: undefined reference to `__udivdi3'
>>
>> Any idea why this still happens *with* libgcc patches? Any idea how to
>> fix this? Add __umoddi3 and __udivdi3 to libgcc patch, too?
>
> I have to admit that I'm not sure why this is the case. But I suggest that you
> take a look at Simon's patch sent to the list a few days ago:
>
> [PATCH 5/8]: Use do_div from div64.h for vsprintf
>
> This should fix this issue.
>
> Let me know if this helps.
Yes, thanks!
For the archives: With
http://lists.denx.de/pipermail/u-boot/2009-July/055599.html
http://git.denx.de/?p=u-boot/u-boot-arm.git;a=commit;h=07a6acbe20357ebc2af36ac32e7029828d895a62
http://git.denx.de/?p=u-boot/u-boot-arm.git;a=commit;h=40cebd2af1379f2cd815e2a7f3af809f828878fe
I'm now able to enable CONFIG_SYS_64BIT_VSPRINTF for all OMAP3 boards
and compile it without (tool chain related) warnings. OMAP3
CONFIG_SYS_64BIT_VSPRINTF patch will be sent, soon.
Thanks
Dirk
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 8:02 ` Stefan Roese
2009-07-12 8:15 ` Dirk Behme
@ 2009-07-12 10:29 ` Wolfgang Denk
2009-07-12 12:06 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-13 7:36 ` Stefan Roese
1 sibling, 2 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-12 10:29 UTC (permalink / raw)
To: u-boot
Dear Stefan Roese,
In message <200907121002.46516.sr@denx.de> you wrote:
>
> > Any idea why this still happens *with* libgcc patches? Any idea how to
> > fix this? Add __umoddi3 and __udivdi3 to libgcc patch, too?
>
> I have to admit that I'm not sure why this is the case. But I suggest that you
> take a look at Simon's patch sent to the list a few days ago:
>
> [PATCH 5/8]: Use do_div from div64.h for vsprintf
>
> This should fix this issue.
It will hush up the current errors, but that's actually a bad thing
here - the errors are an indication that Jean-Christophe's patch
might not be working as it is supposed to.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"What the scientists have in their briefcases is terrifying."
- Nikita Khrushchev
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 10:29 ` Wolfgang Denk
@ 2009-07-12 12:06 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 12:13 ` Dirk Behme
2009-07-12 14:36 ` Wolfgang Denk
2009-07-13 7:36 ` Stefan Roese
1 sibling, 2 replies; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-12 12:06 UTC (permalink / raw)
To: u-boot
On 12:29 Sun 12 Jul , Wolfgang Denk wrote:
> Dear Stefan Roese,
>
> In message <200907121002.46516.sr@denx.de> you wrote:
> >
> > > Any idea why this still happens *with* libgcc patches? Any idea how to
> > > fix this? Add __umoddi3 and __udivdi3 to libgcc patch, too?
> >
> > I have to admit that I'm not sure why this is the case. But I suggest that you
> > take a look at Simon's patch sent to the list a few days ago:
> >
> > [PATCH 5/8]: Use do_div from div64.h for vsprintf
> >
> > This should fix this issue.
>
> It will hush up the current errors, but that's actually a bad thing
> here - the errors are an indication that Jean-Christophe's patch
> might not be working as it is supposed to.
They do fix what they are suppose to , fix FPU and EABI problem which was
re-introduce by the 64 bit mtd support
here the problem is different you try to div64 which is not supported on arm
you do need to do_div
please apply this patch so I'll be able to send a pull request with the arm
specific part and other patch be go in vacancy for one week this night
Best Regards,
J.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 12:06 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-12 12:13 ` Dirk Behme
2009-07-12 12:39 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 14:36 ` Wolfgang Denk
1 sibling, 1 reply; 69+ messages in thread
From: Dirk Behme @ 2009-07-12 12:13 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe,
Jean-Christophe PLAGNIOL-VILLARD wrote:
> be go in vacancy for one week this night
This does mean that we will have no more ARM patches merged until
merge window closes, right?
Best regards
Dirk
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 12:13 ` Dirk Behme
@ 2009-07-12 12:39 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 0 replies; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-12 12:39 UTC (permalink / raw)
To: u-boot
On 14:13 Sun 12 Jul , Dirk Behme wrote:
> Dear Jean-Christophe,
>
> Jean-Christophe PLAGNIOL-VILLARD wrote:
> >be go in vacancy for one week this night
>
> This does mean that we will have no more ARM patches merged until
> merge window closes, right?
one tonight one next sunday
Best Regards,
J.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 12:06 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 12:13 ` Dirk Behme
@ 2009-07-12 14:36 ` Wolfgang Denk
2009-07-12 14:55 ` Dirk Behme
1 sibling, 1 reply; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-12 14:36 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe PLAGNIOL-VILLARD,
In message <20090712120655.GA21713@game.jcrosoft.org> you wrote:
>
> > It will hush up the current errors, but that's actually a bad thing
> > here - the errors are an indication that Jean-Christophe's patch
> > might not be working as it is supposed to.
> They do fix what they are suppose to , fix FPU and EABI problem which was
> re-introduce by the 64 bit mtd support
> here the problem is different you try to div64 which is not supported on arm
> you do need to do_div
What do you mean - not supported by ARM? Of course ARM supports 64
bit division.
Compiling this little test code:
long long div(long long x, long long y)
{
return x / y;
}
will result in a call to __aeabi_ldivmod using an EABI compliant
version of GCC, resp. to __divdi3 using an older compiler. So GCC
knows how to handle this, and it provides adequate functions to do
it.
> please apply this patch so I'll be able to send a pull request with the arm
> specific part and other patch be go in vacancy for one week this night
I really hesitate to do that. It seems that not using the compiler
provided library is not such a clever thing to do. The compile writes
probably know better what a specific version of GCC needs that
anybody else.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The more complex the mind, the greater the need for the simplicity of
play.
-- Kirk, "Shore Leave", stardate 3025.8
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 14:36 ` Wolfgang Denk
@ 2009-07-12 14:55 ` Dirk Behme
2009-07-12 15:50 ` Wolfgang Denk
0 siblings, 1 reply; 69+ messages in thread
From: Dirk Behme @ 2009-07-12 14:55 UTC (permalink / raw)
To: u-boot
Dear Wolfgang,
Wolfgang Denk wrote:
> Dear Jean-Christophe PLAGNIOL-VILLARD,
>
> In message <20090712120655.GA21713@game.jcrosoft.org> you wrote:
>>> It will hush up the current errors, but that's actually a bad thing
>>> here - the errors are an indication that Jean-Christophe's patch
>>> might not be working as it is supposed to.
>> They do fix what they are suppose to , fix FPU and EABI problem which was
>> re-introduce by the 64 bit mtd support
>> here the problem is different you try to div64 which is not supported on arm
>> you do need to do_div
>
> What do you mean - not supported by ARM? Of course ARM supports 64
> bit division.
>
> Compiling this little test code:
>
> long long div(long long x, long long y)
> {
> return x / y;
> }
>
> will result in a call to __aeabi_ldivmod using an EABI compliant
> version of GCC, resp. to __divdi3 using an older compiler. So GCC
> knows how to handle this, and it provides adequate functions to do
> it.
>
>> please apply this patch so I'll be able to send a pull request with the arm
>> specific part and other patch be go in vacancy for one week this night
>
> I really hesitate to do that. It seems that not using the compiler
> provided library is not such a clever thing to do. The compile writes
> probably know better what a specific version of GCC needs that
> anybody else.
Yes, you are basically right. But ;)
But, as Jean-Christophe mentioned above, it's a pain with the various
ARM tool chains floating around. Some are older, some are newer, some
are configured for EABI, some not, some are configured for software
floating point, some for hardware floating point, etc., etc.
While I as developer might be able to find a recent tool chain with a
libgcc compatible with U-Boot, I think we should avoid this pain for
our users. Users which like to "just compile U-Boot" and then we tell
them "well, your tool chain you seem to be happy with doesn't link
U-Boot, for U-Boot you have to install an other one" I think wouldn't
make them happy.
Regarding not using the compilers library and if this clever: No, it
isn't clever, you are right again. The compiler's library version is
most probably better optimized. But, we are dealing with a boot loader
here. So for the topic we discuss here, I think avoiding some pain for
us ("my tool chain doesn't compile U-Boot, help!" mails at this list)
and our users (see above) is the stronger argument than some
optimization/performance issues in some (seldom?) used math functions.
Best regards
Dirk
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 14:55 ` Dirk Behme
@ 2009-07-12 15:50 ` Wolfgang Denk
2009-07-12 16:12 ` Dirk Behme
2009-07-12 16:17 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 2 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-12 15:50 UTC (permalink / raw)
To: u-boot
Dear Dirk,
In message <4A59F95A.6060803@googlemail.com> you wrote:
>
> > I really hesitate to do that. It seems that not using the compiler
> > provided library is not such a clever thing to do. The compile writes
> > probably know better what a specific version of GCC needs that
> > anybody else.
>
> Yes, you are basically right. But ;)
>
> But, as Jean-Christophe mentioned above, it's a pain with the various
> ARM tool chains floating around. Some are older, some are newer, some
> are configured for EABI, some not, some are configured for software
> floating point, some for hardware floating point, etc., etc.
Right. And each of these is supposed to come with it's own version of
libgcc, configured exactly for the requirements of this specific
version and configuration of GCC.
And it turns out that the majority of architectures works just fine
with such a setup, just using libgcc for functions required for and
provided by the compiler.
If the compiler provided functions cannot be used, this is IMO an
indication of a broken toolchain, which should either be fixed (if
it's under some form of maintenance) or abandoned (because you will
have the same problems again in other situations outside of U-Boot).
> While I as developer might be able to find a recent tool chain with a
> libgcc compatible with U-Boot, I think we should avoid this pain for
> our users. Users which like to "just compile U-Boot" and then we tell
> them "well, your tool chain you seem to be happy with doesn't link
> U-Boot, for U-Boot you have to install an other one" I think wouldn't
> make them happy.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 15:50 ` Wolfgang Denk
@ 2009-07-12 16:12 ` Dirk Behme
2009-07-12 18:17 ` Wolfgang Denk
2009-07-12 16:17 ` Jean-Christophe PLAGNIOL-VILLARD
1 sibling, 1 reply; 69+ messages in thread
From: Dirk Behme @ 2009-07-12 16:12 UTC (permalink / raw)
To: u-boot
Dear Wolfgang,
Wolfgang Denk wrote:
> Dear Dirk,
>
> In message <4A59F95A.6060803@googlemail.com> you wrote:
>>> I really hesitate to do that. It seems that not using the compiler
>>> provided library is not such a clever thing to do. The compile writes
>>> probably know better what a specific version of GCC needs that
>>> anybody else.
>> Yes, you are basically right. But ;)
>>
>> But, as Jean-Christophe mentioned above, it's a pain with the various
>> ARM tool chains floating around. Some are older, some are newer, some
>> are configured for EABI, some not, some are configured for software
>> floating point, some for hardware floating point, etc., etc.
>
> Right. And each of these is supposed to come with it's own version of
> libgcc, configured exactly for the requirements of this specific
> version and configuration of GCC.
>
> And it turns out that the majority of architectures works just fine
> with such a setup, just using libgcc for functions required for and
> provided by the compiler.
>
> If the compiler provided functions cannot be used, this is IMO an
> indication of a broken toolchain, which should either be fixed (if
> it's under some form of maintenance) or abandoned (because you will
> have the same problems again in other situations outside of U-Boot).
>
>> While I as developer might be able to find a recent tool chain with a
>> libgcc compatible with U-Boot, I think we should avoid this pain for
>> our users. Users which like to "just compile U-Boot" and then we tell
>> them "well, your tool chain you seem to be happy with doesn't link
>> U-Boot, for U-Boot you have to install an other one" I think wouldn't
>> make them happy.
>
>>From the technical point of view it is only reasonable to point out
> that these users have a broken toolchain, and that they should take
> the first opportunity to fix or replace it.
>
> Of course it it nice if we can also provide a workaround for them, so
> they can update at a point in time that is convenient to them. But the
> implementation of such a workaround should be clean, and eventually be
> used only for systems that really need it.
>
> In no case we should make the use of such a workaround for broken
> setups the rule which has to be used by all systems (and eventually
> all architectures, even those that never had such problems in the
> first place).
Ah, I understand, most probably we are not aligned about what we talk,
sorry. Yes, I know, there was some discussion about the Makefiles and
that there are some requests to change them. Unfortunately, I'm no
Makefile expert.
So I'm only talking about ARM systems/architecture. If the Makefiles
discussed previously touch other systems/architectures, too, then this
is not what I'm talking about.
> This is why I really hesitate to apply these patches - they make the
> workaround for a few broken systems the rule, instead of making clear
> that this is an exception needed only by some (broken) systems.
For me the broken systems are in a first step ARM tool chains. Nothing
more. Not sure if we can limit it to a sub-group of ARM systems,
though? E.g. would it possible to have a CONFIG_SYS_DONT_RELY_ON_LIBGCC?
>> Regarding not using the compilers library and if this clever: No, it
>> isn't clever, you are right again. The compiler's library version is
>> most probably better optimized. But, we are dealing with a boot loader
>
> This is in no way a question of optimization. If we provide
> replacements for the libgcc functions, _we_ will have to maintain
> these and make sure they work correctly with all versions of GCC that
> exist in the multiverse and with all of their possible and impossible
> configurations.
It was my understanding that Jean-Christophe copied this code from
kernel? Like we do with some other systems, e.g. MTD? So it's
maintained by kernel developers? Sorry if I missed something here.
> That's a lot of work we put on ouw own back for - for
> what?
>
>> here. So for the topic we discuss here, I think avoiding some pain for
>> us ("my tool chain doesn't compile U-Boot, help!" mails at this list)
>> and our users (see above) is the stronger argument than some
>> optimization/performance issues in some (seldom?) used math functions.
>
> I think that answering a few mails, pointing out known problems with
> broken tool chains requires by far less amount of effort than adding
> this code. Heck, discussing and testing of this patch took already
> way more of my time than replying to all related messages in the last
> 3 years together...
>
>
> I think the patch needs to be changed such that it needs to be
> specifically enabled for broken tool chains, and that by default all
> systems behave the same, i. e. assume a working tool chain and use
> libgcc.
Yes. I talk about "broken tool chains == ARM tool chains". Nothing
more. If the Makefile changes in the patches we talk about do some
more, then that's not what I mean.
Best regards
Dirk
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 15:50 ` Wolfgang Denk
2009-07-12 16:12 ` Dirk Behme
@ 2009-07-12 16:17 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 18:29 ` Wolfgang Denk
1 sibling, 1 reply; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-12 16:17 UTC (permalink / raw)
To: u-boot
On 17:50 Sun 12 Jul , Wolfgang Denk wrote:
> Dear Dirk,
>
> In message <4A59F95A.6060803@googlemail.com> you wrote:
> >
> > > I really hesitate to do that. It seems that not using the compiler
> > > provided library is not such a clever thing to do. The compile writes
> > > probably know better what a specific version of GCC needs that
> > > anybody else.
> >
> > Yes, you are basically right. But ;)
> >
> > But, as Jean-Christophe mentioned above, it's a pain with the various
> > ARM tool chains floating around. Some are older, some are newer, some
> > are configured for EABI, some not, some are configured for software
> > floating point, some for hardware floating point, etc., etc.
>
> Right. And each of these is supposed to come with it's own version of
> libgcc, configured exactly for the requirements of this specific
> version and configuration of GCC.
the problem is that it's not really possible on arm
because you will need a toolchain for u-boot and an other for the userland
and in somecase an other for the kernel
We can not trust at all the libgcc provide by the toolchains we have see this
kind of problem thousand of times on the kernel and of course in U-Boot
and it's not the only arch to have this kind of problem the mips have too.
I can give 10's of toolchains which are correctly configured but never acheive
to build u-boot or the kernel just because of the libgcc.
Btw it will not be a huge work for U-Boot at all as we do this job in the
kernel anyway
Best Regards,
J.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 16:12 ` Dirk Behme
@ 2009-07-12 18:17 ` Wolfgang Denk
2009-07-12 19:22 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 1 reply; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-12 18:17 UTC (permalink / raw)
To: u-boot
Dear Dirk Behme,
In message <4A5A0B5B.2010408@googlemail.com> you wrote:
>
> > Of course it it nice if we can also provide a workaround for them, so
> > they can update at a point in time that is convenient to them. But the
> > implementation of such a workaround should be clean, and eventually be
> > used only for systems that really need it.
> >
> > In no case we should make the use of such a workaround for broken
> > setups the rule which has to be used by all systems (and eventually
> > all architectures, even those that never had such problems in the
> > first place).
>
> Ah, I understand, most probably we are not aligned about what we talk,
> sorry. Yes, I know, there was some discussion about the Makefiles and
> that there are some requests to change them. Unfortunately, I'm no
> Makefile expert.
>
> So I'm only talking about ARM systems/architecture. If the Makefiles
> discussed previously touch other systems/architectures, too, then this
> is not what I'm talking about.
Note that this is not a question of ARM versus other architectures.
On ARM the use of libgcc should be the default like on all other
architectures - only if needed it should be possible to switch on a
don't-use-libgcc mode, but this should then be independent of
architecture, either.
> > This is why I really hesitate to apply these patches - they make the
> > workaround for a few broken systems the rule, instead of making clear
> > that this is an exception needed only by some (broken) systems.
>
> For me the broken systems are in a first step ARM tool chains. Nothing
> more. Not sure if we can limit it to a sub-group of ARM systems,
> though? E.g. would it possible to have a CONFIG_SYS_DONT_RELY_ON_LIBGCC?
That would be a board specific thing, which is inappropriate, as it
does not depend on a specific board. The selection could be done by
passing some argument or environment variables to "make", though.
> > This is in no way a question of optimization. If we provide
> > replacements for the libgcc functions, _we_ will have to maintain
> > these and make sure they work correctly with all versions of GCC that
> > exist in the multiverse and with all of their possible and impossible
> > configurations.
>
> It was my understanding that Jean-Christophe copied this code from
> kernel? Like we do with some other systems, e.g. MTD? So it's
> maintained by kernel developers? Sorry if I missed something here.
Even if it's maintained in Linux, we still have to follow any changes
there, and port these to U-Boot, and analyse each new problem popping
up by future uses of C statements that cause GCC to generate libgcc
calls - that may or may not be covered by the kernel provided code.
No matter where we get the code from, an ongoing effort will be
needed to maintain this.
> Yes. I talk about "broken tool chains == ARM tool chains". Nothing
This is where I disagree. Why should we automatically assume that
there are no sane ARM toolchains?
We should always assume to have a usable toolchain first, and only
fall back on the workaround if it's really necessary - no matter if
it's ARM or anything else.
Binding this to ARM is IMHO inherently wrong.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
That said, there may be good reasons for what you did beyond obsequi-
ous sycophantic parody. Perhaps you might be so kind as to elucidate.
-- Tom Christiansen in <5ldjbm$jtk$1@csnews.cs.colorado.edu>
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 16:17 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-12 18:29 ` Wolfgang Denk
2009-07-12 19:06 ` Dirk Behme
2009-07-13 9:25 ` Mike Frysinger
0 siblings, 2 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-12 18:29 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe PLAGNIOL-VILLARD,
In message <20090712161700.GD21651@game.jcrosoft.org> you wrote:
>
> > Right. And each of these is supposed to come with it's own version of
> > libgcc, configured exactly for the requirements of this specific
> > version and configuration of GCC.
> the problem is that it's not really possible on arm
> because you will need a toolchain for u-boot and an other for the userland
> and in somecase an other for the kernel
You mean it is impossible to build a tool chain for ARM that can be
used to build U-Boot, Linux, and user space code? I can't believe
that ARM support in GCC is that seriously broken.
> We can not trust at all the libgcc provide by the toolchains we have see this
> kind of problem thousand of times on the kernel and of course in U-Boot
> and it's not the only arch to have this kind of problem the mips have too.
What do you mean? Are there examples where the libgcc provided
functions are incorrect? But then - isn't the Linux kernel code
drived from the very same set of sources?
The only problems that I have seen in the past is that for example
libgcc code assumes hardware FP support (ironically even on
processors that never had a FPU) while U-Boot uses "-msoft-float". In
that case it would be sufficient if the GCC builders provided a
version of libgcc configured for soft-float.
Are you aware of problems that have a different nature, i. e. where
the libgcc provided source code is actually incorrect for some
system?
> I can give 10's of toolchains which are correctly configured but never acheive
> to build u-boot or the kernel just because of the libgcc.
The questionhere is probably how you define "correctly". If these tool
chains are supposed to be used for U-Boot and kenrel development, then
they are probably at least not complete.
> Btw it will not be a huge work for U-Boot at all as we do this job in the
> kernel anyway
You still have to keep both in sync.
And as I mantioned before: I do not oppose the change itself. I agree
that it is useful and actually a very good idea to support users who
really need this. The only things I oppose are (1) making this the
default (or even mandatory) for all tool chains and (2) making it
architecture-dependent.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
In the beginning, there was nothing, which exploded.
- Terry Pratchett, _Lords and Ladies_
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 18:29 ` Wolfgang Denk
@ 2009-07-12 19:06 ` Dirk Behme
2009-07-12 19:30 ` Wolfgang Denk
2009-07-13 9:25 ` Mike Frysinger
1 sibling, 1 reply; 69+ messages in thread
From: Dirk Behme @ 2009-07-12 19:06 UTC (permalink / raw)
To: u-boot
Dear Wolfgang,
Wolfgang Denk wrote:
> Dear Jean-Christophe PLAGNIOL-VILLARD,
>
> In message <20090712161700.GD21651@game.jcrosoft.org> you wrote:
>>> Right. And each of these is supposed to come with it's own version of
>>> libgcc, configured exactly for the requirements of this specific
>>> version and configuration of GCC.
>> the problem is that it's not really possible on arm
>> because you will need a toolchain for u-boot and an other for the userland
>> and in somecase an other for the kernel
>
> You mean it is impossible to build a tool chain for ARM that can be
> used to build U-Boot, Linux, and user space code? I can't believe
> that ARM support in GCC is that seriously broken.
>
>> We can not trust at all the libgcc provide by the toolchains we have see this
>> kind of problem thousand of times on the kernel and of course in U-Boot
>> and it's not the only arch to have this kind of problem the mips have too.
>
> What do you mean? Are there examples where the libgcc provided
> functions are incorrect? But then - isn't the Linux kernel code
> drived from the very same set of sources?
>
> The only problems that I have seen in the past is that for example
> libgcc code assumes hardware FP support (ironically even on
> processors that never had a FPU) while U-Boot uses "-msoft-float". In
> that case it would be sufficient if the GCC builders provided a
> version of libgcc configured for soft-float.
>
> Are you aware of problems that have a different nature, i. e. where
> the libgcc provided source code is actually incorrect for some
> system?
>
>> I can give 10's of toolchains which are correctly configured but never acheive
>> to build u-boot or the kernel just because of the libgcc.
>
> The questionhere is probably how you define "correctly". If these tool
> chains are supposed to be used for U-Boot and kenrel development, then
> they are probably at least not complete.
>
>> Btw it will not be a huge work for U-Boot at all as we do this job in the
>> kernel anyway
>
> You still have to keep both in sync.
>
> And as I mantioned before: I do not oppose the change itself. I agree
> that it is useful and actually a very good idea to support users who
> really need this. The only things I oppose are (1) making this the
> default (or even mandatory) for all tool chains and (2) making it
> architecture-dependent.
So to do in in positive logic, what do you propose how to enable it?
In the other mail you mentioned "The selection could be done by
passing some argument or environment variables to "make""?
Maybe you could give some (Makefile?) (pseudo?) code that
Jean-Christophe gets an idea how to do this correctly? Sorry if this
was given already in the Makefile discussion and I missed it.
Many thanks
Dirk
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 18:17 ` Wolfgang Denk
@ 2009-07-12 19:22 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 19:35 ` Wolfgang Denk
0 siblings, 1 reply; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-12 19:22 UTC (permalink / raw)
To: u-boot
On 20:17 Sun 12 Jul , Wolfgang Denk wrote:
> Dear Dirk Behme,
>
> In message <4A5A0B5B.2010408@googlemail.com> you wrote:
> >
> > > Of course it it nice if we can also provide a workaround for them, so
> > > they can update at a point in time that is convenient to them. But the
> > > implementation of such a workaround should be clean, and eventually be
> > > used only for systems that really need it.
> > >
> > > In no case we should make the use of such a workaround for broken
> > > setups the rule which has to be used by all systems (and eventually
> > > all architectures, even those that never had such problems in the
> > > first place).
> >
> > Ah, I understand, most probably we are not aligned about what we talk,
> > sorry. Yes, I know, there was some discussion about the Makefiles and
> > that there are some requests to change them. Unfortunately, I'm no
> > Makefile expert.
> >
> > So I'm only talking about ARM systems/architecture. If the Makefiles
> > discussed previously touch other systems/architectures, too, then this
> > is not what I'm talking about.
>
> Note that this is not a question of ARM versus other architectures.
> On ARM the use of libgcc should be the default like on all other
> architectures - only if needed it should be possible to switch on a
> don't-use-libgcc mode, but this should then be independent of
> architecture, either.
which is the case no arch are force to switch the current patch just allow
to switch to this mode.
>
> > > This is why I really hesitate to apply these patches - they make the
> > > workaround for a few broken systems the rule, instead of making clear
> > > that this is an exception needed only by some (broken) systems.
> >
> > For me the broken systems are in a first step ARM tool chains. Nothing
> > more. Not sure if we can limit it to a sub-group of ARM systems,
> > though? E.g. would it possible to have a CONFIG_SYS_DONT_RELY_ON_LIBGCC?
>
> That would be a board specific thing, which is inappropriate, as it
> does not depend on a specific board. The selection could be done by
> passing some argument or environment variables to "make", though.
>
> > > This is in no way a question of optimization. If we provide
> > > replacements for the libgcc functions, _we_ will have to maintain
> > > these and make sure they work correctly with all versions of GCC that
> > > exist in the multiverse and with all of their possible and impossible
> > > configurations.
> >
> > It was my understanding that Jean-Christophe copied this code from
> > kernel? Like we do with some other systems, e.g. MTD? So it's
> > maintained by kernel developers? Sorry if I missed something here.
>
> Even if it's maintained in Linux, we still have to follow any changes
> there, and port these to U-Boot, and analyse each new problem popping
> up by future uses of C statements that cause GCC to generate libgcc
> calls - that may or may not be covered by the kernel provided code.
>
> No matter where we get the code from, an ongoing effort will be
> needed to maintain this.
>
> > Yes. I talk about "broken tool chains == ARM tool chains". Nothing
>
> This is where I disagree. Why should we automatically assume that
> there are no sane ARM toolchains?
unfortunately most of the arm toolchains are not sane for every point of view
as you can not build U-Boot, kernel and userland with the same optimized
toolchain most of the time.
Maybe oneday we can assume that we could use any arm toolchain to build the
3, but for now I can assure it's not the case.
On other it maybe not the case but as example on mips we have similar issue
to workaround to be able to build U-Boot & Kernel
Best Regards,
J.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 19:06 ` Dirk Behme
@ 2009-07-12 19:30 ` Wolfgang Denk
0 siblings, 0 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-12 19:30 UTC (permalink / raw)
To: u-boot
Dear Dirk,
In message <4A5A3439.9000208@googlemail.com> you wrote:
>
> > And as I mantioned before: I do not oppose the change itself. I agree
> > that it is useful and actually a very good idea to support users who
> > really need this. The only things I oppose are (1) making this the
> > default (or even mandatory) for all tool chains and (2) making it
> > architecture-dependent.
>
> So to do in in positive logic, what do you propose how to enable it?
> In the other mail you mentioned "The selection could be done by
> passing some argument or environment variables to "make""?
Right.
> Maybe you could give some (Makefile?) (pseudo?) code that
> Jean-Christophe gets an idea how to do this correctly? Sorry if this
> was given already in the Makefile discussion and I missed it.
No example was given yet.
If someone puts enough effort into it, a clean implementation would
probably provide a "spec string" with a "%G" definition to the CFLAGS
and thus to the cross compiler's command-line options to override the
GCC-provided definition of 'libgcc' with a new (U-Boot provided) one
(see gcc.info, Node: Spec Files, Section 3.15 Specifying subprocesses
and the switches to pass to them).
A simpler implementation could use the '-B_prefix_' command-line
option to select a different run-time support library.
The feature itself could for example be triggered by using something
like
$ make USE_PRIVATE_LIBGCC=yes
or
$ USE_PRIVATE_LIBGCC=yes
$ export USE_PRIVATE_LIBGCC
$ make
or similar.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Philosophy is a game with objectives and no rules.
Mathematics is a game with rules and no objectives.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 19:22 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-12 19:35 ` Wolfgang Denk
2009-07-12 19:51 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 1 reply; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-12 19:35 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe PLAGNIOL-VILLARD,
In message <20090712192216.GA1686@game.jcrosoft.org> you wrote:
>
> > Note that this is not a question of ARM versus other architectures.
> > On ARM the use of libgcc should be the default like on all other
> > architectures - only if needed it should be possible to switch on a
> > don't-use-libgcc mode, but this should then be independent of
> > architecture, either.
> which is the case no arch are force to switch the current patch just allow
> to switch to this mode.
My understanding was that the current patch (1) makes not using
lingcc the default for ARM, and (2) makes it the default for ARM for
all too chains.
Please show me how to activate the feature from the command line, as
I seem to have missed this option (and the documentation for it).
> > This is where I disagree. Why should we automatically assume that
> > there are no sane ARM toolchains?
> unfortunately most of the arm toolchains are not sane for every point of view
> as you can not build U-Boot, kernel and userland with the same optimized
> toolchain most of the time.
But ARM is just one out of many different architectures, and there
are eventually (sufficently) sane ARM tool chains available, too.
This is the default case, and shall remain it.
For broken tool chains (ARM or other) the feature can be activated
(when running make).
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Blast medicine anyway! We've learned to tie into every organ in the
human body but one. The brain! The brain is what life is all about.
-- McCoy, "The Menagerie", stardate 3012.4
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 19:35 ` Wolfgang Denk
@ 2009-07-12 19:51 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 21:27 ` Wolfgang Denk
0 siblings, 1 reply; 69+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-12 19:51 UTC (permalink / raw)
To: u-boot
On 21:35 Sun 12 Jul , Wolfgang Denk wrote:
> Dear Jean-Christophe PLAGNIOL-VILLARD,
>
> In message <20090712192216.GA1686@game.jcrosoft.org> you wrote:
> >
> > > Note that this is not a question of ARM versus other architectures.
> > > On ARM the use of libgcc should be the default like on all other
> > > architectures - only if needed it should be possible to switch on a
> > > don't-use-libgcc mode, but this should then be independent of
> > > architecture, either.
> > which is the case no arch are force to switch the current patch just allow
> > to switch to this mode.
>
> My understanding was that the current patch (1) makes not using
> lingcc the default for ARM, and (2) makes it the default for ARM for
> all too chains.
the current patch do 2 thinks
PATCH 1 allow to switch or not (by default use the toolchains libgcc)
PATCH 2 for ARM only switch and do not use the libgcc anymore
>
> Please show me how to activate the feature from the command line, as
> I seem to have missed this option (and the documentation for it).
>
> > > This is where I disagree. Why should we automatically assume that
> > > there are no sane ARM toolchains?
> > unfortunately most of the arm toolchains are not sane for every point of view
> > as you can not build U-Boot, kernel and userland with the same optimized
> > toolchain most of the time.
>
> But ARM is just one out of many different architectures, and there
> are eventually (sufficently) sane ARM tool chains available, too.
> This is the default case, and shall remain it.
>
> For broken tool chains (ARM or other) the feature can be activated
> (when running make).
Currently on arm you have more unsane toolchains than sane
so I'll prefer to avoid the dual config as it will be safer
I've test recently gcc-4.4.0 and it's the same you still have the problem
you build some of the board but not all of them
here is my status
I've test to MAKEALL arm with the following toolchains on the current U-Boot
ARM tree and different arch for the kernel
I'll avoid the gcc-3.x.x
U-Boot Kernel (without libgcc) Kernel (with libgcc)
gcc-4.1.1 Fail Fail Fail
gcc-4.1.2 Fail OK Fail
gcc-4.2.1 Fail OK Fail
gcc-4.2.4 Fail OK Fail
gcc-4.3.2 Fail OK Fail
gcc-4.4.0 Fail not tested not tested
Fail = mean one or more board fail to build evenif for the kernel there are
reported ok by the autobuild kernel tool
OK = all build (do not count the board report broken for the kernel by the
autobuild kernel tool)
Best Regards,
J.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 19:51 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-12 21:27 ` Wolfgang Denk
0 siblings, 0 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-12 21:27 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe PLAGNIOL-VILLARD,
In message <20090712195107.GC1686@game.jcrosoft.org> you wrote:
>
> > > > On ARM the use of libgcc should be the default like on all other
> > > > architectures - only if needed it should be possible to switch on a
> > > > don't-use-libgcc mode, but this should then be independent of
> > > > architecture, either.
> > > which is the case no arch are force to switch the current patch just allow
> > > to switch to this mode.
> >
> > My understanding was that the current patch (1) makes not using
> > lingcc the default for ARM, and (2) makes it the default for ARM for
> > all too chains.
> the current patch do 2 thinks
> PATCH 1 allow to switch or not (by default use the toolchains libgcc)
The switch will be based on a configuration setting, i. e. you can
change it only by changing the source code. You cannot for example
compile the very same source code (without any changes to U-Boot
source files) one time with and one time without using libgcc.
> PATCH 2 for ARM only switch and do not use the libgcc anymore
So it makes it not only the default, but actually the only supported
setting (assuming you do not change the source code).
Thanks for explaining the implementation to me.
> > > unfortunately most of the arm toolchains are not sane for every point of view
> > > as you can not build U-Boot, kernel and userland with the same optimized
> > > toolchain most of the time.
> >
> > But ARM is just one out of many different architectures, and there
> > are eventually (sufficently) sane ARM tool chains available, too.
> > This is the default case, and shall remain it.
> >
> > For broken tool chains (ARM or other) the feature can be activated
> > (when running make).
> Currently on arm you have more unsane toolchains than sane
Maybe. This does not change any of my arguments.
I have made up my mind. I hereby reject patches 1 and 2 in their
current form.
To have the patches accepted for imainline, use of libgcc should be
the common default setting for all architectures, and switching of
the use of libgcc should be possible for any board and any architec-
ture without having to change any file in the U-Boot source tree.
Thanks.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
No question is too silly to ask. Of course, some questions are too
silly to to answer... - L. Wall & R. L. Schwartz, _Programming Perl_
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 10:29 ` Wolfgang Denk
2009-07-12 12:06 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-13 7:36 ` Stefan Roese
2009-07-13 15:46 ` Dirk Behme
2009-07-13 18:16 ` Mike Frysinger
1 sibling, 2 replies; 69+ messages in thread
From: Stefan Roese @ 2009-07-13 7:36 UTC (permalink / raw)
To: u-boot
Hi Wolfgang,
On Sunday 12 July 2009 12:29:32 Wolfgang Denk wrote:
> > > Any idea why this still happens *with* libgcc patches? Any idea how to
> > > fix this? Add __umoddi3 and __udivdi3 to libgcc patch, too?
> >
> > I have to admit that I'm not sure why this is the case. But I suggest
> > that you take a look at Simon's patch sent to the list a few days ago:
> >
> > [PATCH 5/8]: Use do_div from div64.h for vsprintf
> >
> > This should fix this issue.
>
> It will hush up the current errors, but that's actually a bad thing
> here - the errors are an indication that Jean-Christophe's patch
> might not be working as it is supposed to.
From my point of view those two patches address different issues. I just
noticed that Simon's patch solved some of the current ARM toolchain problems
as well. That's why I referred to it.
So I think that regardless of this ARM libgcc discussion, we should apply
Simons patch "[PATCH 5/8]: Use do_div from div64.h for vsprintf" as it uses
the common do_div() implementation instead of a local version.
Best regards,
Stefan
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-12 18:29 ` Wolfgang Denk
2009-07-12 19:06 ` Dirk Behme
@ 2009-07-13 9:25 ` Mike Frysinger
2009-07-13 16:00 ` Dirk Behme
2009-07-15 22:18 ` Scott Wood
1 sibling, 2 replies; 69+ messages in thread
From: Mike Frysinger @ 2009-07-13 9:25 UTC (permalink / raw)
To: u-boot
On Sunday 12 July 2009 14:29:46 Wolfgang Denk wrote:
> Jean-Christophe PLAGNIOL-VILLARD wrote:
> > > Right. And each of these is supposed to come with it's own version of
> > > libgcc, configured exactly for the requirements of this specific
> > > version and configuration of GCC.
> >
> > the problem is that it's not really possible on arm
> > because you will need a toolchain for u-boot and an other for the
> > userland and in somecase an other for the kernel
>
> You mean it is impossible to build a tool chain for ARM that can be
> used to build U-Boot, Linux, and user space code? I can't believe
> that ARM support in GCC is that seriously broken.
basically, that is correct. arm's libgcc is just that whacky because of all
the different ABIs that exist. although citing the Linux kernel here may not
be appropriate because they specifically avoid libgcc -- because it's so
screwed up.
last i looked, some of the math functions in arm's libgcc depended on C
library functions (like raise() and abort()). this is the kind of stuff Jean
is trying to avoid.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090713/565cb534/attachment.pgp
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-13 7:36 ` Stefan Roese
@ 2009-07-13 15:46 ` Dirk Behme
2009-07-13 18:16 ` Mike Frysinger
1 sibling, 0 replies; 69+ messages in thread
From: Dirk Behme @ 2009-07-13 15:46 UTC (permalink / raw)
To: u-boot
Stefan Roese wrote:
> Hi Wolfgang,
>
> On Sunday 12 July 2009 12:29:32 Wolfgang Denk wrote:
>>>> Any idea why this still happens *with* libgcc patches? Any idea how to
>>>> fix this? Add __umoddi3 and __udivdi3 to libgcc patch, too?
>>> I have to admit that I'm not sure why this is the case. But I suggest
>>> that you take a look at Simon's patch sent to the list a few days ago:
>>>
>>> [PATCH 5/8]: Use do_div from div64.h for vsprintf
>>>
>>> This should fix this issue.
>> It will hush up the current errors, but that's actually a bad thing
>> here - the errors are an indication that Jean-Christophe's patch
>> might not be working as it is supposed to.
>
>>From my point of view those two patches address different issues. I just
> noticed that Simon's patch solved some of the current ARM toolchain problems
> as well. That's why I referred to it.
>
> So I think that regardless of this ARM libgcc discussion, we should apply
> Simons patch "[PATCH 5/8]: Use do_div from div64.h for vsprintf" as it uses
> the common do_div() implementation instead of a local version.
Yes, please.
Thanks,
Dirk
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-13 9:25 ` Mike Frysinger
@ 2009-07-13 16:00 ` Dirk Behme
2009-07-15 22:18 ` Scott Wood
1 sibling, 0 replies; 69+ messages in thread
From: Dirk Behme @ 2009-07-13 16:00 UTC (permalink / raw)
To: u-boot
Mike Frysinger wrote:
> On Sunday 12 July 2009 14:29:46 Wolfgang Denk wrote:
>> Jean-Christophe PLAGNIOL-VILLARD wrote:
>>>> Right. And each of these is supposed to come with it's own version of
>>>> libgcc, configured exactly for the requirements of this specific
>>>> version and configuration of GCC.
>>> the problem is that it's not really possible on arm
>>> because you will need a toolchain for u-boot and an other for the
>>> userland and in somecase an other for the kernel
>> You mean it is impossible to build a tool chain for ARM that can be
>> used to build U-Boot, Linux, and user space code? I can't believe
>> that ARM support in GCC is that seriously broken.
>
> basically, that is correct. arm's libgcc is just that whacky because of all
> the different ABIs that exist. although citing the Linux kernel here may not
> be appropriate because they specifically avoid libgcc -- because it's so
> screwed up.
>
> last i looked, some of the math functions in arm's libgcc depended on C
> library functions (like raise() and abort()). this is the kind of stuff Jean
> is trying to avoid.
Yes, this is my understanding, too.
Conclusion seems to be that we can get this feature/functionality if
it is configurable using the way Wolfgang proposed in
http://lists.denx.de/pipermail/u-boot/2009-July/056185.html
Best regards
Dirk
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-13 7:36 ` Stefan Roese
2009-07-13 15:46 ` Dirk Behme
@ 2009-07-13 18:16 ` Mike Frysinger
1 sibling, 0 replies; 69+ messages in thread
From: Mike Frysinger @ 2009-07-13 18:16 UTC (permalink / raw)
To: u-boot
On Monday 13 July 2009 03:36:39 Stefan Roese wrote:
> On Sunday 12 July 2009 12:29:32 Wolfgang Denk wrote:
> > > > Any idea why this still happens *with* libgcc patches? Any idea how
> > > > to fix this? Add __umoddi3 and __udivdi3 to libgcc patch, too?
> > >
> > > I have to admit that I'm not sure why this is the case. But I suggest
> > > that you take a look at Simon's patch sent to the list a few days ago:
> > >
> > > [PATCH 5/8]: Use do_div from div64.h for vsprintf
> > >
> > > This should fix this issue.
> >
> > It will hush up the current errors, but that's actually a bad thing
> > here - the errors are an indication that Jean-Christophe's patch
> > might not be working as it is supposed to.
>
> From my point of view those two patches address different issues. I just
> noticed that Simon's patch solved some of the current ARM toolchain
> problems as well. That's why I referred to it.
>
> So I think that regardless of this ARM libgcc discussion, we should apply
> Simons patch "[PATCH 5/8]: Use do_div from div64.h for vsprintf" as it uses
> the common do_div() implementation instead of a local version.
correct. doing 64bit math is expensive and should be avoided. this is
another reason the linux kernel includes libgcc -- they dont import many of
the 64bit math functions because it's so expensive and 99% of the time, it's
wrong. when the source uses it, they get link failures right away.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090713/0f3bd181/attachment.pgp
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-13 9:25 ` Mike Frysinger
2009-07-13 16:00 ` Dirk Behme
@ 2009-07-15 22:18 ` Scott Wood
2009-07-15 22:43 ` Mike Frysinger
2009-07-16 11:11 ` Wolfgang Denk
1 sibling, 2 replies; 69+ messages in thread
From: Scott Wood @ 2009-07-15 22:18 UTC (permalink / raw)
To: u-boot
On Mon, Jul 13, 2009 at 05:25:35AM -0400, Mike Frysinger wrote:
> On Sunday 12 July 2009 14:29:46 Wolfgang Denk wrote:
> > You mean it is impossible to build a tool chain for ARM that can be
> > used to build U-Boot, Linux, and user space code? I can't believe
> > that ARM support in GCC is that seriously broken.
>
> basically, that is correct. arm's libgcc is just that whacky because of all
> the different ABIs that exist. although citing the Linux kernel here may not
> be appropriate because they specifically avoid libgcc -- because it's so
> screwed up.
Isn't that what multilib is for?
On a related note, I wish GCC had a "no-float" option that could be used
in place of soft-float. It would be ABI-compatible with either soft or
hard float, because it doesn't use float at all (GCC would raise an error
if you try).
> last i looked, some of the math functions in arm's libgcc depended on C
> library functions (like raise() and abort()). this is the kind of stuff Jean
> is trying to avoid.
It seems pretty reasonable for U-Boot to provide functions like
raise()/abort() that take the place of a hardware exception, and display
an error message.
-Scott
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-15 22:18 ` Scott Wood
@ 2009-07-15 22:43 ` Mike Frysinger
2009-07-15 23:03 ` Scott Wood
2009-07-16 11:11 ` Wolfgang Denk
1 sibling, 1 reply; 69+ messages in thread
From: Mike Frysinger @ 2009-07-15 22:43 UTC (permalink / raw)
To: u-boot
On Wednesday 15 July 2009 18:18:20 Scott Wood wrote:
> On Mon, Jul 13, 2009 at 05:25:35AM -0400, Mike Frysinger wrote:
> > On Sunday 12 July 2009 14:29:46 Wolfgang Denk wrote:
> > > You mean it is impossible to build a tool chain for ARM that can be
> > > used to build U-Boot, Linux, and user space code? I can't believe
> > > that ARM support in GCC is that seriously broken.
> >
> > basically, that is correct. arm's libgcc is just that whacky because of
> > all the different ABIs that exist. although citing the Linux kernel here
> > may not be appropriate because they specifically avoid libgcc -- because
> > it's so screwed up.
>
> Isn't that what multilib is for?
yes, but Jean is attempting to deal with reality of arm toolchains rather than
telling users to go install one that isnt broken
> > last i looked, some of the math functions in arm's libgcc depended on C
> > library functions (like raise() and abort()). this is the kind of stuff
> > Jean is trying to avoid.
>
> It seems pretty reasonable for U-Boot to provide functions like
> raise()/abort() that take the place of a hardware exception, and display
> an error message.
i disagree here. how much of the C library are you proposing we implement ?
if libgcc keeps calling more and more functions, you suggest we keep adding
stubs for it ? seems like a never ending losing battle where we get screwed.
(well, *i'm* not getting screwed because i dont care about u-boot on arm ;])
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090715/7319cfbb/attachment.pgp
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-15 22:43 ` Mike Frysinger
@ 2009-07-15 23:03 ` Scott Wood
2009-07-15 23:54 ` Mike Frysinger
0 siblings, 1 reply; 69+ messages in thread
From: Scott Wood @ 2009-07-15 23:03 UTC (permalink / raw)
To: u-boot
Mike Frysinger wrote:
> On Wednesday 15 July 2009 18:18:20 Scott Wood wrote:
>> It seems pretty reasonable for U-Boot to provide functions like
>> raise()/abort() that take the place of a hardware exception, and display
>> an error message.
>
> i disagree here. how much of the C library are you proposing we implement ?
> if libgcc keeps calling more and more functions,
Has it been?
> you suggest we keep adding stubs for it ? seems like a never ending losing battle where we get screwed.
I don't see any slippery slope here, just a handful of functions that
any reasonable freestanding implementation is going to want (memcpy,
etc) and some way of getting an error out (raise/abort).
If it starts wanting libc functions that aren't reasonable, then of
course we should complain (possibly with patches, for those willing to
deal with the copyright assignment process).
-Scott
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-15 23:03 ` Scott Wood
@ 2009-07-15 23:54 ` Mike Frysinger
2009-07-16 15:36 ` Scott Wood
0 siblings, 1 reply; 69+ messages in thread
From: Mike Frysinger @ 2009-07-15 23:54 UTC (permalink / raw)
To: u-boot
On Wednesday 15 July 2009 19:03:36 Scott Wood wrote:
> Mike Frysinger wrote:
> > On Wednesday 15 July 2009 18:18:20 Scott Wood wrote:
> >> It seems pretty reasonable for U-Boot to provide functions like
> >> raise()/abort() that take the place of a hardware exception, and display
> >> an error message.
> >
> > i disagree here. how much of the C library are you proposing we
> > implement ? if libgcc keeps calling more and more functions,
>
> Has it been?
>
> > you suggest we keep adding stubs for it ? seems like a never ending
> > losing battle where we get screwed.
>
> I don't see any slippery slope here, just a handful of functions that
> any reasonable freestanding implementation is going to want (memcpy,
> etc) and some way of getting an error out (raise/abort).
>
> If it starts wanting libc functions that aren't reasonable, then of
> course we should complain (possibly with patches, for those willing to
> deal with the copyright assignment process).
i think calling raise/abort is already unreasonable for bare metal
applications.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090715/77ce2643/attachment.pgp
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-15 22:18 ` Scott Wood
2009-07-15 22:43 ` Mike Frysinger
@ 2009-07-16 11:11 ` Wolfgang Denk
1 sibling, 0 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-16 11:11 UTC (permalink / raw)
To: u-boot
Dear Scott Wood,
In message <20090715221820.GA16203@b07421-ec1.am.freescale.net> you wrote:
> On Mon, Jul 13, 2009 at 05:25:35AM -0400, Mike Frysinger wrote:
...
> > basically, that is correct. arm's libgcc is just that whacky because of all
> > the different ABIs that exist. although citing the Linux kernel here may not
> > be appropriate because they specifically avoid libgcc -- because it's so
> > screwed up.
I'm continually amazed to see again and again many otherwise clever
software developers investing efforts to solve the same problems again
and again locally in separate projects, instead of fixing them once at
the central point where the problem actually lies.
So instead of fixing the "screwed up" libgcc code for ARM such thatit
can be used for applications _and_ Linux kernel _and_ U-Boot and other
projects, we re-invent and copy and improve the code locally in each
project (and I cannot tell what would surprise me more - to hear that
the libgcc maintainers are not involved, or that they are).
Instead of adding a new feature to "make" once, Linux and several
other projects add complicated Makefile rules to produce "hort" output
like
CC fs/inode.o
CALL arch/powerpc/kernel/prom_init_check.sh
AS arch/powerpc/kernel/head_32.o
LDS arch/powerpc/kernel/vmlinux.lds
I always though softwre engineering was about _not_ re-inventing the
wheel again and again and again... :-(
> Isn't that what multilib is for?
hm... wrong forum to ask, I guess...
> On a related note, I wish GCC had a "no-float" option that could be used
> in place of soft-float. It would be ABI-compatible with either soft or
> hard float, because it doesn't use float at all (GCC would raise an error
> if you try).
You should ask this on a GCC related list, or submit a proposal to the
GCC stearing committee.
> It seems pretty reasonable for U-Boot to provide functions like
> raise()/abort() that take the place of a hardware exception, and display
> an error message.
This does not sound reasonable to me.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
In any group of employed individuals the only naturally early riser
is _always_ the office manager, who will _always_ leave reproachful
little notes ... on the desks of their subordinates.
- Terry Pratchett, _Lords and Ladies_
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-15 23:54 ` Mike Frysinger
@ 2009-07-16 15:36 ` Scott Wood
2009-07-16 15:42 ` Wolfgang Denk
0 siblings, 1 reply; 69+ messages in thread
From: Scott Wood @ 2009-07-16 15:36 UTC (permalink / raw)
To: u-boot
Mike Frysinger wrote:
> i think calling raise/abort is already unreasonable for bare metal
> applications.
So how do you propose that illegal divide operations be reported to the
application?
What is so unreasonable about having a function to print a message and
dump registers?
You could even make it a weak symbol that stays at NULL, so any attempt
to call it will trap that way (assuming NULL pointers are trapped in
U-Boot on that architecture...).
-Scott
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-16 15:36 ` Scott Wood
@ 2009-07-16 15:42 ` Wolfgang Denk
2009-07-16 15:56 ` Scott Wood
0 siblings, 1 reply; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-16 15:42 UTC (permalink / raw)
To: u-boot
Dear Scott Wood,
In message <4A5F4913.5030808@freescale.com> you wrote:
>
> So how do you propose that illegal divide operations be reported to the
> application?
In the same way as Linux is doing it (i. e. usually nothing at all) ?
> What is so unreasonable about having a function to print a message and
> dump registers?
We didn't need one for the so far. What exactly do we need it for now?
> You could even make it a weak symbol that stays at NULL, so any attempt
> to call it will trap that way (assuming NULL pointers are trapped in
> U-Boot on that architecture...).
As you know, they are not.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The shortest unit of time in the multiverse is the News York Second,
defined as the period of time between the traffic lights turning
green and the cab behind you honking.
- Terry Pratchett, _Lords and Ladies_
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-16 15:42 ` Wolfgang Denk
@ 2009-07-16 15:56 ` Scott Wood
2009-07-17 11:27 ` Detlev Zundel
0 siblings, 1 reply; 69+ messages in thread
From: Scott Wood @ 2009-07-16 15:56 UTC (permalink / raw)
To: u-boot
On Thu, Jul 16, 2009 at 05:42:27PM +0200, Wolfgang Denk wrote:
> Dear Scott Wood,
>
> In message <4A5F4913.5030808@freescale.com> you wrote:
> >
> > So how do you propose that illegal divide operations be reported to the
> > application?
>
> In the same way as Linux is doing it (i. e. usually nothing at all) ?
Yay bugs.
> > What is so unreasonable about having a function to print a message and
> > dump registers?
>
> We didn't need one for the so far. What exactly do we need it for now?
For the same reason we have cpu/*/traps.c.
> > You could even make it a weak symbol that stays at NULL, so any attempt
> > to call it will trap that way (assuming NULL pointers are trapped in
> > U-Boot on that architecture...).
>
> As you know, they are not.
If you're happy with not making it debuggable, then there's no need to
trap on the NULL -- just make sure it never happens. :-)
I'd much rather spend the handful of bytes on at least a
__builtin_trap(), though.
Or do compiler implementation specific things such as reimplementing
libgcc functions or carefully avoiding generating calls to them, if you
prefer. Whatever.
-Scott
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-16 15:56 ` Scott Wood
@ 2009-07-17 11:27 ` Detlev Zundel
2009-07-17 11:37 ` Wolfgang Denk
0 siblings, 1 reply; 69+ messages in thread
From: Detlev Zundel @ 2009-07-17 11:27 UTC (permalink / raw)
To: u-boot
Hi Scott,
>> > You could even make it a weak symbol that stays at NULL, so any attempt
>> > to call it will trap that way (assuming NULL pointers are trapped in
>> > U-Boot on that architecture...).
>>
>> As you know, they are not.
>
> If you're happy with not making it debuggable, then there's no need to
> trap on the NULL -- just make sure it never happens. :-)
>
> I'd much rather spend the handful of bytes on at least a
> __builtin_trap(), though.
I also think that making our lifes easier is a very good thing. Our
"it's only a bootloader" codebase is pretty complex already so I welcome
making it more robust. I was kind of surprised the other day that
null-pointer jumps(*) did not result in immediate "bad programmer, no
cookie this time" messages but in random crashes.
Cheers
Detlev
(*) well, actually they were jumps to _relocated_ NULL pointers, but
still ;)
--
I will use free software even if it is less powerful, or less reliable,
because freedom is the most important thing, and that is what the Free
Software movement is about. How we get freedom.
-- Richard M. Stallman
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-17 11:27 ` Detlev Zundel
@ 2009-07-17 11:37 ` Wolfgang Denk
2009-07-17 11:41 ` Wolfgang Denk
2009-07-17 15:24 ` Scott Wood
0 siblings, 2 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-17 11:37 UTC (permalink / raw)
To: u-boot
Dear Detlev Zundel,
In message <m2r5wfzh0l.fsf@ohwell.denx.de> you wrote:
>
> I also think that making our lifes easier is a very good thing. Our
> "it's only a bootloader" codebase is pretty complex already so I welcome
> making it more robust. I was kind of surprised the other day that
> null-pointer jumps(*) did not result in immediate "bad programmer, no
> cookie this time" messages but in random crashes.
Well, what do you suggest? remember for example that booting a Linux
kernel means jumping to it's entry point address - which happens to
be 0 - or is this NULL ? How do you detemine the difference?
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Vulcans do not approve of violence.
-- Spock, "Journey to Babel", stardate 3842.4
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-17 11:37 ` Wolfgang Denk
@ 2009-07-17 11:41 ` Wolfgang Denk
2009-07-17 15:24 ` Scott Wood
1 sibling, 0 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-17 11:41 UTC (permalink / raw)
To: u-boot
Dear Detlev,
In message <20090717113714.4BF10832E416@gemini.denx.de> I wrote:
>
> Well, what do you suggest? remember for example that booting a Linux
> kernel means jumping to it's entry point address - which happens to
> be 0 - or is this NULL ? How do you detemine the difference?
... at least on PowerPC the EPA is 0.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
We are all agreed that your theory is crazy. The question which
divides us is whether it is crazy enough to have a chance of being
correct. My own feeling is that it is not crazy enough. - Niels Bohr
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-17 11:37 ` Wolfgang Denk
2009-07-17 11:41 ` Wolfgang Denk
@ 2009-07-17 15:24 ` Scott Wood
1 sibling, 0 replies; 69+ messages in thread
From: Scott Wood @ 2009-07-17 15:24 UTC (permalink / raw)
To: u-boot
On Fri, Jul 17, 2009 at 01:37:14PM +0200, Wolfgang Denk wrote:
> Dear Detlev Zundel,
>
> In message <m2r5wfzh0l.fsf@ohwell.denx.de> you wrote:
> >
> > I also think that making our lifes easier is a very good thing. Our
> > "it's only a bootloader" codebase is pretty complex already so I welcome
> > making it more robust. I was kind of surprised the other day that
> > null-pointer jumps(*) did not result in immediate "bad programmer, no
> > cookie this time" messages but in random crashes.
>
> Well, what do you suggest? remember for example that booting a Linux
> kernel means jumping to it's entry point address - which happens to
> be 0 - or is this NULL ? How do you detemine the difference?
The MMU configuration that the OS wants on entry does not necessarily
have to be the same one that the majority of U-Boot code runs with.
-Scott
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 2/2] netstar/voiceblue: remove no-need libgcc link for eeprom standalone
2009-07-08 20:38 ` [U-Boot] [PATCH 2/2] netstar/voiceblue: remove no-need libgcc link for eeprom standalone Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-20 22:03 ` Wolfgang Denk
0 siblings, 0 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-20 22:03 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe PLAGNIOL-VILLARD,
In message <1247085496-21754-2-git-send-email-plagnioj@jcrosoft.com> you wrote:
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> ---
> board/netstar/Makefile | 3 +--
> board/voiceblue/Makefile | 3 +--
> 2 files changed, 2 insertions(+), 4 deletions(-)
Sorry, patch does not apply:
Applying: netstar/voiceblue: netstar/voiceblue: remove no-need libgcc link for eeprom standalone
error: patch failed: board/netstar/Makefile:52
error: board/netstar/Makefile: patch does not apply
error: patch failed: board/voiceblue/Makefile:46
error: board/voiceblue/Makefile: patch does not apply
fatal: sha1 information is lacking or useless (board/netstar/Makefile).
Repository lacks necessary blobs to fall back on 3-way merge.
Cannot fall back to three-way merge.
Patch failed at 0001.
Please clean up (and when doing so, please change the subject into
"don't link unneeded libgcc for eeprom standalone") and resubmit.
Thanks.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Text processing has made it possible to right-justify any idea, even
one which cannot be justified on any other grounds."
-- J. Finnegan, USC.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file
2009-07-09 10:24 ` [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 7:54 ` Dirk Behme
@ 2009-07-23 9:36 ` Wolfgang Denk
2009-07-23 11:09 ` [U-Boot] [PATCH] Make linking against libgcc configurable Wolfgang Denk
1 sibling, 1 reply; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-23 9:36 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe PLAGNIOL-VILLARD,
In message <1247135043-3494-1-git-send-email-plagnioj@jcrosoft.com> you wrote:
> This patch allows to override the libgcc Makefile inclusion from the toplevel
> Makefile by the arch config.mk files. This is in preparation for the ARM
> architecture to move away from including libgcc functions and only using
> self-contained U-Boot functions as done in Linux.
>
> Currently all the ARM boards that use NAND are broken due to the addition of
> 64 Bit device size support. In the past we have seen similar problems with
> different tool chains due to EABI and FPU for example.
>
> With this patch and this one: "ARM: Don't include libgcc anymore" we move away
> from all these problems on ARM since we don't include any functions from
> libgcc anymore.
>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> Acked-by: Mike Frysinger <vapier@gentoo.org>
As discussed before, I rejected this patch because it seems wrong to
me 1) to assume that all ARM tool chains have a broken/unusable
implementation of the libgcc runtime support library, 2) I don't want
to make a workaround for a broken tool chain the default setting, and
3) we should not restrict this to the ARM architecture but allow the
same for other architectures as well.
I suggested another approach in
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/63156/focus=63550
but no one commented on this.
As there are some people suffereing from the current situation and no
progress has been visible for some time, I wll soon post a patch that
implements my proposal.
Hope this allows to bring this topic to an end.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
But it's real. And if it's real it can be affected ... we may not be
able to break it, but, I'll bet you credits to Navy Beans we can put
a dent in it.
-- deSalle, "Catspaw", stardate 3018.2
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH] Make linking against libgcc configurable
2009-07-23 9:36 ` Wolfgang Denk
@ 2009-07-23 11:09 ` Wolfgang Denk
2009-07-23 11:15 ` [U-Boot] [PATCH v2] " Wolfgang Denk
0 siblings, 1 reply; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-23 11:09 UTC (permalink / raw)
To: u-boot
Many (especially ARM) tool chains seem to come with broken or
otherwise unusable (for the purposes of builing U-Boot) run-time
support libraries `libgcc.a'. By using the "USE_PRIVATE_LIBGCC"
setting we allow to use alternative libraries instead.
"USE_PRIVATE_LIBGCC" can either be set as an environment variable in
the shell, or as a command line argument when running "make", i. e.
$ make USE_PRIVATE_LIBGCC=yes
or
$ USE_PRIVATE_LIBGCC=yes
$ export USE_PRIVATE_LIBGCC
$ make
The value of "USE_PRIVATE_LIBGCC" is the name of the directory which
contains the alternative run-time support library `libgcc.a'. The
special value "yes" selects the directory $(OBJTREE)/lib_$(ARCH) .
Note that not all architectures provide an alternative `libgcc.a' in
their lib_$(ARCH) directories - so far, only ARM does.
Signed-off-by: Wolfgang Denk <wd@denx.de>
Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Prafulla Wadaskar <prafulla@marvell.com>
cc: Stefan Roese <sr@denx.de>
---
Makefile | 12 +++++++++++-
board/trab/Makefile | 4 +---
lib_arm/Makefile | 31 +++++++++++++++++++++++--------
3 files changed, 35 insertions(+), 12 deletions(-)
diff --git a/Makefile b/Makefile
index 25a6254..7c99ac2 100644
--- a/Makefile
+++ b/Makefile
@@ -247,7 +247,17 @@ LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
# Add GCC lib
-PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+ifdef USE_PRIVATE_LIBGCC
+ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
+PLATFORM_LIBGCC = -L $(OBJTREE)/lib_$(ARCH) -lgcc
+else
+PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
+endif
+else
+PLATFORM_LIBGCC = -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+endif
+PLATFORM_LIBS += $(PLATFORM_LIBGCC)
+export PLATFORM_LIBS
ifeq ($(CONFIG_NAND_U_BOOT),y)
NAND_SPL = nand_spl
diff --git a/board/trab/Makefile b/board/trab/Makefile
index 3a92c0d..2afad88 100644
--- a/board/trab/Makefile
+++ b/board/trab/Makefile
@@ -36,8 +36,6 @@ SOBJS := $(addprefix $(obj),$(SOBJS))
OBJS_FKT := $(addprefix $(obj),$(COBJS_FKT))
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
LOAD_ADDR = 0xc100000
#########################################################################
@@ -52,7 +50,7 @@ $(obj)trab_fkt.srec: $(OBJS_FKT) $(LIB)
-L$(obj)../../examples/standalone -lstubs \
-L$(obj)../../lib_generic -lgeneric \
$(obj)../../lib_arm/div0.o \
- $(obj)../../lib_arm/_*.o
+ $(PLATFORM_LIBS)
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)trab_fkt.bin: $(obj)trab_fkt.srec
diff --git a/lib_arm/Makefile b/lib_arm/Makefile
index 4469361..30922a6 100644
--- a/lib_arm/Makefile
+++ b/lib_arm/Makefile
@@ -24,13 +24,17 @@
include $(TOPDIR)/config.mk
LIB = $(obj)lib$(ARCH).a
+LIBGCC = $(obj)libgcc.a
-SOBJS-y += _ashldi3.o
-SOBJS-y += _ashrdi3.o
-SOBJS-y += _divsi3.o
-SOBJS-y += _modsi3.o
-SOBJS-y += _udivsi3.o
-SOBJS-y += _umodsi3.o
+GLSOBJS += _ashldi3.o
+GLSOBJS += _ashrdi3.o
+GLSOBJS += _lshrdi3.o
+GLSOBJS += _divsi3.o
+GLSOBJS += _modsi3.o
+GLSOBJS += _udivsi3.o
+GLSOBJS += _umodsi3.o
+
+GLCOBJS += div0.o
COBJS-y += board.o
COBJS-y += bootm.o
@@ -38,16 +42,27 @@ COBJS-y += cache.o
ifndef CONFIG_SYS_NO_CP15_CACHE
COBJS-y += cache-cp15.o
endif
-COBJS-y += div0.o
COBJS-y += interrupts.o
COBJS-y += reset.o
-SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
+SRCS := $(GLSOBJS:.o=.S) $(GLCOBJS:.o=.c) \
+ $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
OBJS := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
+LGOBJS := $(addprefix $(obj),$(GLSOBJS)) \
+ $(addprefix $(obj),$(GLCOBJS))
+
+ifdef USE_PRIVATE_LIBGCC
+all: $(LIB) $(LIBGCC)
+else
+all: $(LIB)
+endif
$(LIB): $(obj).depend $(OBJS)
$(AR) $(ARFLAGS) $@ $(OBJS)
+$(LIBGCC): $(obj).depend $(LGOBJS)
+ $(AR) $(ARFLAGS) $@ $(LGOBJS)
+
#########################################################################
# defines $(obj).depend target
--
1.6.0.6
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v2] Make linking against libgcc configurable
2009-07-23 11:09 ` [U-Boot] [PATCH] Make linking against libgcc configurable Wolfgang Denk
@ 2009-07-23 11:15 ` Wolfgang Denk
2009-07-23 11:27 ` [U-Boot] [PATCH] arm: add _lshrdi3.S Heiko Schocher
` (2 more replies)
0 siblings, 3 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-23 11:15 UTC (permalink / raw)
To: u-boot
Many (especially ARM) tool chains seem to come with broken or
otherwise unusable (for the purposes of builing U-Boot) run-time
support libraries `libgcc.a'. By using the "USE_PRIVATE_LIBGCC"
setting we allow to use alternative libraries instead.
"USE_PRIVATE_LIBGCC" can either be set as an environment variable in
the shell, or as a command line argument when running "make", i. e.
$ make USE_PRIVATE_LIBGCC=yes
or
$ USE_PRIVATE_LIBGCC=yes
$ export USE_PRIVATE_LIBGCC
$ make
The value of "USE_PRIVATE_LIBGCC" is the name of the directory which
contains the alternative run-time support library `libgcc.a'. The
special value "yes" selects the directory $(OBJTREE)/lib_$(ARCH) .
Note that not all architectures provide an alternative `libgcc.a' in
their lib_$(ARCH) directories - so far, only ARM does.
Signed-off-by: Wolfgang Denk <wd@denx.de>
Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Prafulla Wadaskar <prafulla@marvell.com>
cc: Stefan Roese <sr@denx.de>
---
v2: Removed crap left over from testing.
Makefile | 12 +++++++++++-
board/trab/Makefile | 4 +---
lib_arm/Makefile | 30 ++++++++++++++++++++++--------
3 files changed, 34 insertions(+), 12 deletions(-)
diff --git a/Makefile b/Makefile
index 25a6254..7c99ac2 100644
--- a/Makefile
+++ b/Makefile
@@ -247,7 +247,17 @@ LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
# Add GCC lib
-PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+ifdef USE_PRIVATE_LIBGCC
+ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
+PLATFORM_LIBGCC = -L $(OBJTREE)/lib_$(ARCH) -lgcc
+else
+PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
+endif
+else
+PLATFORM_LIBGCC = -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+endif
+PLATFORM_LIBS += $(PLATFORM_LIBGCC)
+export PLATFORM_LIBS
ifeq ($(CONFIG_NAND_U_BOOT),y)
NAND_SPL = nand_spl
diff --git a/board/trab/Makefile b/board/trab/Makefile
index 3a92c0d..2afad88 100644
--- a/board/trab/Makefile
+++ b/board/trab/Makefile
@@ -36,8 +36,6 @@ SOBJS := $(addprefix $(obj),$(SOBJS))
OBJS_FKT := $(addprefix $(obj),$(COBJS_FKT))
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
LOAD_ADDR = 0xc100000
#########################################################################
@@ -52,7 +50,7 @@ $(obj)trab_fkt.srec: $(OBJS_FKT) $(LIB)
-L$(obj)../../examples/standalone -lstubs \
-L$(obj)../../lib_generic -lgeneric \
$(obj)../../lib_arm/div0.o \
- $(obj)../../lib_arm/_*.o
+ $(PLATFORM_LIBS)
$(OBJCOPY) -O srec $(<:.o=) $@
$(obj)trab_fkt.bin: $(obj)trab_fkt.srec
diff --git a/lib_arm/Makefile b/lib_arm/Makefile
index 4469361..241782c 100644
--- a/lib_arm/Makefile
+++ b/lib_arm/Makefile
@@ -24,13 +24,16 @@
include $(TOPDIR)/config.mk
LIB = $(obj)lib$(ARCH).a
+LIBGCC = $(obj)libgcc.a
-SOBJS-y += _ashldi3.o
-SOBJS-y += _ashrdi3.o
-SOBJS-y += _divsi3.o
-SOBJS-y += _modsi3.o
-SOBJS-y += _udivsi3.o
-SOBJS-y += _umodsi3.o
+GLSOBJS += _ashldi3.o
+GLSOBJS += _ashrdi3.o
+GLSOBJS += _divsi3.o
+GLSOBJS += _modsi3.o
+GLSOBJS += _udivsi3.o
+GLSOBJS += _umodsi3.o
+
+GLCOBJS += div0.o
COBJS-y += board.o
COBJS-y += bootm.o
@@ -38,16 +41,27 @@ COBJS-y += cache.o
ifndef CONFIG_SYS_NO_CP15_CACHE
COBJS-y += cache-cp15.o
endif
-COBJS-y += div0.o
COBJS-y += interrupts.o
COBJS-y += reset.o
-SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
+SRCS := $(GLSOBJS:.o=.S) $(GLCOBJS:.o=.c) \
+ $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
OBJS := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
+LGOBJS := $(addprefix $(obj),$(GLSOBJS)) \
+ $(addprefix $(obj),$(GLCOBJS))
+
+ifdef USE_PRIVATE_LIBGCC
+all: $(LIB) $(LIBGCC)
+else
+all: $(LIB)
+endif
$(LIB): $(obj).depend $(OBJS)
$(AR) $(ARFLAGS) $@ $(OBJS)
+$(LIBGCC): $(obj).depend $(LGOBJS)
+ $(AR) $(ARFLAGS) $@ $(LGOBJS)
+
#########################################################################
# defines $(obj).depend target
--
1.6.0.6
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH] arm: add _lshrdi3.S
2009-07-23 11:15 ` [U-Boot] [PATCH v2] " Wolfgang Denk
@ 2009-07-23 11:27 ` Heiko Schocher
2009-07-23 11:41 ` Wolfgang Denk
2009-07-26 22:11 ` Wolfgang Denk
2009-07-23 13:28 ` [U-Boot] [PATCH v2] Make linking against libgcc configurable Daniel Gorsulowski
2009-07-26 22:11 ` Wolfgang Denk
2 siblings, 2 replies; 69+ messages in thread
From: Heiko Schocher @ 2009-07-23 11:27 UTC (permalink / raw)
To: u-boot
Signed-off-by: Heiko Schocher <hs@denx.de>
---
lib_arm/Makefile | 1 +
lib_arm/_lshrdi3.S | 46 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 0 deletions(-)
create mode 100644 lib_arm/_lshrdi3.S
diff --git a/lib_arm/Makefile b/lib_arm/Makefile
index 241782c..c37e2e0 100644
--- a/lib_arm/Makefile
+++ b/lib_arm/Makefile
@@ -29,6 +29,7 @@ LIBGCC = $(obj)libgcc.a
GLSOBJS += _ashldi3.o
GLSOBJS += _ashrdi3.o
GLSOBJS += _divsi3.o
+GLSOBJS += _lshrdi3.o
GLSOBJS += _modsi3.o
GLSOBJS += _udivsi3.o
GLSOBJS += _umodsi3.o
diff --git a/lib_arm/_lshrdi3.S b/lib_arm/_lshrdi3.S
new file mode 100644
index 0000000..fabfd9f
--- /dev/null
+++ b/lib_arm/_lshrdi3.S
@@ -0,0 +1,46 @@
+/* Copyright 1995, 1996, 1998, 1999, 2000, 2003, 2004, 2005
+ Free Software Foundation, Inc.
+
+This file 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, or (at your option) any
+later version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file. (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+This file 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; see the file COPYING. If not, write to
+the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
+
+
+#ifdef __ARMEB__
+#define al r1
+#define ah r0
+#else
+#define al r0
+#define ah r1
+#endif
+
+.globl __lshrdi3
+__lshrdi3:
+
+ subs r3, r2, #32
+ rsb ip, r2, #32
+ movmi al, al, lsr r2
+ movpl al, ah, lsr r3
+ orrmi al, al, ah, lsl ip
+ mov ah, ah, lsr r2
+ mov pc, lr
--
1.6.0.6
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH] arm: add _lshrdi3.S
2009-07-23 11:27 ` [U-Boot] [PATCH] arm: add _lshrdi3.S Heiko Schocher
@ 2009-07-23 11:41 ` Wolfgang Denk
2009-07-23 12:16 ` Heiko Schocher
2009-07-26 22:11 ` Wolfgang Denk
1 sibling, 1 reply; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-23 11:41 UTC (permalink / raw)
To: u-boot
Dear Heiko Schocher,
In message <4A684908.8070402@invitel.hu> you wrote:
> Signed-off-by: Heiko Schocher <hs@denx.de>
> ---
> lib_arm/Makefile | 1 +
> lib_arm/_lshrdi3.S | 46 ++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 47 insertions(+), 0 deletions(-)
> create mode 100644 lib_arm/_lshrdi3.S
Why should we add this? Where it is needed?
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The nice thing about standards is that there are so many to choose
from. - Andrew S. Tanenbaum
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH] arm: add _lshrdi3.S
2009-07-23 11:41 ` Wolfgang Denk
@ 2009-07-23 12:16 ` Heiko Schocher
0 siblings, 0 replies; 69+ messages in thread
From: Heiko Schocher @ 2009-07-23 12:16 UTC (permalink / raw)
To: u-boot
Hello Wolfgang,
Wolfgang Denk wrote:
> In message <4A684908.8070402@invitel.hu> you wrote:
>> Signed-off-by: Heiko Schocher <hs@denx.de>
>> ---
>> lib_arm/Makefile | 1 +
>> lib_arm/_lshrdi3.S | 46 ++++++++++++++++++++++++++++++++++++++++++++++
>> 2 files changed, 47 insertions(+), 0 deletions(-)
>> create mode 100644 lib_arm/_lshrdi3.S
>
> Why should we add this? Where it is needed?
This is needed for the upcoming suen3 support.
Maybe I sould have written this in the commit
message?
This board uses NAND, and if I compile it, I get this
errors:
[hs at pollux u-boot]$ make mrproper
[hs at pollux u-boot]$ make suen3_config
Configuring for suen3 board...
[hs at pollux u-boot]$ make USE_PRIVATE_LIBGCC=yes -s all
drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_do_write_oob':
/home/hs/keymile/suen3/u-boot/drivers/mtd/nand/nand_base.c:2019: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_erase_nand':
/home/hs/keymile/suen3/u-boot/drivers/mtd/nand/nand_base.c:2199: undefined reference to `__lshrdi3'
/home/hs/keymile/suen3/u-boot/drivers/mtd/nand/nand_base.c:2198: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_do_read_oob':
/home/hs/keymile/suen3/u-boot/drivers/mtd/nand/nand_base.c:1519: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_bbt.o): In function `search_bbt':
/home/hs/keymile/suen3/u-boot/drivers/mtd/nand/nand_bbt.c:482: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_bbt.o):/home/hs/keymile/suen3/u-boot/drivers/mtd/nand/nand_bbt.c:413: more undefined references to `__lshrdi3' follow
make: *** [u-boot] Fehler 1
[hs at pollux u-boot]$
above patch fixes this. And I thought better to post such
a fix immediately ...
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v2] Make linking against libgcc configurable
2009-07-23 11:15 ` [U-Boot] [PATCH v2] " Wolfgang Denk
2009-07-23 11:27 ` [U-Boot] [PATCH] arm: add _lshrdi3.S Heiko Schocher
@ 2009-07-23 13:28 ` Daniel Gorsulowski
2009-07-23 14:12 ` Heiko Schocher
2009-07-23 16:45 ` Wolfgang Denk
2009-07-26 22:11 ` Wolfgang Denk
2 siblings, 2 replies; 69+ messages in thread
From: Daniel Gorsulowski @ 2009-07-23 13:28 UTC (permalink / raw)
To: u-boot
Hi Wolfgang,
buid on meesc board (arm) is still broken.
It's roughly the same problem, as Heiko Schocher reported in
4A6854B1.5000205 at denx.de. But his patch doesn't fix the problem either.
danielg at debby:~/git/u-boot$ make USE_PRIVATE_LIBGCC=yes
...
drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_do_write_oob':
/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2019: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_erase_nand':
/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2199: undefined reference to `__lshrdi3'
/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2198: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_do_read_oob':
/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:1519: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_bbt.o): In function `search_bbt':
/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_bbt.c:482: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_bbt.o):/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_bbt.c:413: more undefined references to `__lshrdi3' follow
lib_generic/libgeneric.a(vsprintf.o): In function `put_dec':
/data/home/danielg/git/u-boot/lib_generic/vsprintf.c:242: undefined reference to `__umoddi3'
/data/home/danielg/git/u-boot/lib_generic/vsprintf.c:242: undefined reference to `__udivdi3'
lib_generic/libgeneric.a(vsprintf.o): In function `number':
/data/home/danielg/git/u-boot/lib_generic/vsprintf.c:306: undefined reference to `__lshrdi3'
make: *** [u-boot] Error 1
Best regards, Daniel
Wolfgang Denk wrote:
> Many (especially ARM) tool chains seem to come with broken or
> otherwise unusable (for the purposes of builing U-Boot) run-time
> support libraries `libgcc.a'. By using the "USE_PRIVATE_LIBGCC"
> setting we allow to use alternative libraries instead.
>
> "USE_PRIVATE_LIBGCC" can either be set as an environment variable in
> the shell, or as a command line argument when running "make", i. e.
> $ make USE_PRIVATE_LIBGCC=yes
> or
> $ USE_PRIVATE_LIBGCC=yes
> $ export USE_PRIVATE_LIBGCC
> $ make
>
> The value of "USE_PRIVATE_LIBGCC" is the name of the directory which
> contains the alternative run-time support library `libgcc.a'. The
> special value "yes" selects the directory $(OBJTREE)/lib_$(ARCH) .
>
> Note that not all architectures provide an alternative `libgcc.a' in
> their lib_$(ARCH) directories - so far, only ARM does.
>
> Signed-off-by: Wolfgang Denk <wd@denx.de>
...
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v2] Make linking against libgcc configurable
2009-07-23 13:28 ` [U-Boot] [PATCH v2] Make linking against libgcc configurable Daniel Gorsulowski
@ 2009-07-23 14:12 ` Heiko Schocher
2009-07-23 14:43 ` Daniel Gorsulowski
2009-07-23 16:45 ` Wolfgang Denk
1 sibling, 1 reply; 69+ messages in thread
From: Heiko Schocher @ 2009-07-23 14:12 UTC (permalink / raw)
To: u-boot
Hello Daniel,
Daniel Gorsulowski wrote:
> buid on meesc board (arm) is still broken.
> It's roughly the same problem, as Heiko Schocher reported in
> 4A6854B1.5000205 at denx.de. But his patch doesn't fix the problem either.
>
> danielg at debby:~/git/u-boot$ make USE_PRIVATE_LIBGCC=yes
> ...
> drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_do_write_oob':
> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2019: undefined reference to `__lshrdi3'
> drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_erase_nand':
> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2199: undefined reference to `__lshrdi3'
> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2198: undefined reference to `__lshrdi3'
> drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_do_read_oob':
> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:1519: undefined reference to `__lshrdi3'
> drivers/mtd/nand/libnand.a(nand_bbt.o): In function `search_bbt':
> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_bbt.c:482: undefined reference to `__lshrdi3'
> drivers/mtd/nand/libnand.a(nand_bbt.o):/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_bbt.c:413: more undefined references to `__lshrdi3' follow
> lib_generic/libgeneric.a(vsprintf.o): In function `put_dec':
> /data/home/danielg/git/u-boot/lib_generic/vsprintf.c:242: undefined reference to `__umoddi3'
> /data/home/danielg/git/u-boot/lib_generic/vsprintf.c:242: undefined reference to `__udivdi3'
Maybe you need also this fix from Dirk Behme
http://lists.denx.de/pipermail/u-boot/2009-July/057265.html
I see on this Hardware is CONFIG_SYS_64BIT_VSPRINTF activated ... so
I think, the above patch will fix this. Can you give this a try?
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v2] Make linking against libgcc configurable
2009-07-23 14:12 ` Heiko Schocher
@ 2009-07-23 14:43 ` Daniel Gorsulowski
2009-07-23 14:48 ` Daniel Gorsulowski
0 siblings, 1 reply; 69+ messages in thread
From: Daniel Gorsulowski @ 2009-07-23 14:43 UTC (permalink / raw)
To: u-boot
Hello Heiko,
Dirks patch reduces the errors, but I still get:
drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_do_write_oob':
/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2019: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_erase_nand':
/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2199: undefined reference to `__lshrdi3'
/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2198: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_do_read_oob':
/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:1519: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_bbt.o): In function `search_bbt':
/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_bbt.c:482: undefined reference to `__lshrdi3'
drivers/mtd/nand/libnand.a(nand_bbt.o):/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_bbt.c:413: more undefined references to `__lshrdi3' follow
make: *** [u-boot] Error 1
I noticed, that lib_arm/_lshrdi3.a is not beeing compiled.
So i added 'GLSOBJS += _lshrdi3.S' to lib_arm/Makefile (this line is missing
in your patch, i guess). But _lshrdi3.a still does not compile.
So I took a look at lib_arm/.depend:
_ashldi3.o: _ashldi3.S
_ashrdi3.o: _ashrdi3.S
_divsi3.o: _divsi3.S
_lshrdi3.o: _lshrdi3.S
_modsi3.o: _modsi3.S
_udivsi3.o: _udivsi3.S
_umodsi3.o: _umodsi3.S
I have no explanation for that, do you have?
bye, Daniel
Heiko Schocher wrote:
> Hello Daniel,
>
> Daniel Gorsulowski wrote:
>> buid on meesc board (arm) is still broken.
>> It's roughly the same problem, as Heiko Schocher reported in
>> 4A6854B1.5000205 at denx.de. But his patch doesn't fix the problem either.
>>
>> danielg at debby:~/git/u-boot$ make USE_PRIVATE_LIBGCC=yes
>> ...
>> drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_do_write_oob':
>> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2019: undefined reference to `__lshrdi3'
>> drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_erase_nand':
>> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2199: undefined reference to `__lshrdi3'
>> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2198: undefined reference to `__lshrdi3'
>> drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_do_read_oob':
>> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:1519: undefined reference to `__lshrdi3'
>> drivers/mtd/nand/libnand.a(nand_bbt.o): In function `search_bbt':
>> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_bbt.c:482: undefined reference to `__lshrdi3'
>> drivers/mtd/nand/libnand.a(nand_bbt.o):/data/home/danielg/git/u-boot/drivers/mtd/nand/nand_bbt.c:413: more undefined references to `__lshrdi3' follow
>> lib_generic/libgeneric.a(vsprintf.o): In function `put_dec':
>> /data/home/danielg/git/u-boot/lib_generic/vsprintf.c:242: undefined reference to `__umoddi3'
>> /data/home/danielg/git/u-boot/lib_generic/vsprintf.c:242: undefined reference to `__udivdi3'
>
> Maybe you need also this fix from Dirk Behme
>
> http://lists.denx.de/pipermail/u-boot/2009-July/057265.html
>
> I see on this Hardware is CONFIG_SYS_64BIT_VSPRINTF activated ... so
> I think, the above patch will fix this. Can you give this a try?
>
> bye
> Heiko
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v2] Make linking against libgcc configurable
2009-07-23 14:43 ` Daniel Gorsulowski
@ 2009-07-23 14:48 ` Daniel Gorsulowski
2009-07-23 15:33 ` Heiko Schocher
0 siblings, 1 reply; 69+ messages in thread
From: Daniel Gorsulowski @ 2009-07-23 14:48 UTC (permalink / raw)
To: u-boot
Sorry, it was my misstake.
By c&p and applying yout patch I missed the changes in lib_arm/Makefile.
But as i wrote, _lshrdi3.a does not compile.
Daniel
Daniel Gorsulowski wrote:
> So i added 'GLSOBJS += _lshrdi3.S' to lib_arm/Makefile (this line is missing
> in your patch, i guess). But _lshrdi3.a still does not compile.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v2] Make linking against libgcc configurable
2009-07-23 14:48 ` Daniel Gorsulowski
@ 2009-07-23 15:33 ` Heiko Schocher
2009-07-24 6:07 ` Daniel Gorsulowski
0 siblings, 1 reply; 69+ messages in thread
From: Heiko Schocher @ 2009-07-23 15:33 UTC (permalink / raw)
To: u-boot
Hello Daniel,
Daniel Gorsulowski wrote:
> Sorry, it was my misstake.
>
> By c&p and applying yout patch I missed the changes in lib_arm/Makefile.
> But as i wrote, _lshrdi3.a does not compile.
Why do you use c&p, and not better tools?
Compiling the meesc board with actual u-boot and the patches
from Wolfgang, Dirk and me, works fine for me:
[hs at pollux u-boot]$ make mrproper
[hs at pollux u-boot]$ make meesc_config
Configuring for meesc board...
[hs at pollux u-boot]$ make USE_PRIVATE_LIBGCC=yes -s all
[hs at pollux u-boot]$
[hs at pollux u-boot]$ ls -al u-boot.bin
-rwxrwxr-x 1 hs hs 136820 23. Jul 17:25 u-boot.bin
[hs at pollux u-boot]$
[hs at pollux u-boot]$ git log
commit 21fd74874f0f7d95509c726162da213dcc6e7db1
Author: Heiko Schocher <hs@denx.de>
Date: Thu Jul 23 13:18:40 2009 +0200
arm: add _lshrdi3.S
Signed-off-by: Heiko Schocher <hs@denx.de>
commit de463168e15733fd1f66f472399f7b93758f6a9e
Author: Wolfgang Denk <wd@denx.de>
Date: Thu Jul 23 13:15:59 2009 +0200
Make linking against libgcc configurable
Many (especially ARM) tool chains seem to come with broken or
otherwise unusable (for the purposes of builing U-Boot) run-time
support libraries `libgcc.a'. By using the "USE_PRIVATE_LIBGCC"
setting we allow to use alternative libraries instead.
"USE_PRIVATE_LIBGCC" can either be set as an environment variable in
the shell, or as a command line argument when running "make", i. e.
$ make USE_PRIVATE_LIBGCC=yes
or
$ USE_PRIVATE_LIBGCC=yes
$ export USE_PRIVATE_LIBGCC
$ make
The value of "USE_PRIVATE_LIBGCC" is the name of the directory which
contains the alternative run-time support library `libgcc.a'. The
special value "yes" selects the directory $(OBJTREE)/lib_$(ARCH) .
Note that not all architectures provide an alternative `libgcc.a' in
their lib_$(ARCH) directories - so far, only ARM does.
Signed-off-by: Wolfgang Denk <wd@denx.de>
Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Prafulla Wadaskar <prafulla@marvell.com>
cc: Stefan Roese <sr@denx.de>
commit 6da36a407c7e0d48789f10338477a3a8f612301f
Author: Dirk Behme <dirk.behme@googlemail.com>
Date: Wed Jul 22 17:51:56 2009 +0200
Use do_div from div64.h for vsprintf
Use do_div from div64.h for vsprintf in case of 64bit division.
For 32bit division, do_div from div64.h can't be used as it
needs a 64bit parameter.
Signed-off-by: Dirk Behme <dirk.behme@googlemail.com>
CC: Simon Kagstrom <simon.kagstrom@netinsight.net>
commit 189eec77795553157c087cd45555695fb3ce2433
Merge: faca03c... 84efbf4...
Author: Wolfgang Denk <wd@denx.de>
Date: Thu Jul 23 01:00:17 2009 +0200
Merge branch 'master' of /home/wd/git/u-boot/custodians
commit 84efbf4d144ff8aaed3cca036aebb1fe69eff3f4
Merge: 49a7720... 57215cd...
Author: Wolfgang Denk <wd@denx.de>
Date: Thu Jul 23 00:59:37 2009 +0200
Merge branch 'master' of git://git.denx.de/u-boot-arm
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v2] Make linking against libgcc configurable
2009-07-23 13:28 ` [U-Boot] [PATCH v2] Make linking against libgcc configurable Daniel Gorsulowski
2009-07-23 14:12 ` Heiko Schocher
@ 2009-07-23 16:45 ` Wolfgang Denk
1 sibling, 0 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-23 16:45 UTC (permalink / raw)
To: u-boot
Dear Daniel Gorsulowski,
In message <4A686566.409@esd.eu> you wrote:
>
> buid on meesc board (arm) is still broken.
> It's roughly the same problem, as Heiko Schocher reported in
> 4A6854B1.5000205 at denx.de. But his patch doesn't fix the problem either.
>
> danielg at debby:~/git/u-boot$ make USE_PRIVATE_LIBGCC=yes
> ...
> drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_do_write_oob':
> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2019: undefined reference to `__lshrdi3'
> drivers/mtd/nand/libnand.a(nand_base.o): In function `nand_erase_nand':
> /data/home/danielg/git/u-boot/drivers/mtd/nand/nand_base.c:2199: undefined reference to `__lshrdi3'
Well, my patch makes the use of libgcc configurable - it does not
attempt to fix any remaining problems in the private ARM
implementation of this library - I think Jean-Christophe has a full
port of the related Linux code ready available, and I think he should
rebase and post this.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
When a man sits with a pretty girl for an hour, it seems like a
minute. But let him sit on a hot stove for a minute -- and it's lon-
ger than any hour. That's relativity. -- Albert Einstein
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v2] Make linking against libgcc configurable
2009-07-23 15:33 ` Heiko Schocher
@ 2009-07-24 6:07 ` Daniel Gorsulowski
2009-07-27 6:26 ` Heiko Schocher
0 siblings, 1 reply; 69+ messages in thread
From: Daniel Gorsulowski @ 2009-07-24 6:07 UTC (permalink / raw)
To: u-boot
Heiko Schocher wrote:
> Hello Daniel,
>
Hello Heiko,
First, I would like to apologize for top posting in my last 3 mails.
I am anxious to avoid that in the feature.
> Daniel Gorsulowski wrote:
>> Sorry, it was my misstake.
>>
>> By c&p and applying yout patch I missed the changes in lib_arm/Makefile.
>> But as i wrote, _lshrdi3.a does not compile.
>
> Why do you use c&p, and not better tools?
>
Thank you, now I learned using git-am as well by patches, created with
git-format-patch, as by emails from my mailbox.
> Compiling the meesc board with actual u-boot and the patches
> from Wolfgang, Dirk and me, works fine for me:
>
> [hs at pollux u-boot]$ make mrproper
> [hs at pollux u-boot]$ make meesc_config
> Configuring for meesc board...
> [hs at pollux u-boot]$ make USE_PRIVATE_LIBGCC=yes -s all
> [hs at pollux u-boot]$
> [hs at pollux u-boot]$ ls -al u-boot.bin
> -rwxrwxr-x 1 hs hs 136820 23. Jul 17:25 u-boot.bin
...
>
After re-applying the patches by git-am, everything workes fine for me too.
Sorry for confusing...
> bye
> Heiko
Bye, Daniel
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v2] Make linking against libgcc configurable
2009-07-23 11:15 ` [U-Boot] [PATCH v2] " Wolfgang Denk
2009-07-23 11:27 ` [U-Boot] [PATCH] arm: add _lshrdi3.S Heiko Schocher
2009-07-23 13:28 ` [U-Boot] [PATCH v2] Make linking against libgcc configurable Daniel Gorsulowski
@ 2009-07-26 22:11 ` Wolfgang Denk
2 siblings, 0 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-26 22:11 UTC (permalink / raw)
To: u-boot
In message <1248347759-28119-1-git-send-email-wd@denx.de> you wrote:
> Many (especially ARM) tool chains seem to come with broken or
> otherwise unusable (for the purposes of builing U-Boot) run-time
> support libraries `libgcc.a'. By using the "USE_PRIVATE_LIBGCC"
> setting we allow to use alternative libraries instead.
>
> "USE_PRIVATE_LIBGCC" can either be set as an environment variable in
> the shell, or as a command line argument when running "make", i. e.
> $ make USE_PRIVATE_LIBGCC=yes
> or
> $ USE_PRIVATE_LIBGCC=yes
> $ export USE_PRIVATE_LIBGCC
> $ make
>
> The value of "USE_PRIVATE_LIBGCC" is the name of the directory which
> contains the alternative run-time support library `libgcc.a'. The
> special value "yes" selects the directory $(OBJTREE)/lib_$(ARCH) .
>
> Note that not all architectures provide an alternative `libgcc.a' in
> their lib_$(ARCH) directories - so far, only ARM does.
>
> Signed-off-by: Wolfgang Denk <wd@denx.de>
> Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> Cc: Prafulla Wadaskar <prafulla@marvell.com>
> cc: Stefan Roese <sr@denx.de>
> ---
> v2: Removed crap left over from testing.
>
> Makefile | 12 +++++++++++-
> board/trab/Makefile | 4 +---
> lib_arm/Makefile | 30 ++++++++++++++++++++++--------
> 3 files changed, 34 insertions(+), 12 deletions(-)
Applied.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Men don't talk peace unless they're ready to back it up with war.
-- Col. Green, "The Savage Curtain", stardate 5906.4
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH] arm: add _lshrdi3.S
2009-07-23 11:27 ` [U-Boot] [PATCH] arm: add _lshrdi3.S Heiko Schocher
2009-07-23 11:41 ` Wolfgang Denk
@ 2009-07-26 22:11 ` Wolfgang Denk
1 sibling, 0 replies; 69+ messages in thread
From: Wolfgang Denk @ 2009-07-26 22:11 UTC (permalink / raw)
To: u-boot
Dear Heiko Schocher,
In message <4A684908.8070402@invitel.hu> you wrote:
> Signed-off-by: Heiko Schocher <hs@denx.de>
> ---
> lib_arm/Makefile | 1 +
> lib_arm/_lshrdi3.S | 46 ++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 47 insertions(+), 0 deletions(-)
> create mode 100644 lib_arm/_lshrdi3.S
Applied, thanks.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
You humans have that emotional need to express gratitude. "You're
welcome," I believe, is the correct response.
-- Spock, "Bread and Circuses", stardate 4041.2
^ permalink raw reply [flat|nested] 69+ messages in thread
* [U-Boot] [PATCH v2] Make linking against libgcc configurable
2009-07-24 6:07 ` Daniel Gorsulowski
@ 2009-07-27 6:26 ` Heiko Schocher
0 siblings, 0 replies; 69+ messages in thread
From: Heiko Schocher @ 2009-07-27 6:26 UTC (permalink / raw)
To: u-boot
Hello Daniel,
Daniel Gorsulowski wrote:
> Heiko Schocher wrote:
>> Daniel Gorsulowski wrote:
>>> Sorry, it was my misstake.
>>>
>>> By c&p and applying yout patch I missed the changes in lib_arm/Makefile.
>>> But as i wrote, _lshrdi3.a does not compile.
>> Why do you use c&p, and not better tools?
>>
> Thank you, now I learned using git-am as well by patches, created with
> git-format-patch, as by emails from my mailbox.
Fine.
>> Compiling the meesc board with actual u-boot and the patches
>> from Wolfgang, Dirk and me, works fine for me:
>>
>> [hs at pollux u-boot]$ make mrproper
>> [hs at pollux u-boot]$ make meesc_config
>> Configuring for meesc board...
>> [hs at pollux u-boot]$ make USE_PRIVATE_LIBGCC=yes -s all
>> [hs at pollux u-boot]$
>> [hs at pollux u-boot]$ ls -al u-boot.bin
>> -rwxrwxr-x 1 hs hs 136820 23. Jul 17:25 u-boot.bin
> ...
> After re-applying the patches by git-am, everything workes fine for me too.
Great. One more test, thanks. :-)
> Sorry for confusing...
No problem.
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 69+ messages in thread
end of thread, other threads:[~2009-07-27 6:26 UTC | newest]
Thread overview: 69+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-08 19:36 [U-Boot] [PATCH v3] libgcc inclusion from common Makefile overwritable from platform configs files Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 19:42 ` Scott Wood
2009-07-08 20:09 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:14 ` [U-Boot] [PATCH V4] " Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:26 ` Scott Wood
2009-07-08 20:33 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:38 ` [U-Boot] [PATCH V5] " Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:38 ` [U-Boot] [PATCH 2/2] netstar/voiceblue: remove no-need libgcc link for eeprom standalone Jean-Christophe PLAGNIOL-VILLARD
2009-07-20 22:03 ` Wolfgang Denk
2009-07-08 20:55 ` [U-Boot] [PATCH V5] libgcc inclusion from common Makefile overwritable from platform configs files Wolfgang Denk
2009-07-08 21:19 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 21:29 ` Wolfgang Denk
2009-07-08 20:30 ` [U-Boot] [PATCH V4] " Wolfgang Denk
2009-07-08 20:45 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-08 20:47 ` Mike Frysinger
2009-07-09 10:24 ` [U-Boot] [PATCH 1/2 v6] Make libgcc inclusion from common Makefile overridable by platform config file Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 7:54 ` Dirk Behme
2009-07-12 8:02 ` Stefan Roese
2009-07-12 8:15 ` Dirk Behme
2009-07-12 10:29 ` Wolfgang Denk
2009-07-12 12:06 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 12:13 ` Dirk Behme
2009-07-12 12:39 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 14:36 ` Wolfgang Denk
2009-07-12 14:55 ` Dirk Behme
2009-07-12 15:50 ` Wolfgang Denk
2009-07-12 16:12 ` Dirk Behme
2009-07-12 18:17 ` Wolfgang Denk
2009-07-12 19:22 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 19:35 ` Wolfgang Denk
2009-07-12 19:51 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 21:27 ` Wolfgang Denk
2009-07-12 16:17 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-12 18:29 ` Wolfgang Denk
2009-07-12 19:06 ` Dirk Behme
2009-07-12 19:30 ` Wolfgang Denk
2009-07-13 9:25 ` Mike Frysinger
2009-07-13 16:00 ` Dirk Behme
2009-07-15 22:18 ` Scott Wood
2009-07-15 22:43 ` Mike Frysinger
2009-07-15 23:03 ` Scott Wood
2009-07-15 23:54 ` Mike Frysinger
2009-07-16 15:36 ` Scott Wood
2009-07-16 15:42 ` Wolfgang Denk
2009-07-16 15:56 ` Scott Wood
2009-07-17 11:27 ` Detlev Zundel
2009-07-17 11:37 ` Wolfgang Denk
2009-07-17 11:41 ` Wolfgang Denk
2009-07-17 15:24 ` Scott Wood
2009-07-16 11:11 ` Wolfgang Denk
2009-07-13 7:36 ` Stefan Roese
2009-07-13 15:46 ` Dirk Behme
2009-07-13 18:16 ` Mike Frysinger
2009-07-23 9:36 ` Wolfgang Denk
2009-07-23 11:09 ` [U-Boot] [PATCH] Make linking against libgcc configurable Wolfgang Denk
2009-07-23 11:15 ` [U-Boot] [PATCH v2] " Wolfgang Denk
2009-07-23 11:27 ` [U-Boot] [PATCH] arm: add _lshrdi3.S Heiko Schocher
2009-07-23 11:41 ` Wolfgang Denk
2009-07-23 12:16 ` Heiko Schocher
2009-07-26 22:11 ` Wolfgang Denk
2009-07-23 13:28 ` [U-Boot] [PATCH v2] Make linking against libgcc configurable Daniel Gorsulowski
2009-07-23 14:12 ` Heiko Schocher
2009-07-23 14:43 ` Daniel Gorsulowski
2009-07-23 14:48 ` Daniel Gorsulowski
2009-07-23 15:33 ` Heiko Schocher
2009-07-24 6:07 ` Daniel Gorsulowski
2009-07-27 6:26 ` Heiko Schocher
2009-07-23 16:45 ` Wolfgang Denk
2009-07-26 22:11 ` Wolfgang Denk
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.