On 03/04/12 11:51, Richard Guenther wrote:
> On Tue, Apr 3, 2012 at 12:45 PM, Richard Earnshaw <rearn...@arm.com> wrote:
>> On 03/04/12 10:29, Andrew Haley wrote:
>>> On 04/02/2012 10:06 PM, dann frazier wrote:
>>>> On Fri, Mar 30, 2012 at 06:52:34PM +0100, Richard Earnshaw wrote:
>>>>> On 29/03/12 20:34, dann frazier wrote:
>>>>>> This is an updated version of a patch Debian and Ubuntu are using to
>>>>>> use an alternate linker path for hardfloat binaries. The difference
>>>>>> with this one is that it covers the case where no float flag
>>>>>> was passed in, defaulting to the softfloat path.
>>>>>>
>>>>>> 2012-03-29  dann frazier <dann.fraz...@canonical.com>
>>>>>>
>>>>>>    * config/arm/linux-elf.h: Use alternate linker path
>>>>>>           for hardfloat ABI
>>>>>>
>>>>>> Index: gcc/config/arm/linux-elf.h
>>>>>> ===================================================================
>>>>>> --- gcc/config/arm/linux-elf.h     (revision 185708)
>>>>>> +++ gcc/config/arm/linux-elf.h     (working copy)
>>>>>> @@ -59,14 +59,21 @@
>>>>>>
>>>>>>  #define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
>>>>>>
>>>>>> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
>>>>>> +#define LINUX_DYNAMIC_LINKER_SF "/lib/ld-linux.so.3"
>>>>>> +#define LINUX_DYNAMIC_LINKER_HF "/lib/arm-linux-gnueabihf/ld-linux.so.3"
>>>>>>
>>>>>>  #define LINUX_TARGET_LINK_SPEC  "%{h*} \
>>>>>>     %{static:-Bstatic} \
>>>>>>     %{shared:-shared} \
>>>>>>     %{symbolic:-Bsymbolic} \
>>>>>>     %{rdynamic:-export-dynamic} \
>>>>>> -   -dynamic-linker " GNU_USER_DYNAMIC_LINKER " \
>>>>>> +   %{msoft-float:-dynamic-linker " LINUX_DYNAMIC_LINKER_SF "} \
>>>>>> +   %{mfloat-abi=soft*:-dynamic-linker " LINUX_DYNAMIC_LINKER_SF "} \
>>>>>> +   %{mhard-float:-dynamic-linker " LINUX_DYNAMIC_LINKER_HF "} \
>>>>>> +   %{mfloat-abi=hard:-dynamic-linker " LINUX_DYNAMIC_LINKER_HF "} \
>>>>>> +   %{!mfloat-abi: \
>>>>>> +     %{!msoft-float: \
>>>>>> +       %{!mhard-float:-dynamic-linker " LINUX_DYNAMIC_LINKER_SF "}}} \
>>>>>>     -X \
>>>>>>     %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
>>>>>>     SUBTARGET_EXTRA_LINK_SPEC
>>>>>>
>>>>>
>>>>> Looks to me as though this will break the old Linux ABI.  While we've
>>>>> marked that as deprecated, it hasn't been removed as yet.  So I think
>>>>> this patch either needs to wait until that removal has taken place, or
>>>>> provide the relevant updates to maintain the old ABI support.
>>>>
>>>> Thanks for your review. You're right, this does appear to break the
>>>> old ABI - that was a misunderstanding on my part. I think this fixes
>>>> the problem:
>>>
>>> But what about those of us who are using hard-float but not the
>>> Debian liker path?  It'll break, surely.  This looks to be like
>>> it's Debian-specific.
>>>
>>
>> Are you trying to tell me that some distros are using /lib/ld-linux.so.3
>> directly for hard-float?  Sigh, you distro guys need to start talking to
>> each other, rather than just going of inventing things ...
>>
>> If, so then there's only one way to sort out this mess.
>>
>> /lib/arm-linux-gnueabi/ld-linux.so.3  Location of soft-float loader
>> /lib/arm-linux-gnueabihf/ld-linux.so.3 Location of hard-float loader
>> /lib/ld-linux.so.3 legacy symlink to one of the above.
>>
>> Or something of this nature.
>>
>> All this is outside of GCC's remit though and I'm not in a position to
>> drive any of it through.
>>
>> :-( :-( :-(
> 
> Now, I wonder why the dynamic linker cannot figure out the ABI itself
> by means of using ELF flags or so?
> 

There are no ELF flags for this in executables.  The attributes only
apply to object files and anyway they are too expensive to decode at run
time.

R.

Reply via email to