This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: __sync_sychronize on ARM
On 01/30/2012 05:26 PM, Jon Masters wrote:
>
> On Mon, 2012-01-30 at 08:50 +0000, Ramana Radhakrishnan wrote:
>
>> Therefore I'm assuming this is a breakage you face when building for
>> armv5te
>
> It is indeed. Thanks for noting that.
>
>>> The icu package contains a direct call to __sync_sychronize, especially
>>> in the iotest test cases. I believe that this compiles fine on x86
>>> because there is no function call. However, on ARM, the code fails to
>>> link because the __sync_synchronize function is HIDDEN and not exported
>>> (or so goes my understanding - is that correct?).
>>
>> No, the HIDDEN shouldn't cause a link failure in this case - you
>> should be able to pull this
>> in when you link against the static libgcc where this should be defined.
>>
>> I don't know what your linker command line is so maybe that's a place
>> to start investigating from.
There has been a bug in the past where
/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.6.1/libgcc_s.so was not a
linker script, but a shared library or a symlink. That bug definitely
would cause the problem you're seeing.
libgcc_s.so must be a script.
You can get a linker map with the option -Wl,-Map,mapfile
This would be very useful.
> Thanks! You're the second person to suggest that, so I'll look some
> more. Could you let me know about the correct function name, above?
The official documented builtin is __sync_synchronize ()
Andrew.