[GOLD][PATCH] Fix ARM backend's handling of protected symbol in a DSO

Doug Kwan (關振德) dougkwan@google.com
Wed Mar 14 08:56:00 GMT 2012


Hi

    This fixes two regressions in the gold testsuite.  Tested natively
on arm-linux-gnueabi.

-Doug

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.
-------------- next part --------------
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


More information about the Binutils mailing list