This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: arm-eabi-4.4.3 with gold


This will break.  The .commands and .apps sections will not be
preserved.  It is a known problem.  Unfortunately, this is a design
issue in the garbage collector in gold and it cannot be fixed easily.
You have no choice but to use GNU ld.  Adding -fuse-ld=bfd is not
useful in your case as it seems that the linker is invoked directly.

On Tue, Feb 8, 2011 at 8:03 PM, Qing Chang <changq@gmail.com> wrote:
> Here is what I did to use "-fuse-ld=bfd",
> ====================
> diff --git a/makefile b/makefile
> index 699fcfe..1ea652e 100644
> --- a/makefile
> +++ b/makefile
> @@ -52,7 +52,7 @@ CPPFLAGS := -fno-exceptions -fno-rtti
> -fno-threadsafe-statics
>  ASMFLAGS := -DASSEMBLY
>  LDFLAGS :=
>
> -CFLAGS += -ffunction-sections -fdata-sections
> +CFLAGS += -ffunction-sections -fdata-sections -fuse-ld=bfd
>  LDFLAGS += -gc-sections --no-enum-size-warning
>
>  # top level rule
> ====================
> Here is the piece of link script of PROVIDE_HIDDEN and KEEP usage,
> ====================
>         .rodata : {
>                 *(.rodata .rodata.* .gnu.linkonce.r.*)
>                 . = ALIGN(4);
>                 __commands_start = .;
>                 KEEP (*(.commands))
>                 __commands_end = .;
>                 . = ALIGN(4);
>                 __apps_start = .;
>                 KEEP (*(.apps))
>                 __apps_end = .;
>                 . = ALIGN(4);
>                 __rodata_end = . ;
>         }
>         .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
>         PROVIDE_HIDDEN (__exidx_start = .);
>         .ARM.exidx   : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
>         PROVIDE_HIDDEN (__exidx_end = .);
> ====================
> On Tue, Feb 8, 2011 at 9:55 PM, Doug Kwan (Ãö®¶¼w) <dougkwan@google.com> wrote:
>>
>> why -fuse-ld=bfd does not work? Do you invoke the linker directly?
>>
>> Could you give me an example in which PROVIDE_HIDDEN not long works
>> with the new tool-chain but does with the old one?
>>
>> Thanks
>>
>> -Doug
>>
>> On Tue, Feb 8, 2011 at 7:48 PM, Qing Chang <changq@gmail.com> wrote:
>> >
>> > The section was created by myself.
>> > Seems "-fuse-ld=bfd" won't make PROVIDE_HIDDEN nor KEEP work as well.
>> > The only working way for me is to hardcode in my makefile to
>> > use arm-eabi-ld.bfd explicitly
>> >
>> > On Tue, Feb 8, 2011 at 5:03 PM, Doug Kwan (Ãö®¶¼w) <dougkwan@google.com>
>> > wrote:
>> >>
>> >> KEEP is totally broken.  What section do you need?  You can fall back
>> >> on ld by adding -fuse-ld=bfd in gcc's linking step.
>> >>
>> >> On Tue, Feb 8, 2011 at 2:58 PM, Qing Chang <changq@gmail.com> wrote:
>> >> > Dear all,
>> >> > In the latest arm-eabi-4.4.3 toolchain of Android repo, gold was
>> >> > installed/used as default arm-eabi-ld, instead of bfd ld.
>> >> >
>> >> > However, compared with arm-eabi-4.4.0, with this new 4.4.3 gold,
>> >> > seems
>> >> > some
>> >> > key words are not handled in the same way as before. For example,
>> >> >   * PROVIDE/PROVIDE_HIDDEN won't define symbol any more
>> >> >   * KEEP won't keep sections during garbage collections any more
>> >> >
>> >> > Do we need certain extra option/flag to re-enable these when using
>> >> > 4.4.3 arm-eabi-ld (gold)?
>> >> > Thanks,
>> >> > Qing
>> >
>> >
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]