public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* Fix DT_TEXTREL handling for MIPS VxWorks
@ 2007-04-12 16:56 Richard Sandiford
  2007-04-12 19:03 ` Thiemo Seufer
  0 siblings, 1 reply; 2+ messages in thread
From: Richard Sandiford @ 2007-04-12 16:56 UTC (permalink / raw)
  To: binutils

Last year's MIPS DT_TEXTREL fix means that VxWorks executables with
text relocations against __GOTT_BASE__ or __GOTT_INDEX__ (and nothing
else) no longer get a DT_TEXTREL tag.  This patch adds the same sort
of DT_TEXTREL checks to the code that handles these relocations.

Tested on mips-wrs-vxworks.  OK to install?

Richard


bfd/
	* elfxx-mips.c (mips_elf_calculate_relocation): Set DT_TEXTREL
	when creating a __GOTT_BASE__ or __GOTT_INDEX__ relocation
	in a read-only section.
	(_bfd_mips_elf_check_relocs): Likewise.

ld/testsuite/
	* ld-mips-elf/vxworks1-lib.td: New test.
	* ld-mips-elf/mips-elf.exp: Run it.

Index: bfd/elfxx-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elfxx-mips.c,v
retrieving revision 1.198
diff -u -p -r1.198 elfxx-mips.c
--- bfd/elfxx-mips.c	26 Mar 2007 10:29:35 -0000	1.198
+++ bfd/elfxx-mips.c	12 Apr 2007 16:43:10 -0000
@@ -4275,6 +4275,13 @@ mips_elf_calculate_relocation (bfd *abfd
       outrel.r_info = ELF32_R_INFO (h->root.dynindx, r_type);
       outrel.r_addend = addend;
       bfd_elf32_swap_reloca_out (abfd, &outrel, loc);
+
+      /* If we've written this relocation for a readonly section,
+	 we need to set DF_TEXTREL again, so that we do not delete the
+	 DT_TEXTREL tag.  */
+      if (MIPS_ELF_READONLY_SECTION (input_section))
+	info->flags |= DF_TEXTREL;
+
       *valuep = 0;
       return bfd_reloc_ok;
     }
@@ -6493,6 +6500,10 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 		    return FALSE;
 		}
 	      mips_elf_allocate_dynamic_relocations (dynobj, info, 1);
+	      if (MIPS_ELF_READONLY_SECTION (sec))
+		/* We tell the dynamic linker that there are
+		   relocations against the text segment.  */
+		info->flags |= DF_TEXTREL;
 	    }
 	}
       else if (r_type == R_MIPS_CALL_LO16
Index: ld/testsuite/ld-mips-elf/mips-elf.exp
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/mips-elf.exp,v
retrieving revision 1.41
diff -u -p -r1.41 mips-elf.exp
--- ld/testsuite/ld-mips-elf/mips-elf.exp	2 Nov 2006 15:20:31 -0000	1.41
+++ ld/testsuite/ld-mips-elf/mips-elf.exp	12 Apr 2007 16:43:10 -0000
@@ -21,7 +21,7 @@ if {[istarget "mips*-*-vxworks"]} {
 	{"VxWorks shared library test 1" "-shared -Tvxworks1.ld"
 	 "-mips2" {vxworks1-lib.s}
 	 {{readelf --relocs vxworks1-lib.rd} {objdump -dr vxworks1-lib.dd}
-	  {readelf --symbols vxworks1-lib.nd}}
+	  {readelf --symbols vxworks1-lib.nd} {readelf -d vxworks1-lib.td}}
 	 "libvxworks1.so"}
 	{"VxWorks executable test 1 (dynamic)" \
 	 "tmpdir/libvxworks1.so -Tvxworks1.ld -q --force-dynamic"
Index: ld/testsuite/ld-mips-elf/vxworks1-lib.td
===================================================================
RCS file: ld/testsuite/ld-mips-elf/vxworks1-lib.td
diff -N ld/testsuite/ld-mips-elf/vxworks1-lib.td
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-mips-elf/vxworks1-lib.td	12 Apr 2007 16:43:10 -0000
@@ -0,0 +1,3 @@
+#...
+ 0x0+16 \(TEXTREL\) +0x0
+#pass

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Fix DT_TEXTREL handling for MIPS VxWorks
  2007-04-12 16:56 Fix DT_TEXTREL handling for MIPS VxWorks Richard Sandiford
@ 2007-04-12 19:03 ` Thiemo Seufer
  0 siblings, 0 replies; 2+ messages in thread
From: Thiemo Seufer @ 2007-04-12 19:03 UTC (permalink / raw)
  To: binutils, richard

Richard Sandiford wrote:
> Last year's MIPS DT_TEXTREL fix means that VxWorks executables with
> text relocations against __GOTT_BASE__ or __GOTT_INDEX__ (and nothing
> else) no longer get a DT_TEXTREL tag.  This patch adds the same sort
> of DT_TEXTREL checks to the code that handles these relocations.
> 
> Tested on mips-wrs-vxworks.  OK to install?
> 
> Richard
> 
> 
> bfd/
> 	* elfxx-mips.c (mips_elf_calculate_relocation): Set DT_TEXTREL
> 	when creating a __GOTT_BASE__ or __GOTT_INDEX__ relocation
> 	in a read-only section.
> 	(_bfd_mips_elf_check_relocs): Likewise.
> 
> ld/testsuite/
> 	* ld-mips-elf/vxworks1-lib.td: New test.
> 	* ld-mips-elf/mips-elf.exp: Run it.

Ok.


Thiemo

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2007-04-12 18:14 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-04-12 16:56 Fix DT_TEXTREL handling for MIPS VxWorks Richard Sandiford
2007-04-12 19:03 ` Thiemo Seufer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).