This is the mail archive of the binutils@sources.redhat.com 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: Move bfd *_pointer_linker_section into elf32-ppc.c


Move some more fields from generic to target specific structures.
This change was of course how I found the elf_object_p tdata problem.

	* elf-bfd.h (struct elf_obj_tdata): Move linker_section_pointers..
	* elf32-ppc.c (struct ppc_elf_obj_tdata): ..to here.  New.
	(ppc_elf_tdata): Define.
	(elf_local_ptr_offsets): Adjust.
	(ppc_elf_mkobject): New function.
	(bfd_elf32_mkobject): Define.

Index: bfd/elf-bfd.h
===================================================================
RCS file: /cvs/src/src/bfd/elf-bfd.h,v
retrieving revision 1.102
diff -u -p -r1.102 elf-bfd.h
--- bfd/elf-bfd.h	7 Jul 2003 15:51:57 -0000	1.102
+++ bfd/elf-bfd.h	8 Jul 2003 07:05:49 -0000
@@ -1202,10 +1202,6 @@ struct elf_obj_tdata
   /* Symbol version references to external objects.  */
   Elf_Internal_Verneed *verref;
 
-  /* A mapping from local symbols to offsets into the various linker
-     sections added.  This is index by the symbol index.  */
-  void **linker_section_pointers;
-
   /* The Irix 5 support uses two virtual sections, which represent
      text/data symbols defined in dynamic objects.  */
   asymbol *elf_data_symbol;
Index: bfd/elf32-ppc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-ppc.c,v
retrieving revision 1.91
diff -u -p -r1.91 elf32-ppc.c
--- bfd/elf32-ppc.c	7 Jul 2003 15:51:57 -0000	1.91
+++ bfd/elf32-ppc.c	8 Jul 2003 07:05:50 -0000
@@ -109,9 +109,32 @@ typedef struct elf_linker_section_pointe
   bfd_boolean written_address_p;
 } elf_linker_section_pointers_t;
 
+struct ppc_elf_obj_tdata
+{
+  struct elf_obj_tdata elf;
+
+  /* A mapping from local symbols to offsets into the various linker
+     sections added.  This is index by the symbol index.  */
+  elf_linker_section_pointers_t **linker_section_pointers;
+};
+
+#define ppc_elf_tdata(bfd) \
+  ((struct ppc_elf_obj_tdata *) (bfd)->tdata.any)
+
 #define elf_local_ptr_offsets(bfd) \
-  ((elf_linker_section_pointers_t **) \
-   (elf_tdata (bfd)->linker_section_pointers))
+  (ppc_elf_tdata (bfd)->linker_section_pointers)
+
+/* Override the generic function because we store some extras.  */
+
+static bfd_boolean
+ppc_elf_mkobject (bfd *abfd)
+{
+  bfd_size_type amt = sizeof (struct ppc_elf_obj_tdata);
+  abfd->tdata.any = bfd_zalloc (abfd, amt);
+  if (abfd->tdata.any == NULL)
+    return FALSE;
+  return TRUE;
+}
 
 /* The PPC linker needs to keep track of the number of relocs that it
    decides to copy as dynamic relocs in check_relocs for each symbol.
@@ -6022,6 +6045,7 @@ ppc_elf_final_write_processing (bfd *abf
 #define elf_backend_plt_header_size	PLT_INITIAL_ENTRY_SIZE
 #define elf_backend_rela_normal		1
 
+#define bfd_elf32_mkobject			ppc_elf_mkobject
 #define bfd_elf32_bfd_merge_private_bfd_data	ppc_elf_merge_private_bfd_data
 #define bfd_elf32_bfd_relax_section		ppc_elf_relax_section
 #define bfd_elf32_bfd_reloc_type_lookup		ppc_elf_reloc_type_lookup

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre


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