LDSO_GNU_HASH_SUPPORT breaks cross-compilation

Carmelo AMOROSO carmelo.amoroso at st.com
Wed Feb 6 18:56:38 UTC 2008


Bernhard Fischer wrote:
> On Wed, Nov 07, 2007 at 09:33:21PM +0100, Bernhard Fischer wrote:
>   
>> On Wed, Nov 07, 2007 at 07:55:35PM +0000, Denys Vlasenko wrote:
>>     
>>> On Wednesday 07 November 2007 15:14, carmelo at uclibc.org wrote:
>>>       
>>>> +config LDSO_GNU_HASH_SUPPORT
>>>> +	bool "Enable GNU hash style support"
>>>> +	depends on HAVE_SHARED
>>>> +	default n
>>>> +	help
>>>> +	  Newest binutils support a new hash style named GNU-hash. The dynamic
>>>> +	  linker will use the new GNU-hash section (.gnu.hash) for symbol lookup 
>>>> +	  if present into the ELF binaries, otherwise it will use the old SysV 
>>>> +	  hash style (.hash). This ensures that it is completely backward compatible.
>>>> +	  Further, being the hash table implementation self-contained into each
>>>> +	  executable and shared libraries, objects with mixed hash style can
>>>> +	  peacefully coexist in the same process.
>>>> +	  
>>>> +	  If you want to use this new feature, answer Y  
>>>> +
>>>>         
>>> If I would read this help text, I'd wonder whether this
>>> new GNU style hash is actually better than old way, and why.
>>> Is it smaller? faster? or what...
>>>       
>> One very visible effect introduced by it is that cross-compilation is
>> broken now. Unpleasant.
>>
>> Reverting locally.
>>     
>
> Hi Carmelo,
>
> Do you intend to fix this anytime soon?
>
> Your check if ld supports --hash-style=gnu is not working (since i'm
> about to configure or install_dev and don't have a proper cross-ld yet):
>   
cross ld (as well as all binutils) can be built without relying on 
uclibc at all.
anyway....
> make[1]: Entering directory
> `/there/toolchain_build_arm_nofpu/uClibc'
> install -d include/bits
> /usr/bin/make -j1 -C extra/config conf
>   
this step use host gcc.. and my x86 ld doesn't support --hash-style but 
this is not a problem at this
stage.
> /bin/sh:
> /there/build_arm_nofpu/staging_dir/usr/bin/arm-linux-uclibcgnueabi-gcc: No such file or directory
> ./../Rules.mak:465: *** Your binutils don't support --hash-style option, while you want to use it.  Stop.
>  make[1]: *** [extra/config/conf] Error 2
>
>   
The --hash-style is passed to $(LD) that should be your cross ld ( if 
correctly defined CROSS or CROSS_COMPILER_PREFIX...
but I'm sure you perfectly know this) and not to host ld.

I don't see anything wrong... but if you have a better idea... or a 
better explanation, please advice.
I don't use buildroot.

Carmelo

> Same for e.g. install_dev.
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://busybox.net/cgi-bin/mailman/listinfo/uclibc
>
>   




More information about the uClibc mailing list