From: Aneesh V <aneesh@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC PATCH 2/4] OMAP3+: fix issues with Thumb build
Date: Thu, 09 Feb 2012 14:28:21 +0530 [thread overview]
Message-ID: <4F338AAD.8070905@ti.com> (raw)
In-Reply-To: <4F3040D0.5070808@aribaud.net>
Hi Albert,
On Tuesday 07 February 2012 02:36 AM, Albert ARIBAUD wrote:
> Le 06/02/2012 12:37, Aneesh V a ?crit :
>> When U-Boot/SPL is built using the Thumb instruction set the
>> toolchain has a potential issue with weakly linked symbols.
>> If a function has a weakly linked default implementation in C
>> and a real implementation in assembly GCC is confused about the
>> instruction set of the assembly implementation. As a result
>> the assembly function that is built in ARM is executed as
>> if it is Thumb. This results in a crash.
>>
>> We need to investigate further to see if this is a toolchain
>> issue or an issue with our usage of it. In the meanwhile, we
>> can workaround the issue by having both the weakly linked alias
>> and the real implementation in C.
>
> I would tend to NAK a patch submission where an issue is known and
> investigation is considered but is actually bypassed by a workaround.
> These tend to turn from 'temporary fix' to 'old crust' with time,
> because there is no incentive for a better solution when the quick fix
> "works, after all".
I have a solution to this problem now. The following change solves it.
diff --git a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
index 35f38ac..177af7a 100644
--- a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
+++ b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
@@ -28,6 +28,7 @@
#include <asm/arch/omap.h>
+.type save_boot_params, %function
.global save_boot_params
save_boot_params:
/*
Apparently having the symbol marked as %function type in the symbol
table helps ld. However, not having the %function tag doesn't prevent
ld from linking correctly to this function. It affects only ARM/Thumb
resolution. Strange!
I came to this solution from the test-code provided by Ulrich Weigand
in reply to my queries in Linaro ML [1]. I couldn't reproduce the
problem with his code, but eventually could break it when I removed
the %function.
I will continue this discussion there and to understand whether this is
a limitation with GCC.
However, hope you are fine with the above solution. I shall fix up all
assembly functions in arm.
[1] http://article.gmane.org/gmane.linux.linaro.devel/3073
br,
Aneesh
next prev parent reply other threads:[~2012-02-09 8:58 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-06 11:37 [U-Boot] [RFC PATCH 0/4] Enable Thumb build for ARM platforms Aneesh V
2012-02-06 11:37 ` [U-Boot] [RFC PATCH 1/4] ARM: enable Thumb build Aneesh V
2012-02-06 18:45 ` Tom Rini
2012-02-07 7:43 ` Aneesh V
2012-02-06 11:37 ` [U-Boot] [RFC PATCH 2/4] OMAP3+: fix issues with " Aneesh V
2012-02-06 21:06 ` Albert ARIBAUD
2012-02-07 7:49 ` Aneesh V
2012-02-09 8:58 ` Aneesh V [this message]
2012-02-06 11:37 ` [U-Boot] [RFC PATCH 3/4] OMAP3+: Use -march=armv7-a and thereby enable Thumb-2 Aneesh V
2012-02-06 11:37 ` [U-Boot] [RFC PATCH 4/4] OMAP4: enable Thumb build Aneesh V
2012-02-06 12:26 ` [U-Boot] [RFC PATCH 0/4] Enable Thumb build for ARM platforms Aneesh V
2012-02-06 13:22 ` Aneesh V
2012-02-15 13:57 ` [U-Boot] [PATCH " Aneesh V
2012-02-15 13:57 ` [U-Boot] [PATCH 1/4] ARM: enable Thumb build Aneesh V
2012-02-15 13:57 ` [U-Boot] [PATCH 2/4] arm: add %function attribute to assembly functions Aneesh V
2012-02-17 11:09 ` Aneesh V
2012-02-18 10:13 ` Albert ARIBAUD
2012-02-18 13:24 ` Aneesh V
2012-02-18 15:04 ` Albert ARIBAUD
2012-02-18 16:34 ` Aneesh V
2012-02-18 16:48 ` Albert ARIBAUD
2012-02-20 16:08 ` Aneesh V
2012-02-23 11:06 ` Aneesh V
2012-02-17 17:13 ` Mike Frysinger
2012-02-18 11:12 ` Aneesh V
2012-02-18 11:34 ` Albert ARIBAUD
2012-02-18 22:03 ` Simon Glass
2012-02-19 7:15 ` Mike Frysinger
2012-02-20 20:07 ` Tom Rini
2012-02-20 21:53 ` Simon Glass
2012-02-21 4:19 ` Mike Frysinger
2012-02-21 4:44 ` Simon Glass
2012-02-21 14:33 ` Tom Rini
2012-02-21 15:42 ` Mike Frysinger
2012-02-21 18:03 ` Aneesh V
2012-02-21 19:28 ` Mike Frysinger
2012-02-21 20:01 ` Aneesh V
2012-02-21 4:18 ` Mike Frysinger
2012-02-15 13:57 ` [U-Boot] [PATCH 3/4] armv7: Use -march=armv7-a and thereby enable Thumb-2 Aneesh V
2012-02-15 13:57 ` [U-Boot] [PATCH 4/4] OMAP4: enable Thumb build Aneesh V
2012-02-23 13:39 ` [U-Boot] [PATCH v2 1/5] arm: adapt asm/linkage.h from Linux Aneesh V
2012-02-23 14:01 ` Aneesh V
2012-02-23 13:39 ` [U-Boot] [PATCH v2 2/5] armv7: add appropriate headers for assembly functions Aneesh V
2012-02-23 13:39 ` [U-Boot] [PATCH v2 3/5] ARM: enable Thumb build Aneesh V
2012-02-23 14:57 ` Mike Frysinger
2012-02-23 17:28 ` Aneesh V
2012-02-23 17:34 ` Tom Rini
2012-02-23 17:49 ` Aneesh V
2012-02-23 17:51 ` Tom Rini
2012-02-23 18:09 ` Aneesh V
2012-02-23 18:13 ` Aneesh V
2012-02-23 18:05 ` Mike Frysinger
2012-02-23 18:04 ` Mike Frysinger
2012-02-23 18:12 ` Aneesh V
2012-02-23 13:39 ` [U-Boot] [PATCH v2 4/5] armv7: Use -march=armv7-a and thereby enable Thumb-2 Aneesh V
2012-02-23 13:39 ` [U-Boot] [PATCH v2 5/5] OMAP4: enable Thumb build Aneesh V
2012-02-23 14:06 ` [U-Boot] [PATCH v3 1/6] arm: adapt asm/linkage.h from Linux Aneesh V
2012-02-23 14:59 ` Mike Frysinger
2012-02-23 15:24 ` Tom Rini
2012-02-23 16:57 ` Mike Frysinger
2012-02-23 17:40 ` Aneesh V
2012-02-23 23:52 ` Mike Frysinger
2012-02-24 10:30 ` Aneesh V
2012-02-23 14:06 ` [U-Boot] [PATCH v3 2/6] armv7: add appropriate headers for assembly functions Aneesh V
2012-02-23 14:59 ` Mike Frysinger
2012-02-23 14:06 ` [U-Boot] [PATCH v3 3/6] ARM: enable Thumb build Aneesh V
2012-02-23 14:06 ` [U-Boot] [PATCH v3 4/6] armv7: Use -march=armv7-a and thereby enable Thumb-2 Aneesh V
2012-02-23 15:05 ` Mike Frysinger
2012-02-23 17:50 ` Aneesh V
2012-02-23 14:06 ` [U-Boot] [PATCH v3 5/6] omap4+: Avoid using __attribute__ ((__packed__)) Aneesh V
2012-02-23 14:21 ` Tom Rini
2012-02-23 14:56 ` Aneesh V
2012-02-23 15:03 ` Mike Frysinger
2012-02-23 15:03 ` Mike Frysinger
2012-02-23 15:42 ` Aneesh V
2012-02-23 14:06 ` [U-Boot] [PATCH v3 6/6] OMAP4: enable Thumb build Aneesh V
2012-03-08 17:10 ` [U-Boot] [PATCH 1/6] arm: adapt asm/linkage.h from Linux Aneesh V
2012-03-08 17:14 ` Aneesh V
2012-03-08 17:10 ` [U-Boot] [PATCH 2/6] armv7: add appropriate headers for assembly functions Aneesh V
2012-03-08 17:10 ` [U-Boot] [PATCH 3/6] ARM: enable Thumb build Aneesh V
2012-03-08 17:10 ` [U-Boot] [PATCH 4/6] armv7: Use -march=armv7-a and thereby enable Thumb-2 Aneesh V
2012-03-08 17:10 ` [U-Boot] [PATCH 5/6] omap4+: Avoid using __attribute__ ((__packed__)) Aneesh V
2012-03-08 17:10 ` [U-Boot] [PATCH 6/6] OMAP4: enable Thumb build Aneesh V
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F338AAD.8070905@ti.com \
--to=aneesh@ti.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox