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: [GOLD] PowerPC TLS fixes


On Sun, Sep 9, 2012 at 7:42 AM, Alan Modra <amodra@gmail.com> wrote:
>
>         * output.h (Output_data_got::add_global_tls, add_local_tls,
>         add_local_tls_pair): New functions.
>         (Output_data_got::add_local_pair_with_rel): Remove second
>         reloc param.  Expand comment.
>         (Output_data_got::Got_entry::write): Add got_index param.
>         * output.cc (Output_data_got::add_global_tls, add_local_tls,
>         add_local_tls_pair): New functions.
>         (Output_data_got::Got_entry::write): Handle tls symbols
>         with use_plt_offset_ set specially.
>         (Output_data_got::add_local_pair_with_rel): Only one reloc.
>         (Output_data_got::do_write): Replace iterator with index, pass
>         index to entry write function.
>         * target.h (Target::tls_offset_for_local, tls_offset_for_global,
>         do_tls_offset_for_local, do_tls_offset_for_global): New functions.
>         * arm.cc (Target_arm::Scan::local): Update add_local_pair_with_rel
>         call.
>         * i386.cc (Target_i386::Scan::local): Likewise.
>         * sparc.cc (Target_sparc::Scan::local): Likewise.
>         * x86_64.cc (Target_x86_64::Scan::local): Likewise.

Unimportant, but I've always been of the opinion that it's OK to just
write "Update all calls" in the change to the function definition.

>         * powerpc.cc (Target_powerpc::do_tls_offset_for_local,
>         do_tls_offset_for_global): New functions.
>         (Target_powerpc::Scan::local): Correct TLS relocations and got
>         entry values.
>         (Target_powerpc::Scan::global): Don't emit unnecessary
>         dynamic relocations on TLS GOT entries.

>    // Add a pair of entries for a local symbol to the GOT, and add
> -  // dynamic relocations of type R_TYPE_1 and R_TYPE_2, respectively.
> +  // a dynamic relocations of type R_TYPE using the section symbol of
> +  // the output section to which input section SHNDX maps, on the first.
> +  // The first got entry will have a value of zero, the second the
> +  // value of the local symbol.

s/dynamic relocations/dynamic relocation/


>      // Whether to use the PLT offset of the symbol if it has one.
> +    // For TLS symbols, whether to offset the symbol value.
>      bool use_plt_offset_ : 1;

If we're going to change the meaning of the field, let's rename it.
Otherwise the uses can be very confusing.  I suggest simply
use_plt_or_tls_offset_.


>  // Add a pair of entries for a local symbol to the GOT, and add
> -// dynamic relocations of type R_TYPE_1 and R_TYPE_2, respectively.
> -// If R_TYPE_2 == 0, add the second entry with no relocation.
> +// a dynamic relocations of type R_TYPE using the section symbol of
> +// the output section to which input section SHNDX maps, on the first.
> +// The first got entry will have a value of zero, the second the
> +// value of the local symbol.

s/dynamic relocations/dynamic relocation/

> +  // Return the offset to use for the GOT_INDX'th got entry which is
> +  // for a local tls symbol specified by OBJECT, SYMNDX

Missing period at end of comment.

> +  // Return the offset to use for the GOT_INDX'th got entry which is
> +  // for global tls symbol GSYM

Missing period here too.

This is OK with those changes.

Thanks.

Ian


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