[U-Boot] [PATCH] ARM: fix broken build of ARM

Commit 8aba9dceebb14144e07d19593111ee3a999c37fc breaks ARM boards because for ARM the -pie option is used for partial linking together with -r option.
The patch adds the -pie option to link u-boot.bin only.
Signed-off-by: Stefano Babic sbabic@denx.de CC: Jason Liu liu.h.jason@gmail.com CC: lool@dooz.org CC: Wolfgang Denk wd@denx.de CC: Albert Aribaud albert.aribaud@free.fr
--- arch/arm/config.mk | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/config.mk b/arch/arm/config.mk index 4e165bf..a6a4742 100644 --- a/arch/arm/config.mk +++ b/arch/arm/config.mk @@ -67,5 +67,5 @@ LDSCRIPT := $(SRCTREE)/$(CPUDIR)/u-boot.lds
# needed for relocation ifndef CONFIG_NAND_SPL -PLATFORM_LDFLAGS += -pie +LDFLAGS_u-boot += -pie endif

Hello,
Am 27.01.2011 17:03, schrieb Stefano Babic:
Commit 8aba9dceebb14144e07d19593111ee3a999c37fc breaks ARM boards because for ARM the -pie option is used for partial linking together with -r option.
The patch adds the -pie option to link u-boot.bin only.
Using native compilation with gcc 4.5.2 and binutils 2.21 this patch will result in an unusable u-boot. It halts here after DRAM: ... just like it was before some relocation fixes (regarding binutils).
Regards,
Alexander

Hi Alexander,
Le 27/01/2011 20:42, Alexander Holler a écrit :
Hello,
Am 27.01.2011 17:03, schrieb Stefano Babic:
Commit 8aba9dceebb14144e07d19593111ee3a999c37fc breaks ARM boards because for ARM the -pie option is used for partial linking together with -r option.
The patch adds the -pie option to link u-boot.bin only.
Using native compilation with gcc 4.5.2 and binutils 2.21 this patch will result in an unusable u-boot. It halts here after DRAM: ... just like it was before some relocation fixes (regarding binutils).
Which board do you compile?
Regards,
Alexander
Amicalement,

Am 27.01.2011 21:20, schrieb Albert ARIBAUD:
Hi Alexander,
Le 27/01/2011 20:42, Alexander Holler a écrit :
Hello,
Am 27.01.2011 17:03, schrieb Stefano Babic:
Commit 8aba9dceebb14144e07d19593111ee3a999c37fc breaks ARM boards because for ARM the -pie option is used for partial linking together with -r option.
The patch adds the -pie option to link u-boot.bin only.
Using native compilation with gcc 4.5.2 and binutils 2.21 this patch will result in an unusable u-boot. It halts here after DRAM: ... just like it was before some relocation fixes (regarding binutils).
Which board do you compile?
Upps, sorry, that one was on a BeagleBoard (armv7, omap3).
Regards,
Alexander

Le 27/01/2011 21:55, Alexander Holler a écrit :
Am 27.01.2011 21:20, schrieb Albert ARIBAUD:
Hi Alexander,
Le 27/01/2011 20:42, Alexander Holler a écrit :
Hello,
Am 27.01.2011 17:03, schrieb Stefano Babic:
Commit 8aba9dceebb14144e07d19593111ee3a999c37fc breaks ARM boards because for ARM the -pie option is used for partial linking together with -r option.
The patch adds the -pie option to link u-boot.bin only.
Using native compilation with gcc 4.5.2 and binutils 2.21 this patch will result in an unusable u-boot. It halts here after DRAM: ... just like it was before some relocation fixes (regarding binutils).
Which board do you compile?
Upps, sorry, that one was on a BeagleBoard (armv7, omap3).
I've just tried the following to compare make logs of before commit 8aba9dceebb14144e07d19593111ee3a999c37fc on the one hand and after this commit and with the proposed fix on the other hand:
git checkout 8aba9dceebb14144e07d19593111ee3a999c37fc^
(that's the commit just before the one which split LD_FLAGS)
make distclean ; make edminiv2_config; make > ~/old.txt 2>&1
git checkout 8aba9dceebb14144e07d19593111ee3a999c37fc
(that's the commit which split LD_FLAGS)
(replace "PLATFORM_LDFLAGS += -pie" with "LDFLAGS_u-boot += -pie" in arch/arm/config.mk)
make distclean ; make edminiv2_config; make > ~/new.txt 2>&1
(and finally)
kdiff3 ~/old.txt ~/new.txt
The only difference I see between the make logs is the relative location of the -pie option in the final ld invocation: in the 'old' case options go
... -Bstatic -T u-boot.lds -pie -Ttext ...
whereas in the 'new' case, they go
... -pie -Bstatic -T u-boot.lds -Ttext ...
So I think the binary should be pretty much the same in the 'old' and 'new' cases, and that should be irrespective of the tool chain.
Alexander, can you run the same test with your BeagleBoard and let me know of any differences?
Regards,
Alexander
Amicalement,

Dear Albert ARIBAUD,
In message 4D41DF41.4000708@free.fr you wrote:
So I think the binary should be pretty much the same in the 'old' and 'new' cases, and that should be irrespective of the tool chain.
Alexander, can you run the same test with your BeagleBoard and let me know of any differences?
Also running a diff over the System.map and u-boot.map files is usually a good and easy test that images are identical.
Best regards,
Wolfgang Denk

Le 27/01/2011 22:14, Wolfgang Denk a écrit :
Dear Albert ARIBAUD,
In message4D41DF41.4000708@free.fr you wrote:
So I think the binary should be pretty much the same in the 'old' and 'new' cases, and that should be irrespective of the tool chain.
Alexander, can you run the same test with your BeagleBoard and let me know of any differences?
Also running a diff over the System.map and u-boot.map files is usually a good and easy test that images are identical.
Indeed -- my goal was to compare the build processes more than their products.
Best regards,
Wolfgang Denk
Amicalement,

Am 27.01.2011 22:10, schrieb Albert ARIBAUD:
Le 27/01/2011 21:55, Alexander Holler a écrit :
Am 27.01.2011 21:20, schrieb Albert ARIBAUD:
Hi Alexander,
Le 27/01/2011 20:42, Alexander Holler a écrit :
Hello,
Am 27.01.2011 17:03, schrieb Stefano Babic:
Commit 8aba9dceebb14144e07d19593111ee3a999c37fc breaks ARM boards because for ARM the -pie option is used for partial linking together with -r option.
The patch adds the -pie option to link u-boot.bin only.
Using native compilation with gcc 4.5.2 and binutils 2.21 this patch will result in an unusable u-boot. It halts here after DRAM: ... just like it was before some relocation fixes (regarding binutils).
Which board do you compile?
Upps, sorry, that one was on a BeagleBoard (armv7, omap3).
I've just tried the following to compare make logs of before commit 8aba9dceebb14144e07d19593111ee3a999c37fc on the one hand and after this commit and with the proposed fix on the other hand:
Oh, it seems I've got misunderstood, the patch from Stefano Babic breaks u-boot here and not the commit 8aba9dceebb14144e07d19593111ee3a999c37fc.
Regards,
Alexander

Le 27/01/2011 22:32, Alexander Holler a écrit :
Am 27.01.2011 22:10, schrieb Albert ARIBAUD:
Le 27/01/2011 21:55, Alexander Holler a écrit :
Am 27.01.2011 21:20, schrieb Albert ARIBAUD:
Hi Alexander,
Le 27/01/2011 20:42, Alexander Holler a écrit :
Hello,
Am 27.01.2011 17:03, schrieb Stefano Babic:
Commit 8aba9dceebb14144e07d19593111ee3a999c37fc breaks ARM boards because for ARM the -pie option is used for partial linking together with -r option.
The patch adds the -pie option to link u-boot.bin only.
Using native compilation with gcc 4.5.2 and binutils 2.21 this patch will result in an unusable u-boot. It halts here after DRAM: ... just like it was before some relocation fixes (regarding binutils).
Which board do you compile?
Upps, sorry, that one was on a BeagleBoard (armv7, omap3).
I've just tried the following to compare make logs of before commit 8aba9dceebb14144e07d19593111ee3a999c37fc on the one hand and after this commit and with the proposed fix on the other hand:
Oh, it seems I've got misunderstood, the patch from Stefano Babic breaks u-boot here and not the commit 8aba9dceebb14144e07d19593111ee3a999c37fc.
I think I understood you: what I do is compile without commit 8aba9dce on the one hand, and with it _plus Stefano's patch_ on the other hand, in order to see how things compiled before we split LDFLAGS (8aba9dce^) with how things compile if we split LDFLAGS (8aba9dce) with -pie in the right place (Stefano's patch).
Can you try that?
Regards,
Alexander
Amicalement,

Am 27.01.2011 22:40, schrieb Albert ARIBAUD:
Le 27/01/2011 22:32, Alexander Holler a écrit :
Am 27.01.2011 22:10, schrieb Albert ARIBAUD:
Le 27/01/2011 21:55, Alexander Holler a écrit :
Am 27.01.2011 21:20, schrieb Albert ARIBAUD:
Hi Alexander,
Le 27/01/2011 20:42, Alexander Holler a écrit :
Hello,
Am 27.01.2011 17:03, schrieb Stefano Babic: > Commit 8aba9dceebb14144e07d19593111ee3a999c37fc breaks > ARM boards because for ARM the -pie option is used > for partial linking together with -r option. > > The patch adds the -pie option to link u-boot.bin only.
Using native compilation with gcc 4.5.2 and binutils 2.21 this patch will result in an unusable u-boot. It halts here after DRAM: ... just like it was before some relocation fixes (regarding binutils).
Which board do you compile?
Upps, sorry, that one was on a BeagleBoard (armv7, omap3).
I've just tried the following to compare make logs of before commit 8aba9dceebb14144e07d19593111ee3a999c37fc on the one hand and after this commit and with the proposed fix on the other hand:
Oh, it seems I've got misunderstood, the patch from Stefano Babic breaks u-boot here and not the commit 8aba9dceebb14144e07d19593111ee3a999c37fc.
I think I understood you: what I do is compile without commit 8aba9dce on the one hand, and with it _plus Stefano's patch_ on the other hand, in order to see how things compiled before we split LDFLAGS (8aba9dce^) with how things compile if we split LDFLAGS (8aba9dce) with -pie in the right place (Stefano's patch).
Can you try that?
Sorry, again. While hunting another problem I've applied Stefano's patch but haven't had 8aba9dceebb14144e07d19593111ee3a999c37fc (I was on the wrong branch here). I've now rebased to the master (which includes the above commit) and applied Stefano's patch and it works.
Sorry for the noise.
Regards,
Alexander

Le 27/01/2011 23:19, Alexander Holler a écrit :
I've now rebased to the master (which includes the above commit) and applied Stefano's patch and it works.
Sorry for the noise.
No problems. You can add your Tested-by: to Stefano's first post in this thread. :)
Regards,
Alexander
Amicalement,

On 01/27/2011 11:19 PM, Alexander Holler wrote:
Sorry, again. While hunting another problem I've applied Stefano's patch but haven't had 8aba9dceebb14144e07d19593111ee3a999c37fc (I was on the wrong branch here). I've now rebased to the master (which includes the above commit) and applied Stefano's patch and it works.
Sorry for the noise.
Thanks for testing. I tested again on a ARM11 board, and I have not seen any problems. However, I tested with an older gcc version, and I could not exclude issues with gcc 4.5
Regards, Stefano

Am 27.01.2011 17:03, schrieb Stefano Babic:
Commit 8aba9dceebb14144e07d19593111ee3a999c37fc breaks ARM boards because for ARM the -pie option is used for partial linking together with -r option.
The patch adds the -pie option to link u-boot.bin only.
Signed-off-by: Stefano Babicsbabic@denx.de CC: Jason Liuliu.h.jason@gmail.com CC: lool@dooz.org CC: Wolfgang Denkwd@denx.de CC: Albert Aribaudalbert.aribaud@free.fr
Tested-by: Alexander Holler holler@ahsoftware.de
Regards,
Alexander

Le 27/01/2011 23:44, Alexander Holler a écrit :
Am 27.01.2011 17:03, schrieb Stefano Babic:
Commit 8aba9dceebb14144e07d19593111ee3a999c37fc breaks ARM boards because for ARM the -pie option is used for partial linking together with -r option.
The patch adds the -pie option to link u-boot.bin only.
Signed-off-by: Stefano Babicsbabic@denx.de CC: Jason Liuliu.h.jason@gmail.com CC: lool@dooz.org CC: Wolfgang Denkwd@denx.de CC: Albert Aribaudalbert.aribaud@free.fr
Tested-by: Alexander Hollerholler@ahsoftware.de
Regards,
Alexander _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Applied to u-boot-arm as this is a fix.
Amicalement,
participants (4)
-
Albert ARIBAUD
-
Alexander Holler
-
Stefano Babic
-
Wolfgang Denk