* [U-Boot-Users] [PATCH] objcopy for srec and bin files should be done on .o files
@ 2006-04-05 16:26 Martin Hicks
2006-04-05 18:33 ` Wolfgang Denk
0 siblings, 1 reply; 6+ messages in thread
From: Martin Hicks @ 2006-04-05 16:26 UTC (permalink / raw)
To: u-boot
The Makefile rule for creating srec and bin files fails for me frequently.
I believe that we should be doing the ojbcopy on the .o files, not the ELF
binary.
Signed-off-by: Martin Hicks <mort@bork.org>
---
examples/Makefile | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
35b9e5c91127f1428c6e207fe2bca76782ca5b36
diff --git a/examples/Makefile b/examples/Makefile
index 2f8c4c4..36fe2a3 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -123,10 +123,10 @@ $(LIB): .depend $(LIBOBJS)
$(LD) -g $(EX_LDFLAGS) -Ttext $(LOAD_ADDR) \
-o $@ -e $(<:.o=) $< $(LIB) \
-L$(gcclibdir) -lgcc
-%.srec: %
+%.srec: %.o
$(OBJCOPY) -O srec $< $@ 2>/dev/null
-%.bin: %
+%.bin: %.o
$(OBJCOPY) -O binary $< $@ 2>/dev/null
#########################################################################
--
1.2.4
--
Martin Hicks || mort at bork.org || PGP/GnuPG: 0x4C7F2BEE
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot-Users] [PATCH] objcopy for srec and bin files should be done on .o files
2006-04-05 16:26 [U-Boot-Users] [PATCH] objcopy for srec and bin files should be done on .o files Martin Hicks
@ 2006-04-05 18:33 ` Wolfgang Denk
2006-04-05 18:59 ` Martin Hicks
0 siblings, 1 reply; 6+ messages in thread
From: Wolfgang Denk @ 2006-04-05 18:33 UTC (permalink / raw)
To: u-boot
In message <20060405162645.GU27792@bork.org> you wrote:
>
> The Makefile rule for creating srec and bin files fails for me frequently.
Plewase explain what "fails for me means" (error message(s), used
toolchain and versions of the binutils, host environment etc.).
> I believe that we should be doing the ojbcopy on the .o files, not the ELF
> binary.
I disagree. I see no reason to change this yet. First I woul like to
at least understand which problem you are trying to fix.
Best regards,
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"I've seen it. It's rubbish." - Marvin the Paranoid Android
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot-Users] [PATCH] objcopy for srec and bin files should be done on .o files
2006-04-05 18:33 ` Wolfgang Denk
@ 2006-04-05 18:59 ` Martin Hicks
2006-04-05 21:04 ` Wolfgang Denk
0 siblings, 1 reply; 6+ messages in thread
From: Martin Hicks @ 2006-04-05 18:59 UTC (permalink / raw)
To: u-boot
On Wed, Apr 05, 2006 at 08:33:23PM +0200, Wolfgang Denk wrote:
> In message <20060405162645.GU27792@bork.org> you wrote:
> >
> > The Makefile rule for creating srec and bin files fails for me frequently.
>
> Plewase explain what "fails for me means" (error message(s), used
> toolchain and versions of the binutils, host environment etc.).
mort at descartes:~/src/targa/u-boot2$ make ASH405_config CROSS_COMPILE=powerpc-405-linux-gnu-
Configuring for ASH405 board...
mort at descartes:~/src/targa/u-boot2$ make CROSS_COMPILE=powerpc-405-linux-gnu-
[snip]
powerpc-405-linux-gnu-gcc -g -Os -fPIC -ffixed-r14 -meabi -fno-strict-aliasing -D__KERNEL__ -DTEXT_BASE=0xFFFC0000 -I/home/mort/src/targa/u-boot2/include -fno-builtin -ffreestanding -nostdinc -isystem /home/mort/src/targa/powerpc-linux/gcc-3.4.5-glibc-2.3.6/powerpc-405-linux-gnu/bin/../lib/gcc/powerpc-405-linux-gnu/3.4.5/include -pipe -DCONFIG_PPC -D__powerpc__ -DCONFIG_4xx -ffixed-r2 -ffixed-r29 -mstring -Wa,-m405 -mcpu=405 -msoft-float -Wall -Wstrict-prototypes -c -o stubs.o stubs.c
powerpc-405-linux-gnu-ar crv libstubs.a ppc_longjmp.o ppc_setjmp.o stubs.o
r - ppc_longjmp.o
r - ppc_setjmp.o
r - stubs.o
make[1]: *** No rule to make target `hello_world.srec', needed by `all'. Stop.
make[1]: Leaving directory `/home/mort/src/targa/u-boot2/examples'
make: *** [examples] Error 2
mort at descartes:~/src/targa/u-boot2$
That's your git HEAD. The problem is also present at the 1.1.4 tag.
I"m not actually using the ASH405, but I just used it as an example...
The compiler is a gcc-3.4.5/binutils-2.15 (and glibc-2.3.6) x86->ppc405
cross compiler built by crosstools-0.42
mh
--
Martin Hicks || mort at bork.org || PGP/GnuPG: 0x4C7F2BEE
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://lists.denx.de/pipermail/u-boot/attachments/20060405/312ee1ed/attachment.pgp
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot-Users] [PATCH] objcopy for srec and bin files should be done on .o files
2006-04-05 18:59 ` Martin Hicks
@ 2006-04-05 21:04 ` Wolfgang Denk
2006-04-05 22:03 ` Martin Hicks
0 siblings, 1 reply; 6+ messages in thread
From: Wolfgang Denk @ 2006-04-05 21:04 UTC (permalink / raw)
To: u-boot
In message <20060405185908.GW27792@bork.org> you wrote:
>
> > Plewase explain what "fails for me means" (error message(s), used
> > toolchain and versions of the binutils, host environment etc.).
>
> mort at descartes:~/src/targa/u-boot2$ make ASH405_config CROSS_COMPILE=powerpc-405-linux-gnu-
> Configuring for ASH405 board...
> mort at descartes:~/src/targa/u-boot2$ make CROSS_COMPILE=powerpc-405-linux-gnu-
>
> [snip]
>
> powerpc-405-linux-gnu-gcc -g -Os -fPIC -ffixed-r14 -meabi -fno-strict-aliasing -D__KERNEL__ -DTEXT_BASE=0xFFFC0000 -I/home/mort/src/targa/u-boot2/include -fno-builtin -ffreestanding -nostdinc -isystem /home/mort/src/targa/powerpc-linux/gcc-3.4.5-glibc-2.3.6/powerpc-405-linux-gnu/bin/../lib/gcc/powerpc-405-linux-gnu/3.4.5/include -pipe -DCONFIG_PPC -D__powerpc__ -DCONFIG_4xx -ffixed-r2 -ffixed-r29 -mstring -Wa,-m405 -mcpu=405 -msoft-float -Wall -Wstrict-prototypes -c -o stubs.o stubs.c
> powerpc-405-linux-gnu-ar crv libstubs.a ppc_longjmp.o ppc_setjmp.o stubs.o
> r - ppc_longjmp.o
> r - ppc_setjmp.o
> r - stubs.o
> make[1]: *** No rule to make target `hello_world.srec', needed by `all'. Stop.
SSounds as if your Makefile is corrupted. Of course there is a
hello_world.srec target in it. Or your version of "make" is broken...
> That's your git HEAD. The problem is also present at the 1.1.4 tag.
> I"m not actually using the ASH405, but I just used it as an example...
Me too. Works perfectly fine here:
-> ./MAKEALL ASH405
Configuring for ASH405 board...
text data bss dec hex filename
189384 9768 37456 236608 39c40 u-boot
->
No errors, no warnings.
> The compiler is a gcc-3.4.5/binutils-2.15 (and glibc-2.3.6) x86->ppc405
> cross compiler built by crosstools-0.42
Well, this is IMHO a toolchain problem. The code builds fine with
ELDK 3.x (GC-3.3.3 / binutils 2.14) and ELDK 4.x (GCC-4.0.0 /
binutils 2.16.1).
I think I reject your patch.
Best regards,
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"It is easier to port a shell than a shell script." - Larry Wall
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot-Users] [PATCH] objcopy for srec and bin files should be done on .o files
2006-04-05 21:04 ` Wolfgang Denk
@ 2006-04-05 22:03 ` Martin Hicks
2006-04-05 22:25 ` Wolfgang Denk
0 siblings, 1 reply; 6+ messages in thread
From: Martin Hicks @ 2006-04-05 22:03 UTC (permalink / raw)
To: u-boot
On Wed, Apr 05, 2006 at 11:04:04PM +0200, Wolfgang Denk wrote:
>
> SSounds as if your Makefile is corrupted. Of course there is a
> hello_world.srec target in it. Or your version of "make" is broken...
aha. It's a make 3.80 vs. 3.81 problem... Debian etch (testing)
already has 3.81 in it. More people will start running into this
problem.
It still might be easier and less error prone to change the rule to use
the object files instead of the elf binary, but its up to you.
mh
--
Martin Hicks || mort at bork.org || PGP/GnuPG: 0x4C7F2BEE
[PATCH] Switch order of ELF and BIN objects for make 3.81
make 3.81 evaluates things a little differently. Without this patch
the build fails as follows with make 3.81
make[1]: *** No rule to make target `hello_world.srec', needed by `all'. Stop.
make[1]: Leaving directory `/home/mort/src/targa/u-boot/u-boot-TOT/examples'
make: *** [examples] Error 2
Compile tested with make 3.80 and 3.81
Signed-off-by: Martin Hicks <mort@bork.org>
---
examples/Makefile | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
fee8cad056b09b76425e027b49144d4e9664662e
diff --git a/examples/Makefile b/examples/Makefile
index fee2674..5386339 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -60,44 +60,44 @@ endif
include $(TOPDIR)/config.mk
SREC = hello_world.srec
-BIN = hello_world.bin hello_world
+BIN = hello_world hello_world.bin
ifeq ($(CPU),mpc8xx)
SREC = test_burst.srec
-BIN = test_burst.bin test_burst
+BIN = test_burst test_burst.bin
endif
ifeq ($(ARCH),i386)
SREC += 82559_eeprom.srec
-BIN += 82559_eeprom.bin 82559_eeprom
+BIN += 82559_eeprom 82559_eeprom.bin
endif
ifeq ($(ARCH),ppc)
SREC += sched.srec
-BIN += sched.bin sched
+BIN += sched sched.bin
endif
ifeq ($(ARCH),blackfin)
SREC += smc91111_eeprom.srec
-BIN += smc91111_eeprom.bin smc91111_eeprom
+BIN += smc91111_eeprom smc91111_eeprom.bin
endif
# The following example is pretty 8xx specific...
ifeq ($(CPU),mpc8xx)
SREC += timer.srec
-BIN += timer.bin timer
+BIN += timer timer.bin
endif
# The following example is 8260 specific...
ifeq ($(CPU),mpc8260)
SREC += mem_to_mem_idma2intr.srec
-BIN += mem_to_mem_idma2intr.bin mem_to_mem_idma2intr
+BIN += mem_to_mem_idma2intr mem_to_mem_idma2intr.bin
endif
# Utility for resetting i82559 EEPROM
ifeq ($(BOARD),oxc)
SREC += eepro100_eeprom.srec
-BIN += eepro100_eeprom.bin eepro100_eeprom
+BIN += eepro100_eeprom eepro100_eeprom.bin
endif
ifeq ($(BIG_ENDIAN),y)
@@ -122,7 +122,7 @@ clibdir := $(shell dirname `$(CC) $(CFLA
CPPFLAGS += -I..
-all: .depend $(OBJS) $(LIB) $(SREC) $(BIN)
+all: .depend $(OBJS) $(LIB) $(BIN) $(SREC)
#########################################################################
$(LIB): .depend $(LIBOBJS)
--
1.2.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot-Users] [PATCH] objcopy for srec and bin files should be done on .o files
2006-04-05 22:03 ` Martin Hicks
@ 2006-04-05 22:25 ` Wolfgang Denk
0 siblings, 0 replies; 6+ messages in thread
From: Wolfgang Denk @ 2006-04-05 22:25 UTC (permalink / raw)
To: u-boot
In message <20060405220344.GX27792@bork.org> you wrote:
>
> aha. It's a make 3.80 vs. 3.81 problem... Debian etch (testing)
> already has 3.81 in it. More people will start running into this
> problem.
Then either it's a bug in the existing make rules, which I would like
to understand and fix, or it's a bug in make, which needs fixing.
> It still might be easier and less error prone to change the rule to use
> the object files instead of the elf binary, but its up to you.
No, This is the way of least resistence which will leave unknown
error conditions here and there which will bite again later. Please
don't ignore errors, fix them!
Best regards,
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
As far as the laws of mathematics refer to reality, they are not cer-
tain, and as far as they are certain, they do not refer to reality.
-- Albert Einstein
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-04-05 22:25 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-04-05 16:26 [U-Boot-Users] [PATCH] objcopy for srec and bin files should be done on .o files Martin Hicks
2006-04-05 18:33 ` Wolfgang Denk
2006-04-05 18:59 ` Martin Hicks
2006-04-05 21:04 ` Wolfgang Denk
2006-04-05 22:03 ` Martin Hicks
2006-04-05 22:25 ` 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.