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]

[committed] Make is_ppc_elf_target return true for VxWorks files


is_ppc_elf_target returns false for bfd_elf32_powerpc_vxworks_vec,
which causes size_dynamic_sections to skip local dynamic relocations
for VxWorks input files.

This patch adds the missing condition and makes the VxWorks testcases
check for this sort of thing.  Installed as obvious after testing on
i586-vxworks and powerpc-vxworks.

FWIW, I think this is the last VxWorks bugfix I have in the pipeline.

Richard


bfd/
	* elf32-ppc.c (is_ppc_elf_target): Return true if the target is
	bfd_elf32_powerpc_vxworks_vec.

ld/testsuite/
	* ld-i386/vxworks1.ld (.data): New section.
	* ld-i386/vxworks1-lib.s: Add a pointer to a local symbol.
	* ld-i386/vxworks1-lib.rd: Test for the associated reloc.
	* ld-powerpc/vxworks1.ld (.data): New section.
	* ld-powerpc/vxworks1-lib.s: Add a pointer to a local symbol.
	* ld-powerpc/vxworks1-lib.rd: Test for the associated reloc.

diff -udprN ../src.1/bfd/elf32-ppc.c ./bfd/elf32-ppc.c
--- ./bfd/elf32-ppc.c	2006-03-02 08:55:23.000000000 +0000
+++ ./bfd/elf32-ppc.c	2006-03-02 09:25:25.000000000 +0000
@@ -2679,9 +2679,12 @@ static bfd_boolean
 is_ppc_elf_target (const struct bfd_target *targ)
 {
   extern const bfd_target bfd_elf32_powerpc_vec;
+  extern const bfd_target bfd_elf32_powerpc_vxworks_vec;
   extern const bfd_target bfd_elf32_powerpcle_vec;
 
-  return targ == &bfd_elf32_powerpc_vec || targ == &bfd_elf32_powerpcle_vec;
+  return (targ == &bfd_elf32_powerpc_vec
+	  || targ == &bfd_elf32_powerpc_vxworks_vec
+	  || targ == &bfd_elf32_powerpcle_vec);
 }
 
 /* Hook called by the linker routine which adds symbols from an object
diff -udprN ../src.1/ld/testsuite/ld-i386/vxworks1.ld ./ld/testsuite/ld-i386/vxworks1.ld
--- ./ld/testsuite/ld-i386/vxworks1.ld	2006-03-02 08:53:19.000000000 +0000
+++ ./ld/testsuite/ld-i386/vxworks1.ld	2006-03-02 09:29:43.000000000 +0000
@@ -24,4 +24,7 @@ SECTIONS
 
   . = ALIGN (0x400);
   .bss : { *(.bss) *(.dynbss) }
+
+  . = ALIGN (0x400);
+  .data : { *(.data) }
 }
diff -udprN ../src.1/ld/testsuite/ld-i386/vxworks1-lib.rd ./ld/testsuite/ld-i386/vxworks1-lib.rd
--- ./ld/testsuite/ld-i386/vxworks1-lib.rd	2006-03-02 08:53:19.000000000 +0000
+++ ./ld/testsuite/ld-i386/vxworks1-lib.rd	2006-03-02 09:33:02.000000000 +0000
@@ -4,8 +4,9 @@ Relocation section '\.rel\.plt' at offse
 0008140c  .*07 R_386_JUMP_SLOT   00000000   sexternal
 00081410  .*07 R_386_JUMP_SLOT   00080c27   sglobal
 
-Relocation section '\.rel\.dyn' at offset .* contains 3 entries:
+Relocation section '\.rel\.dyn' at offset .* contains 4 entries:
  Offset     Info    Type            Sym\.Value  Sym\. Name
+00081c00  00000008 R_386_RELATIVE *
 00080c03  .*01 R_386_32          00000000   __GOTT_BASE__
 00080c09  .*01 R_386_32          00000000   __GOTT_INDEX__
 00081414  .*06 R_386_GLOB_DAT    00081800   x
diff -udprN ../src.1/ld/testsuite/ld-i386/vxworks1-lib.s ./ld/testsuite/ld-i386/vxworks1-lib.s
--- ./ld/testsuite/ld-i386/vxworks1-lib.s	2006-02-28 07:16:22.000000000 +0000
+++ ./ld/testsuite/ld-i386/vxworks1-lib.s	2006-03-02 09:39:51.000000000 +0000
@@ -25,4 +25,7 @@ sglobal:
 	ret
 	.size	sglobal, .-sglobal
 
+	.data
+	.4byte	slocal
+
 	.comm	x,4,4
diff -udprN ../src.1/ld/testsuite/ld-powerpc/vxworks1.ld ./ld/testsuite/ld-powerpc/vxworks1.ld
--- ./ld/testsuite/ld-powerpc/vxworks1.ld	2006-03-02 08:46:33.000000000 +0000
+++ ./ld/testsuite/ld-powerpc/vxworks1.ld	2006-03-02 09:26:17.000000000 +0000
@@ -24,4 +24,7 @@ SECTIONS
 
   . = ALIGN (0x400);
   .bss : { *(.bss) }
+
+  . = ALIGN (0x400);
+  .data : { *(.data) }
 }
diff -udprN ../src.1/ld/testsuite/ld-powerpc/vxworks1-lib.rd ./ld/testsuite/ld-powerpc/vxworks1-lib.rd
--- ./ld/testsuite/ld-powerpc/vxworks1-lib.rd	2006-03-02 08:46:33.000000000 +0000
+++ ./ld/testsuite/ld-powerpc/vxworks1-lib.rd	2006-03-02 09:29:08.000000000 +0000
@@ -4,8 +4,9 @@ Relocation section '\.rela\.plt' at offs
 0008140c  .*15 R_PPC_JMP_SLOT    00000000   sexternal \+ 0
 00081410  .*15 R_PPC_JMP_SLOT    00080c48   sglobal \+ 0
 
-Relocation section '\.rela\.dyn' at offset .* contains 4 entries:
+Relocation section '\.rela\.dyn' at offset .* contains 5 entries:
  Offset     Info    Type            Sym\.Value  Sym\. Name \+ Addend
+00081c00  00000016 R_PPC_RELATIVE * 00080c44
 00080c0e  .*06 R_PPC_ADDR16_HA   00000000   __GOTT_BASE__ \+ 0
 00080c12  .*04 R_PPC_ADDR16_LO   00000000   __GOTT_BASE__ \+ 0
 00080c16  .*03 R_PPC_ADDR16      00000000   __GOTT_INDEX__ \+ 0
diff -udprN ../src.1/ld/testsuite/ld-powerpc/vxworks1-lib.s ./ld/testsuite/ld-powerpc/vxworks1-lib.s
--- ./ld/testsuite/ld-powerpc/vxworks1-lib.s	2006-03-02 08:46:33.000000000 +0000
+++ ./ld/testsuite/ld-powerpc/vxworks1-lib.s	2006-03-02 09:39:58.000000000 +0000
@@ -32,4 +32,7 @@ sglobal:
 	blr
 	.size	sglobal, .-sglobal
 
+	.data
+	.4byte	slocal
+
 	.comm	x,4,4


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