This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [GOLD][PATCH] Fix ARM backend's handling of protected symbol in a DSO
- From: Ian Lance Taylor <iant at google dot com>
- To: Doug Kwan (éæå) <dougkwan at google dot com>
- Cc: binutils <binutils at sources dot redhat dot com>
- Date: Wed, 14 Mar 2012 10:00:21 -0700
- Subject: Re: [GOLD][PATCH] Fix ARM backend's handling of protected symbol in a DSO
- References: <CAH9SEo7=rMA+zZDdmoUDu+LydKAZ3XYMkBvYB_h8STP_=DQaCQ@mail.gmail.com>
"Doug Kwan (éæå)" <dougkwan@google.com> writes:
> 2012-03-14 Doug Kwan <dougkwan@google.com>
>
> * gold/arm.cc (Target_arm::Scan::global): Generate R_ARM_GLOB_DAT
> dynamic relocations for protected symbols in shared objects.
>
> Index: gold/arm.cc
> ===================================================================
> RCS file: /cvs/src/src/gold/arm.cc,v
> retrieving revision 1.146
> diff -u -u -p -r1.146 arm.cc
> --- gold/arm.cc 3 Feb 2012 20:01:01 -0000 1.146
> +++ gold/arm.cc 14 Mar 2012 08:44:14 -0000
> @@ -8314,7 +8314,9 @@ Target_arm<big_endian>::Scan::global(Sym
> Reloc_section* rel_dyn = target->rel_dyn_section(layout);
> if (gsym->is_from_dynobj()
> || gsym->is_undefined()
> - || gsym->is_preemptible())
> + || gsym->is_preemptible()
> + || (gsym->visibility() == elfcpp::STV_PROTECTED
> + && parameters->options().shared()))
> got->add_global_with_rel(gsym, GOT_TYPE_STANDARD,
> rel_dyn, elfcpp::R_ARM_GLOB_DAT);
> else
Usually tests for whether to generate a dynamic reloc should check
parameters->options().output_is_position_independent() rather than
parameters->options().shared(). The difference is that the former is
also true for -pie.
Ian