This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] gold: Add boiler-plate code for ARM target.
Patch commited with change.
2009/5/28 Doug Kwan (Ãö®¶¼w) <dougkwan@google.com>:
> 2009/5/28 Ian Lance Taylor <iant@google.com>:
>> "Doug Kwan (Ãö®¶¼w)" <dougkwan@google.com> writes:
>>
>>> 009-05-28 Doug Kwan <dougkwan@google.com>
>>>
>>> ChangeLog
>>> * configure.ac: Support gold for target arm*-*-eabi.
>>> * configure: Regenerate.
>>>
>>> gold/ChangeLog
>>> * Makefile.am (TARGETSOURCES): Add arm.cc.
>>> (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
>>> * Makefile.in: Regenerate.
>>> * arm.cc: New file.
>>> * configure.tgt: Add arm*-*-eabi target.
>>
>> That should be 2009 in the first line of the ChangeLog entry.
>
> Yes, that was a copy-and-paste error of mine.
>
>>
>>> case "${target}" in
>>> - i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-*)
>>> + i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-eabi)
>>> configdirs="`echo " ${configdirs} " | sed -e 's/ ld / gold /'`"
>>
>> You should match "arm*-*-*" here, as the other processors do. Otherwise
>> you won't match arm-linux-gnu, or arm-ecos-elf, etc. I know that you
>> don't support all the ARM bits yet, but that's OK.
>
> Yes, that was the reason. Will change as suggested.
>
>>> + // Return whether SYM is defined by the ABI.
>>> + bool
>>> + do_is_defined_by_abi(Symbol* sym) const
>>> + { return strcmp(sym->name(), "___tls_get_addr") == 0; }
>>
>> I think that should be __tls_get_addr (two underscores, not three). The
>> x86 does use ___tls_get_addr for weird compatibility reasons, but I
>> think the ARM always uses __tls_get_addr.
>>
>>> Index: gold/configure.tgt
>>> ===================================================================
>>> RCS file: /cvs/src/src/gold/configure.tgt,v
>>> retrieving revision 1.6
>>> diff -u -u -p -r1.6 configure.tgt
>>> --- gold/configure.tgt 24 Mar 2009 00:31:28 -0000 1.6
>>> +++ gold/configure.tgt 28 May 2009 21:43:39 -0000
>>> @@ -104,6 +104,13 @@ powerpc64-*)
>>> targ_big_endian=true
>>> targ_extra_big_endian=false
>>> ;;
>>> +arm*-*-eabi)
>>> + targ_obj=arm
>>> + targ_machine=EM_ARM
>>> + targ_size=32
>>> + targ_big_endian=false
>>> + targ_extra_big_endian=true
>>> + ;;
>
>> Just match arm* here too. Also match armel*. Also add a separate case
>> for armeb* which sets targ_big_endian to true.
>
> That's a good sugestion. Will change as suggested.
>
> Thanks for reviewing. Still more patches to come :-)
>
> -Doug
>