Questions about RedHat/Fedora - ld dynamic linker hash style
Andrew Haley
aph at redhat.com
Wed Jan 28 12:52:56 PST 2009
Andrew Haley wrote:
> Kelly O'Hair wrote:
>
>> I need some advice or information, figured this alias might be the
>> right place to ask, probably lots of gcc/ld experts listing in here. ;^)
>>
>> Fedora (RedHat?) seems to have a different default dynamic linker hash
>> style,
>> I think basically it is:
>> ld --hash-style=gnu ..
>>
>> So without using one of:
>> --hash-style=both or --hash-style=sysv
>>
>> The bits created won't run on systems that don't support this new hash
>> style, like SuSE 10.
>>
>> We had planned on changing our formal JDK7 builds to Fedora 9 but
>> ran into this problem, making our built bits less portable than we
>> would like. We need to resolve this, or change our build system
>> choice.
>>
>> I'd like to just add one of the options to the link lines in the
>> OpenJDK Makefiles, but I suspect I need to be careful to only add
>> the option when the Linux system doing the build needs it.
>>
>> Anybody have any ideas on how to deal with this?
>> I suppose if we had a './configure' step it could be figured out
>> there, but alas, we don't.
>>
>> Or, can you configure gcc/ld on a system to have a different default
>> hash style?
>
> You can do that.
>
> $ gcc -dumpspecs > specfile
> $ sed -i 's/hash-style=gnu/hash-style=both/' specfile
> $ gcc -specs=specfile hello.c
>
> This will work regardless of whether the gcc you have defaults to
> hash-style=gnu.
Ahh, no. That will work but it's unnecessarily nasty.
Try something like this instead:
if ( gcc -dumpspecs | grep hash-style=gnu > /dev/null )
then
CC="gcc -Wl,-hash-style=both"
else
CC=gcc
fi
Andrew.
More information about the porters-dev
mailing list