OCTYPE HTML PUBLIC "-//W3C//DTD HTML//EN"> elf32 support for ia64
d>[Date Prev] [Date Next]
Index Nav: [Date Index] [Subject Index] [Author I] [Thread Index]
Message Nav: [Thread Prev] [Thread Next]

elf32 support for ia64



This is the first of three binutils patches I am submng to support
the elf32 format on IA64.  The HP-UX operating sytem on IA64 will
support both the elf32 and elf64 object formso we need support for
both in binutils and I would like to get changes for this support
checked into the opensource binutilee.

This change includes changes to Makefile.in to create elf32-ia64.lo in
addition to elf64-ia64.lo and to create both elfa64.c and
elf64-ia64.c from a single file (similar to how elf32-target.h and
elf64-target.h are created from elfxx-target.h)he last diff in this
set is a diff between the old elf64-ia64.c and my new elfxx-ia64.c but I
don't know how to represent reng elf64-ia64.c to elfxx-ia64.c so I
am assuming that if someone reviews these changes and checks them in
they can just do trenaming manually.

Please let me know if you have any questions or issues with these
changes.

Steve Ellcey
sje@cup.hp.com
* src.orig/bfd/ChangeLog	Fri Oct 27 10:01:58 2000
--- src/bfd/ChangeLog	Mon Oct 30 09:47:45 2000
***************
*** 1,3 ***- 1,10 ----
+ Mon Oct 30 08:19:10 PST 2000  Steve Ellcey <sje@cup.hp.com>
+ 
+         * Makefile.in: make elf32-ia64.d elf64-ia64.c derived objects
+         from elfxx-ia64.c. Add depenency rules for making elf32-ia64.lo.
+         * elf64-.c: Deleted
+         * elfxx-ia64.c: New file, paramaterized version of elf64-ia64.c.
+ 
  2000-10-20  Jakub Jelinek  <j@redhat.com>
  
  	* elf32-sparc.c (elf32_sparc_merge_private_bfd_data,
*** src.orig/bfd/Makefile.in	Fri Oct 27 10:01:58 
--- src/bfd/Makefile.in	Fri Oct 27 10:41:49 2000
***************
*** 309,314 ****
--- 309,315 ----
  	elf32-i386.lo \
  	eli860.lo \
  	elf32-i960.lo \
+ 	elf32-ia64.lo \
  	elf32-m32r.lo \
  	elf32-m68hc11.lo \
  	elf32-m68hc12.lo \
*************** 1119,1124 ****
--- 1120,1136 ----
  	rm -f elf64-target.h
  	sed -e s/NN/64/g < $(srcdir)/elfxx-target.h > elf64-ta.new
  	mv -f elf64-target.new elf64-target.h
+ 
+ elf32-ia64.c : elfxx-ia64.c
+ 	rm -f elf32-ia64.c
+ 	sed -e s/NN/32/g <srcdir)/elfxx-ia64.c > elf32-ia64.new
+ 	mv -f elf32-ia64.new elf32-ia64.c
+ 
+ elf64-ia64.c : elfxx-ia64.c
+ 	rm -f elf664.c
+ 	sed -e s/NN/64/g < $(srcdir)/elfxx-ia64.c > elf64-ia64.new
+ 	mv -f elf64-ia64.new elf64-ia64.c
+ 
  $(BFD_LIB$(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
  $(BFD_MACHINES): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
  $(BFD_BACKENDS): $(BFD_H)9jĀ:FD_DEPS) $(LOC*
--- 1516,1525 ----
    $(INCDIR)/elf/common.h $(INCDIR)/elf/inal.h $(INCDIR)/elf/external.h \
    $(INCDIR)/bfdlink.h $(INCDIR)/elf/i960.h $(INCDIR)/elf/reloc-macros.h \
    elf32-target elf32-ia64.lo: elf32-ia64.c $(INCDIR)/filenames.h elf-bfd.h \
+   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/external.h \
+   $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \
+   $(INCDIR)/elf/reloc-macros.h elf32-et.h
  elf32-m32r.lo: elf32-m32r.c $(INCDIR)/filenames.h elf-bfd.h \
    $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(IR)/elf/external.h \
    $(INCDIR)/bfdlink.h $(INCDIR)/elf/m32r.h $(INCDIR)/elf/reloc-macros.h \
*** src.orig/bfd/elf64-ia64.i Oct 27 10:02:00 2000
--- src/bfd/elfxx-ia64.c	Fri Oct 27 16:30:06 2000
***************
*** 67,79 ****
     of the place a ol or expression got allocated to. This is done via hash
     tables that store entries of the following type.  */
  
! strulf64_ia64_dyn_sym_info
  {
    /* The addend for which this entry is relevant.  */
    bfd_vma addend;
  
    /* Next addendthe list.  */
!   struct elf64_ia64_dyn_sym_info *next;
  
    bfd_vma got_offset;
    bfd_vma fptr_offset;
--- 67,79 ----
 of the place a symbol or expression got allocated to. This is done via hash
     tables that store entries of the following .  */
  
! struct elfNN_ia64_dyn_sym_info
  {
    /* The addend for which this entry is relevant.  */
    bfd_vma addend;
   /* Next addend in the list.  */
!   struct elfNN_ia64_dyn_sym_info *next;
  
    bfd_vma got_offset;
    bfd_vma fptr_offse**************
*** 86,94 ****
    
    /* Used to count non-got, non-plt relocations for delayed sizing
       of relocationtions.  */
!   struct elf64_ia64_dyn_reloc_entry
    {
!     struct elf64_ia64_dyn_reloc_entry *next;
      asection *srel;
  int type;
      int count;
--- 86,94 ----
    
    /* Used to count non-got, non-plt relocations for delayed sizing
      relocation sections.  */
!   struct elfNN_ia64_dyn_reloc_entry
    {
!     struct elfNN_ia64_dyn_reloc_entry *next;
      ason *srel;
      int type;
      int count;
***************
*** 108,132 ****
    unsigned want_pltoff : 1;
  };
  
! struct e_ia64_local_hash_entry
  {
    struct bfd_hash_entry root;
!   struct elf64_ia64_dyn_sym_info *info;
  };
  
! struct elf64__local_hash_table
  {
    struct bfd_hash_table root;
    /* No additional fields for now.  */
  };
  
! struct elf64_ia64_lhash_entry
  {
    struct elf_link_hash_entry root;
!   struct elf64_ia64_dyn_sym_info *info;
  };
  
! struct elf64_ia64_liash_table
  {
    /* The main hash table */
    struct elf_link_hash_table root;
--- 108,132 ----
    unsigned want_pltoff :  };
  
! struct elfNN_ia64_local_hash_entry
  {
    struct bfd_hash_entry root;
!   struct elfNN_ia64_dyn_sym_info *info;
   
! struct elfNN_ia64_local_hash_table
  {
    struct bfd_hash_table root;
    /* No additional fields for now.  */
  };
  truct elfNN_ia64_link_hash_entry
  {
    struct elf_link_hash_entry root;
!   struct elfNN_ia64_dyn_sym_info *info;
  };
  
ruct elfNN_ia64_link_hash_table
  {
    /* The main hash table */
    struct elf_link_hash_table root;
***************
*** 178 ****
  
    bfd_size_type minplt_entries;	/* number of minplt entries */
  
!   struct elf64_ia64_local_hash_table loc_haable;
  };
  
! #define elf64_ia64_hash_table(p) \
!   ((struct elf64_ia64_link_hash_table *) ((p)->hash))
  
! static bfloc_status_type elf64_ia64_reloc
    PARAMS ((bfd *abfd, arelent *reloc, asymbol *sym, PTR data,
  	   asection *input_sectibfd *output_bfd, char **error_message));
  static reloc_howto_type * lookup_howto
    PARAMS ((unsigned int rtype));
! statiloc_howto_type *elf64_ia64_reloc_type_lookup
    PARAMS ((bfd *abfd, bfd_reloc_code_real_type bfd_code));
! static void elf664_info_to_howto
!   PARAMS ((bfd *abfd, arelent *bfd_reloc, Elf64_Internal_Rela *elf_reloc));
! static boolean elf64_ia64_r_section
    PARAMS((bfd *abfd, asection *sec, struct bfd_link_info *link_info,
  	  boolean *again));
! static boolean elf664_section_from_shdr
!   PARAMS ((bfd *, Elf64_Internal_Shdr *, char *));
! static boolean elf64_ia64_fake_sections
!   PARA(bfd *abfd, Elf64_Internal_Shdr *hdr, asection *sec));
! static boolean elf64_ia64_add_symbol_hook
    PARAMS ((bfd *abfd, st bfd_link_info *info, const Elf_Internal_Sym *sym,
  	   const char **namep, flagword *flagsp, asection **secp,
  	   bfd_vvalp));
! static int elf64_ia64_additional_program_headers
    PARAMS ((bfd *abfd));
! static boolean elf64_ia64_is_local_laname
    PARAMS ((bfd *abfd, const char *name));
! static boolean elf64_ia64_dynamic_symbol_p
    PARAMS ((struct elf_link_hentry *h, struct bfd_link_info *info));
! static boolean elf64_ia64_local_hash_table_init
!   PARAMS ((struct elf64_ia64_locash_table *ht, bfd *abfd,
  	   new_hash_entry_func new));
! static struct bfd_hash_entry *elf64_ia64_new_loc_hash_entry
   AMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
  	   const char *string));
! static struct bfd_hash_entryf64_ia64_new_elf_hash_entry
    PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
  	   const char *strin
! static struct bfd_link_hash_table *elf64_ia64_hash_table_create
    PARAMS ((bfd *abfd));
! static struct elf64_ia64_locash_entry *elf64_ia64_local_hash_lookup
!   PARAMS ((struct elf64_ia64_local_hash_table *table, const char *string,
  	   boo create, boolean copy));
! static void elf64_ia64_dyn_sym_traverse
!   PARAMS ((struct elf64_ia64_link_hash_table *ia64_info	   boolean (*func)(struct elf64_ia64_dyn_sym_info *, PTR),
  	   PTR info));
! static boolean elf64_ia64_create_dynamic_secs
    PARAMS ((bfd *abfd, struct bfd_link_info *info));
! static struct elf64_ia64_dyn_sym_info * get_dyn_sym_info
!   PARAMstruct elf64_ia64_link_hash_table *ia64_info,
  	   struct elf_link_hash_entry *h,
  	   bfd *abfd, const Elf_Internal_Rela , boolean create));
  static asection *get_got
    PARAMS ((bfd *abfd, struct bfd_link_info *info,
! 	   struct elf64_ia64_lhash_table *ia64_info));
  static asection *get_fptr
    PARAMS ((bfd *abfd, struct bfd_link_info *info,
! 	   struct elf64__link_hash_table *ia64_info));
  static asection *get_pltoff
    PARAMS ((bfd *abfd, struct bfd_link_info *info,
! 	   strucf64_ia64_link_hash_table *ia64_info));
  static asection *get_reloc_section
!   PARAMS ((bfd *abfd, struct elf64_ia64_link_htable *ia64_info,
  	   asection *sec, boolean create));
  static boolean count_dyn_reloc
!   PARAMS ((bfd *abfd, struct elfa64_dyn_sym_info *dyn_i,
  	   asection *srel, int type));
! static boolean elf64_ia64_check_relocs
    PARAMS ((bfd *abfd, 9jĀ:ctfd_link_infonal_Rela *relocs));
! static boolean elf64_ia64_adjust_dynamic_sl
    PARAMS ((struct bfd_link_info *info, struct elf_link_hash_entry *h));
  static unsigned long global_sym_index
    PARA(struct elf_link_hash_entry *h));
  static boolean allocate_fptr
!   PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR dat
  static boolean allocate_global_data_got
!   PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
  static boolean cate_global_fptr_got
!   PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
  static boolean allocate_local_got
!  AMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
  static boolean allocate_pltoff_entries
!   PARAMS ((struct elf64_9jĀ:_d_sym_info *dplt_entries
!   PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, data));
  static boolean allocate_plt2_entries
!   PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
  static boolallocate_dynrel_entries
!   PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
! static boolean elf64_ia64_size_dyn_sections
    PARAMS ((bfd *output_bfd, struct bfd_link_info *info));
! static bfd_reloc_status_type elf64_ia64_install_valu  PARAMS ((bfd *abfd, bfd_byte *hit_addr, bfd_vma val, unsigned int r_type));
! static void elf64_ia64_install_dyn_reloc
   AMS ((bfd *abfd, struct bfd_link_info *info, asection *sec,
  	   asection *srel, bfd_vma offset, unsigned int type,
  	   ldynindx, bfd_vma addend));
  static bfd_vma set_got_entry
    PARAMS ((bfd *abfd, struct bfd_link_info *info,
! 	   struct e_ia64_dyn_sym_info *dyn_i, long dynindx,
  	   bfd_vma addend, bfd_vma value, unsigned int dyn_r_type));
  static bfd_vma setr_entry
    PARAMS ((bfd *abfd, struct bfd_link_info *info,
! 	   struct elf64_ia64_dyn_sym_info *dyn_i,
  	   bfd_vma valu
  static bfd_vma set_pltoff_entry
    PARAMS ((bfd *abfd, struct bfd_link_info *info,
! 	   struct elf64_ia64_dyn_sym_info _i,
  	   bfd_vma value, boolean));
! static boolean elf64_ia64_final_link
    PARAMS ((bfd *abfd, struct bfd_link_info *inf
! static boolean elf64_ia64_relocate_section
    PARAMS ((bfd *output_bfd, struct bfd_link_info *info, bfd *input_bfd,
  	 ection *input_section, bfd_byte *contents,
  	   Elf_Internal_Rela *relocs, Elf_Internal_Sym *local_syms,
  	   asection **l_sections));
! static boolean elf64_ia64_finish_dynamic_symbol
    PARAMS ((bfd *output_bfd, struct bfd_link_info *info,
  	truct elf_link_hash_entry *h, Elf_Internal_Sym *sym));
! static boolean elf64_ia64_finish_dynamic_sections
    PARAMS ((bfd d, struct bfd_link_info *info));
! static boolean elf64_ia64_set_private_flags
    PARAMS ((bfd *abfd, flagword flags));
! sc boolean elf64_ia64_copy_private_bfd_data
    PARAMS ((bfd *ibfd, bfd *obfd));
! static boolean elf64_ia64_merge_private_bfta
    PARAMS ((bfd *ibfd, bfd *obfd));
! static boolean elf64_ia64_print_private_bfd_data
    PARAMS ((bfd *abfd, PTR ptr))
  
--- 140,278 ----
  
    bfd_size_type minplt_entries;	/* number of minplt entries */
  
!   struct elfNN_ia64_local_hasble loc_hash_table;
  };
  
! #define elfNN_ia64_hash_table(p) \
!   ((struct elfNN_ia64_link_hash_table *) ((p)->hash))
 static bfd_reloc_status_type elfNN_ia64_reloc
    PARAMS ((bfd *abfd, arelent *reloc, asymbol *sym, PTR data,
  	   asectionput_section, bfd *output_bfd, char **error_message));
  static reloc_howto_type * lookup_howto
    PARAMS ((unsigned int rt);
! static reloc_howto_type *elfNN_ia64_reloc_type_lookup
    PARAMS ((bfd *abfd, bfd_reloc_code_real_type bfd_code));
! st void elfNN_ia64_info_to_howto
!   PARAMS ((bfd *abfd, arelent *bfd_reloc, ElfNN_Internal_Rela *elf_reloc));
! static booleafNN_ia64_relax_section
    PARAMS((bfd *abfd, asection *sec, struct bfd_link_info *link_info,
  	  boolean *again));
! statiolean elfNN_ia64_section_from_shdr
!   PARAMS ((bfd *, ElfNN_Internal_Shdr *, char *));
! static boolean elfNN_ia64_fake_secs
!   PARAMS ((bfd *abfd, ElfNN_Internal_Shdr *hdr, asection *sec));
! static boolean elfNN_ia64_add_symbol_hook
    PARAMS d *abfd, struct bfd_link_info *info, const Elf_Internal_Sym *sym,
  	   const char **namep, flagword *flagsp, asection **sec 	   bfd_vma *valp));
! static int elfNN_ia64_additional_program_headers
    PARAMS ((bfd *abfd));
! static boolean elfNN_ias_local_label_name
    PARAMS ((bfd *abfd, const char *name));
! static boolean elfNN_ia64_dynamic_symbol_p
    PARAMS ((strelf_link_hash_entry *h, struct bfd_link_info *info));
! static boolean elfNN_ia64_local_hash_table_init
!   PARAMS ((struct N_ia64_local_hash_table *ht, bfd *abfd,
  	   new_hash_entry_func new));
! static struct bfd_hash_entry *elfNN_ia64_new_loc__entry
    PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
  	   const char *string));
! static struct hash_entry *elfNN_ia64_new_elf_hash_entry
    PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
  	   conhar *string));
! static struct bfd_link_hash_table *elfNN_ia64_hash_table_create
    PARAMS ((bfd *abfd));
! static struct e_ia64_local_hash_entry *elfNN_ia64_local_hash_lookup
!   PARAMS ((struct elfNN_ia64_local_hash_table *table, const char *str
  	   boolean create, boolean copy));
! static void elfNN_ia64_dyn_sym_traverse
!   PARAMS ((struct elfNN_ia64_link_hash_ta9jĀ:*i4_info,
! 	 info *, PTR),
  	   PTR info));
! static boolean elfNN_ia64_creaynamic_sections
    PARAMS ((bfd *abfd, struct bfd_link_info *info));
! static struct elfNN_ia64_dyn_sym_info * get_dyn_sym_
!   PARAMS ((struct elfNN_ia64_link_hash_table *ia64_info,
  	   struct elf_link_hash_entry *h,
  	   bfd *abfd, const Elf_rnal_Rela *rel, boolean create));
  static asection *get_got
    PARAMS ((bfd *abfd, struct bfd_link_info *info,
! 	   strucfNN_ia64_link_hash_table *ia64_info));
  static asection *get_fptr
    PARAMS ((bfd *abfd, struct bfd_lin_i, PTR data));
  sc boolean allocate_global_fptr_got
!   PARAMS ((struct elfNN_ia64_dyn_sym_info *dyn_i, PTR data));
  static boolean allocateal_got
!   PARAMS ((struct elfNN_ia64_dyn_sym_info *dyn_i, PTR data));
  static boolean allocate_pltoff_entries
!   PARAMS (uct elfNN_ia64_dyn_sym_info *dyn_i, PTR data));
  static boolean allocate_plt_entries
!   PARAMS ((struct elfNN_ia64_dyn_symo *dyn_i, PTR data));
  static boolean allocate_plt2_entries
!   PARAMS ((struct elfNN_ia64_dyn_sym_info *dyn_i, PTR data));tatic boolean allocate_dynrel_entries
!   PARAMS ((struct elfNN_ia64_dyn_sym_info *dyn_i, PTR data));
! static boolean elfNN4_size_dynamic_sections
    PARAMS ((bfd *output_bfd, struct bfd_link_info *info));
! static bfd_reloc_status_type elfNN_ia6stall_value
    PARAMS ((bfd *abfd, bfd_byte *hit_addr, bfd_vma val, unsigned int r_type));
! static void elfNN_ia64_install_reloc
    PARAMS ((bfd *abfd, struct bfd_link_info *info, asection *sec,
  	   asection *srel, bfd_vma offset, unsigned inte,
  	   long dynindx, bfd_vma addend));
  static bfd_vma set_got_entry
    PARAMS ((bfd *abfd, struct bfd_link_info *info,
  struct elfNN_ia64_dyn_sym_info *dyn_i, long dynindx,
  	   bfd_vma addend, bfd_vma value, unsigned int dyn_r_type));
  stabfd_vma set_fptr_entry
    PARAMS ((bfd *abfd, struct bfd_link_info *info,
! 	   struct elfNN_ia64_dyn_sym_info *dyn_i,
  	 d_vma value));
  static bfd_vma set_pltoff_entry
    PARAMS ((bfd *abfd, struct bfd_link_info *info,
! 	   struct elfNN_ia64_sym_info *dyn_i,
  	   bfd_vma value, boolean));
! static boolean elfNN_ia64_final_link
    PARAMS ((bfd *abfd, struct bfd__info *info));
! static boolean elfNN_ia64_relocate_section
    PARAMS ((bfd *output_bfd, struct bfd_link_info *info, bfd *i_bfd,
  	   asection *input_section, bfd_byte *contents,
  	   Elf_Internal_Rela *relocs, Elf_Internal_Sym *local_syms,
  	 ection **local_sections));
! static boolean elfNN_ia64_finish_dynamic_symbol
    PARAMS ((bfd *output_bfd, struct bfd_link_i*info,
  	   struct elf_link_hash_entry *h, Elf_Internal_Sym *sym));
! static boolean elfNN_ia64_finish_dynamic_sections
   AMS ((bfd *abfd, struct bfd_link_info *info));
! static boolean elfNN_ia64_set_private_flags
    PARAMS ((bfd *abfd, flagworags));
! static boolean elfNN_ia64_copy_private_bfd_data
    PARAMS ((bfd *ibfd, bfd *obfd));
! static boolean elfNN_ia64_meprivate_bfd_data
    PARAMS ((bfd *ibfd, bfd *obfd));
! static boolean elfNN_ia64_print_private_bfd_data
    PARAMS ((bfd *a PTR ptr));
  
  
***************
*** 279,287 ****
  /* ia64-specific relocation */
  
  /* Perform a relocation.  Not muchdo here as all the hard work is
!    done in elf64_ia64_final_link_relocate.  */
  static bfd_reloc_status_type
! elf64_ia64oc (abfd, reloc, sym, data, input_section,
  		  output_bfd, error_message)
       bfd *abfd;
       arelent *reloc;
--- 279 ----
  /* ia64-specific relocation */
  
  /* Perform a relocation.  Not much to do here as all the hard work is
!    done lfNN_ia64_final_link_relocate.  */
  static bfd_reloc_status_type
! elfNN_ia64_reloc (abfd, reloc, sym, data, input_section,	  output_bfd, error_message)
       bfd *abfd;
       arelent *reloc;
***************
*** 296,308 ****
        reloc->ads += input_section->output_offset;
        return bfd_reloc_ok;
      }
!   *error_message = "Unsupported call to elf64_ireloc";
    return bfd_reloc_notsupported;
  }
  
  #define IA64_HOWTO(TYPE, NAME, SIZE, PCREL, IN)			\
    HOWTO (TYPE, 0, , 0, PCREL, 0, complain_overflow_signed,	\
! 	 elf64_ia64_reloc, NAME, false, 0, 0, IN)
  
  /* This table has to be sorted rding to increasing number of the
     TYPE field.  */
--- 296,308 ----
        reloc->address += input_section->outpufset;
        return bfd_reloc_ok;
      }
!   *error_message = "Unsupported call to elfNN_ia64_reloc";
    return bfd_relocsupported;
  }
  
  #define IA64_HOWTO(TYPE, NAME, SIZE, PCREL, IN)			\
    HOWTO (TYPE, 0, SIZE, 0, PCREL, 0, complain_over9jĀ:_sned,	\
! 	 e /* This table has to be sorted according to increasing number oe
     TYPE field.  */
***************
*** 420,426 ****
  }
  
  static reloc_howto_type*
! elf64_ia64_reloc_type_lookup (abbfd_code)
       bfd *abfd;
       bfd_reloc_code_real_type bfd_code;
  {
--- 420,426 ----
  }
  
  static reloc_howto_type*lfNN_ia64_reloc_type_lookup (abfd, bfd_code)
       bfd *abfd;
       bfd_reloc_code_real_type bfd_code;
  {
*************** 518,529 ****
  /* Given a ELF reloc, return the matching HOWTO structure.  */
  
  static void
! elf64_ia64_info_to_howto (, bfd_reloc, elf_reloc)
       bfd *abfd;
       arelent *bfd_reloc;
!      Elf64_Internal_Rela *elf_reloc;
  {
!   bfd_relot;howto = lookup_howto (ELF64_R_TYPE (elf_reloc->r_info));
  }
  
  #define PLT_HEADER_SIZE		(3 * 16)
--- 518,529 ----
 Given a ELF reloc, return the matching HOWTO structure.  */
  
  static void
! elfNN_ia64_info_to_howto (abfd, bfd_reloc, elloc)
       bfd *abfd;
       arelent *bfd_reloc;
!      ElfNN_Internal_Rela *elf_reloc;
  {
!   bfd_reloc->howto = lookuwto (ELFNN_R_TYPE (elf_reloc->r_info));
  }
  
  #define PLT_HEADER_SIZE		(3 * 16)
***************
*** 593,599 ****
    axation of R_IA64_LTOFF22X and R_IA64_LDXMOV not yet supported.  */
  
  static boolean
! elf64_ia64_relax_section (abfd, seink_info, again)
       bfd *abfd;
       asection *sec;
       struct bfd_link_info *link_info;
--- 593,599 ----
     relaxn of R_IA64_LTOFF22X and R_IA64_LDXMOV not yet supported.  */
  
  static boolean
! elfNN_ia64_relax_section (abfd, sec, linfo, again)
       bfd *abfd;
       asection *sec;
       struct bfd_link_info *link_info;
***************
*** 613,621 ****
Elf_Internal_Rela *irel, *irelend;
    bfd_byte *contents;
    bfd_byte *free_contents;
!   Elf64_External_Sym *extsyms;
!  64_External_Sym *free_extsyms;
!   struct elf64_ia64_link_hash_table *ia64_info;
    struct one_fixup *fixups = NULL;
    bon changed_contents = false;
    boolean changed_relocs = false;
--- 613,621 ----
    Elf_Internal_Rela *irel, *irelend;
    byte *contents;
    bfd_byte *free_contents;
!   ElfNN_External_Sym *extsyms;
!   ElfNN_External_Sym *free_extsyms;
!   strulfNN_ia64_link_hash_table *ia64_info;
    struct one_fixup *fixups = NULL;
    boolean changed_contents = false;
    booleannged_relocs = false;
***************
*** 637,643 ****
    symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
  
    /* Load relocations for this section.  */
!   internal_relocs = (_bfd_elf64_link_read_relocs
  		     (abfd, sec, (PTR) NULL, (Elf_Inal_Rela *) NULL,
  		      link_info->keep_memory));
    if (internal_relocs == NULL)
--- 637,643 ----
    symtab_hdr = ;elf_tdata (abfd)->symtab_hdr;
  
    /* Load the relocations for this section.  */
!   internal_relocs = (_bfd_elfNN_linad_relocs
  		     (abfd, sec, (PTR) NULL, (Elf_Internal_Rela *) NULL,
  		      link_info->keep_memory));
    if (internelocs == NULL)
***************
*** 646,656 ****
    if (! link_info->keep_memory)
      free_relocs = internal_relocs;
   ia64_info = elf64_ia64_hash_table (link_info);
    irelend = internal_relocs + sec->reloc_count;
  
    for (irel = inte_relocs; irel < irelend; irel++)
!     if (ELF64_R_TYPE (irel->r_info) == (int) R_IA64_PCREL21B)
        break;
  
   No branch-type relocations.  */
--- 646,656 ----
    if (! link_info->keep_memory)
      free_relocs = internal_relocs;
   ia64_info = elfNN_ia64_hash_table (link_info);
    irelend = internal_relocs + sec->reloc_count;
  
    for (irel = intl_relocs; irel < irelend; irel++)
!     if (ELFNN_R_TYPE (irel->r_info) == (int) R_IA64_PCREL21B)
        break;
  
   No branch-type relocations.  */
***************
*** 680,689 ****
    /* Read this BFD's symbols.  */
    free_extsyms = NUL   if (symtab_hdr->contents != NULL)
!     extsyms = (Elf64_External_Sym *) symtab_hdr->contents;
    else
      {
!   extsyms = (Elf64_External_Sym *) bfd_malloc (symtab_hdr->sh_size);
        if (extsyms == NULL)
  	goto error_return;
    free_extsyms = extsyms;
--- 680,689 ----
    /* Read this BFD's symbols.  */
    free_extsyms = NULL;
    if (symtab_hdr-&ontents != NULL)
!     extsyms = (ElfNN_External_Sym *) symtab_hdr->contents;
    else
      {
!       extsyms = (ElfNN_Enal_Sym *) bfd_malloc (symtab_hdr->sh_size);
        if (extsyms == NULL)
  	goto error_return;
        free_extsyms = exs;
***************
*** 700,714 ****
        asection *tsec;
        struct one_fixup *f;
  
!       if (ELF64_R_TYPE (irel-&9jĀ:_io) != (int) Get the value of the symbol referred to by the reloc.  */
!      (ELF64_R_SYM (irel->r_info) < symtab_hdr->sh_info)
  	{
  	  /* A local symbol.  */
! 	  bfd_elf64_swap_symbol_in d,
! 				    extsyms + ELF64_R_SYM (irel->r_info),
  				    &isym);
  	  if (isym.st_shndx == SHN_UNDEF)
  	    cont;	/* We can't do anthing with undefined symbols.  */
--- 700,714 ----
        asection *tsec;
        struct one_fixup *f;
       if (ELFNN_R_TYPE (irel->r_info) != (int) R_IA64_PCREL21B)
  	continue;
  
        /* Get the value of the symbol reed to by the reloc.  */
!       if (ELFNN_R_SYM (irel->r_info) < symtab_hdr->sh_info)
  	{
  	  /* A local symbol. ! 	  bfd_elfNN_swap_symbol_in (abfd,
! 				    extsyms + ELFNN_R_SYM (irel->r_info),
  				    &isym);
  	  if (isym.hndx == SHN_UNDEF)
  	    continue;	/* We can't do anthing with undefined symbols.  */
***************
*** 727,735 ****
  	{  unsigned long indx;
  	  struct elf_link_hash_entry *h;
!           struct elf64_ia64_dyn_sym_info *dyn_i;
  
! 	  indx = 4_R_SYM (irel->r_info) - symtab_hdr->sh_info;
  	  h = elf_sym_hashes (abfd)[indx];
  	  BFD_ASSERT (h != NULL);
  
--7,735 ----
  	{
  	  unsigned long indx;
  	  struct elf_link_hash_entry *h;
!           struct elfNN_ia64_dyn_sym_info *dyn  
! 	  indx = ELFNN_R_SYM (irel->r_info) - symtab_hdr->sh_info;
  	  h = elf_sym_hashes (abfd)[indx];
  	  BFD_ASSERT!= NULL);
  
***************
*** 815,821 ****
  	      memcpy (contents + trampoff, plt_full_entry, size);
  
  	      /* Hi the old relocation for use as the PLTOFF reloc.  */
! 	      irel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),				   R_IA64_PLTOFF22);
  	      irel->r_offset = trampoff;
  	    }
--- 815,821 ----
  	      memcpy (contents + trampoplt_full_entry, size);
  
  	      /* Hijack the old relocation for use as the PLTOFF reloc.  */
! 	      irel->r_info = N_R_INFO (ELFNN_R_SYM (irel->r_info),
  					   R_IA64_PLTOFF22);
  	      irel->r_offset = trampoff;
  	    }
***********
*** 823,834 ****
  	    {
  #ifdef USE_BRL
  	      memcpy (contents + trampoff, oor_brl, size);
! 	      irel->r_in ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
  					   R_IA64_PCREL60B);
  	      irel->r_offset = trampoff + 2;
  #else      memcpy (contents + trampoff, oor_ip, size);
! 	      irel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
  	   R_IA64_PCREL64I);
  	      irel->r_addend -= 16;
  	      irel->r_offset = trampoff + 2;
--- 823,834 ----
  	    {ifdef USE_BRL
  	      memcpy (contents + trampoff, oor_brl, size);
! 	      irel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (ir9jĀ:gt_info),
  		offset = trampoff + 2;
  #else
  	      memcpy (contents + tramp oor_ip, size);
! 	      irel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (irel->r_info),
  					   R_IA64_PCREL64I);
  	     l->r_addend -= 16;
  	      irel->r_offset = trampoff + 2;
***************
*** 846,857 ****
        else
  	{
  	  /* out the reloc, since we're finalizing things here.  */
! 	  irel->r_info = ELF64_R_INFO (0, R_IA64_NONE);
  	}
  
       9jĀ:Fiup the exist
  	 hell this doesn't overflow too.  */
!       if (elf64_ia64_all_value (abfd, contents + roff,
  				    f->trampoff - (roff & -4),
  				    R_IA64_PCREL21B) != bfd_reloc_ok)
  o error_return;
--- 846,857 ----
        else
  	{
  	  /* Nop out the reloc, since we're finalizing things here.  */
! 	  i>r_info = ELFNN_R_INFO (0, R_IA64_NONE);
  	}
  
        /* Fix up the existing branch to hit the trampoline.  Hope like
hell this doesn't overflow too.  */
!       if (elfNN_ia64_install_value (abfd, contents + roff,
  				    f->trampoff - f & -4),
  				    R_IA64_PCREL21B) != bfd_reloc_ok)
  	goto error_return;
***************
*** 914,922 ****
     is callhen elfcode.h finds a section with an unknown type.  */
  
  static boolean
! elf64_ia64_section_from_shdr (abfd, hdr, name)    bfd *abfd;
!      Elf64_Internal_Shdr *hdr;
       char *name;
  {
    asection *newsect;
--- 914,922 ----
     is calleen elfcode.h finds a section with an unknown type.  */
  
  static boolean
! elfNN_ia64_section_from_shdr (abfd, hdr, name)
   bfd *abfd;
!      ElfNN_Internal_Shdr *hdr;
       char *name;
  {
    asection *newsect;
***************
*** 955,963 ***   flag.  */
  
  static boolean
! elf64_ia64_section_flags (flags, hdr)
       flagword *flags;
!      Elf64_Internal_Shdr ;
  {
    if (hdr->sh_flags & SHF_IA_64_SHORT)
      *flags |= SEC_SMALL_DATA;
--- 955,963 ----
     flag.  */
  
  sc boolean
! elfNN_ia64_section_flags (flags, hdr)
       flagword *flags;
!      ElfNN_Internal_Shdr *hdr;
  {
    if (hdr-&h_flags & SHF_IA_64_SHORT)
      *flags |= SEC_SMALL_DATA;
***************
*** 969,977 ****
     section name, which is ck, but ought to work.  */
  
  static boolean
! elf64_ia64_fake_sections (abfd, hdr, sec)
       bfd *abfd;
!      Elf64_Inal_Shdr *hdr;
       asection *sec;
  {
    register const char *name;
--- 969,977 ----
     section name, which is a hack, ought to work.  */
  
  static boolean
! elfNN_ia64_fake_sections (abfd, hdr, sec)
       bfd *abfd;
!      ElfNN_Internal_S*hdr;
       asection *sec;
  {
    register const char *name;
***************
*** 990,1001 ****
       * containing ELF relion info.  We need this hack in order to
       * be able to generate ELF binaries that can be translated into
       * EFI ications (which are essentially COFF objects).  Those
!      * files contain a COFF ".reloc" section inside an ELF64 object,    * which would normally cause BFD to segfault because it would
       * attempt to interpret this section as containing ration
       * entries for section "oc".  With this hack enabled, ".reloc"
       * will be treated as a normal data sectionich will avoid the
!      * segfault.  However, you won't be able to create an ELF64 binary
       * with a section named "ohat needs relocations, but that's
       * the kind of ugly side-effects you get when detecting section
       * types basedtheir names...  In practice, this limitation is
--- 990,1001 ----
       * containing ELF relocation info.  We need this hac order to
       * be able to generate ELF binaries that can be translated into
       * EFI applications (which are essenti COFF objects).  Those
!      * files contain a COFF ".reloc" section inside an ELFNN object,
       * which would normally e BFD to segfault because it would
       * attempt to interpret this section as containing relocation
       * entries for ion "oc".  With this hack enabled, ".reloc"
       * will be treated as a normal data section, which will avoid the
!      *fault.  However, you won't be able to create an ELFNN binary
       * with a section named "oc" that needs relocations, but 's
       * the kind of ugly side-effects you get when detecting section
       * types based on their names...  In practiceis limitation is
***************
*** 1013,1019 ****
     file.  We use it to put .comm items in .sbss, and not .bss.  */
  
atic boolean
! elf64_ia64_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
       bfd *abfd;
       struct bfd_linfo *info;
       const Elf_Internal_Sym *sym;
--- 1013,1019 ----
     file.  We use it to put .comm items in .sbss, and noss.  */
  
  static boolean
! elfNN_ia64_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
       bfd *abfd;
    truct bfd_link_info *info;
       const Elf_Internal_Sym *sym;
***************
*** 1051,1057 ****
  /* Return the number of tional phdrs we will need.  */
  
  static int
! elf64_ia64_additional_program_headers (abfd)
       bfd *abfd;
  {
    asec *s;
--- 1051,1057 ----
  /* Return the number of additional phdrs we will need.  */
  
  static int
! elfNN_ia64_additionalgram_headers (abfd)
       bfd *abfd;
  {
    asection *s;
***************
*** 1071,1077 ****
  }
  
  static boolean
! elf664_modify_segment_map (abfd)
       bfd *abfd;
  {
    struct elf_segment_map *m, **pm;
--- 1071,1077 ----
  }
  
  static ban
! elfNN_ia64_modify_segment_map (abfd)
       bfd *abfd;
  {
    struct elf_segment_map *m, **pm;
***************
*** 11675 ****
     '.' are local.  */
  
  static boolean
! elf64_ia64_is_local_label_name (abfd, name)
       bfd *abfd;
       c char *name;
  {
--- 1169,1175 ----
     '.' are local.  */
  
  static boolean
! elfNN_ia64_is_local_label_name (abfd, name     bfd *abfd;
       const char *name;
  {
***************
*** 1179,1185 ****
  /* Should we do dynamic things to this sym  */
  
  static boolean
! elf64_ia64_dynamic_symbol_p (h, info)
       struct elf_link_hash_entry *h;
       struct bfd_linfo *info;
  {
--- 1179,1185 ----
  /* Should we do dynamic things to this symbol?  */
  
  static boolean
! elfNN_ia64_dynamymbol_p (h, info)
       struct elf_link_hash_entry *h;
       struct bfd_link_info *info;
  {
***************
*** 1207,1214*
  }
  
  static boolean
! elf64_ia64_local_hash_table_init (ht, abfd, new)
!      struct elf64_ia64_local_hash_table *ht;    bfd *abfd;
       new_hash_entry_func new;
  {
--- 1207,1214 ----
  }
  
  static boolean
! elfNN_ia64_local_hash_tablet (ht, abfd, new)
!      struct elfNN_ia64_local_hash_table *ht;
       bfd *abfd;
       new_hash_entry_func new;
  {
***********
*** 1217,1229 ****
  }
  
  static struct bfd_hash_entry*
! elf64_ia64_new_loc_hash_entry (entry, table, string)
    truct bfd_hash_entry *entry;
       struct bfd_hash_table *table;
       const char *string;
  {
!   struct elf64_ia64_localh_entry *ret;
!   ret = (struct elf64_ia64_local_hash_entry *) entry;
  
    /* Allocate the structure if it has not alreadyn allocated by a
       subclass.  */
--- 1217,1229 ----
  }
  
  static struct bfd_hash_entry*
! elfNN_ia64_new_loc_hash_en(entry, table, string)
       struct bfd_hash_entry *entry;
       struct bfd_hash_table *table;
       const char *string;
!   struct elfNN_ia64_local_hash_entry *ret;
!   ret = (struct elfNN_ia64_local_hash_entry *) entry;
  
    /* Allocate the cture if it has not already been allocated by a
       subclass.  */
***************
*** 1238,1244 ****
    memset (ret, 0, of(*ret));
  
    /* Call the allocation method of the superclass.  */
!   ret = ((struct elf64_ia64_local_hash_entry *)
  	_hash_newfunc ((struct bfd_hash_entry *) ret, table, string));
  
    return (struct bfd_hash_entry *) ret;
--- 1238,1244 --   memset (ret, 0, sizeof(*ret));
  
    /* Call the allocation method of the superclass.  */
!   ret = ((struct elfNN_ia64_l_hash_entry *)
  	 bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table, string));
  
    return (struct bfd_hash_entry *t;
***************
*** 1245,1257 ****
  }
  
  static struct bfd_hash_entry*
! elf64_ia64_new_elf_hash_entry (entry, table, ng)
       struct bfd_hash_entry *entry;
       struct bfd_hash_table *table;
       const char *string;
  {
!   struct elf664_link_hash_entry *ret;
!   ret = (struct elf64_ia64_link_hash_entry *) entry;
  
    /* Allocate the structure if it has nlready been allocated by a
       subclass.  */
--- 1245,1257 ----
  }
  
  static struct bfd_hash_entry*
! elfNN_ia64_new_eash_entry (entry, table, string)
       struct bfd_hash_entry *entry;
       struct bfd_hash_table *table;
       const charring;
  {
!   struct elfNN_ia64_link_hash_entry *ret;
!   ret = (struct elfNN_ia64_link_hash_entry *) entry;
  
    /* Allocthe structure if it has not already been allocated by a
       subclass.  */
***************
*** 1266,1272 ****
    memset ( 0, sizeof(*ret));
  
    /* Call the allocation method of the superclass.  */
!   ret = ((struct elf64_ia64_link_hash_entry  	 _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
  				     table, string));
  
--- 1266,1272 ----
    memset , 0, sizeof(*ret));
  
    /* Call the allocation method of the superclass.  */
!   ret = ((struct elfNN_ia64_link_hash_entr
  	 _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
  				     table, string));
  
***************
*** 1274,1286*
  }
  
  static void
! elf64_ia64_hash_copy_indirect (xdir, xind)
       struct elf_link_hash_entry *xdir, *xind;
  {
!   ct elf64_ia64_link_hash_entry *dir, *ind;
  
!   dir = (struct elf64_ia64_link_hash_entry *)xdir;
!   ind = (struct elf64_iaink_hash_entry *)xind;
  
    /* Copy down any references that we may have already seen to the 
       symbol which just becindirect.  */
--- 1274,1286 ----
  }
  
  static void
! elfNN_ia64_hash_copy_indirect (xdir, xind)
       struct elf_link_hantry *xdir, *xind;
  {
!   struct elfNN_ia64_link_hash_entry *dir, *ind;
  
!   dir = (struct elfNN_ia64_link_hash_entry *)x
!   ind = (struct elfNN_ia64_link_hash_entry *)xind;
  
    /* Copy down any references that we may have already seen to th      symbol which just became indirect.  */
***************
*** 1296,1302 ****
  
    if (dir->info == NULL)
      {
!   struct elf64_ia64_dyn_sym_info *dyn_i;
  
        dir->info = dyn_i = ind->info;
        ind->info = NULL;
--- 12902 ----
  
    if (dir->info == NULL)
      {
!       struct elfNN_ia64_dyn_sym_info *dyn_i;
  
        dir->info = dy= ind->info;
        ind->info = NULL;
***************
*** 1320,1333 ****
  }
  
  static void
! elf64_ia64_hash_hide_ol (info, xh)
       struct bfd_link_info *info ATTRIBUTE_UNUSED;
       struct elf_link_hash_entry *xh;
  {
!   struct elf664_link_hash_entry *h;
!   struct elf64_ia64_dyn_sym_info *dyn_i;
  
!   h = (struct elf64_ia64_link_hash_entry *)xh;
  
   gt;root.elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
    h->root.dynindx = -1;
--- 1320,1333 ----
  }
  
  staticd
! elfNN_ia64_hash_hide_symbol (info, xh)
       struct bfd_link_info *info ATTRIBUTE_UNUSED;
       struct elf_link_hash_e *xh;
  {
!   struct elfNN_ia64_link_hash_entry *h;
!   struct elfNN_ia64_dyn_sym_info *dyn_i;
  
!   h = (struct elfNN_ia64k_hash_entry *)xh;
  
    h->root.elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
    h->root.dynindx = -1;
***********
*** 1341,1363 ****
     linker (without using static variables).  */
  
  static struct bfd_link_hash_table*
! elf64__hash_table_create (abfd)
       bfd *abfd;
  {
!   struct elf64_ia64_link_hash_table *ret;
  
    ret = bfd_alloc (abfd, si (*ret));
    if (!ret)
      return 0;
    if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
! 				      elf64_inew_elf_hash_entry))
      {
        bfd_release (abfd, ret);
        return 0;
      }
  
!   if (!elf64_ia64_local_hash_tainit (&ret->loc_hash_table, abfd,
! 				         elf64_ia64_new_loc_hash_entry))
      return 0;
    return &ret-root.root;
  }
--- 1341,1363 ----
     linker (without using static variables).  */
  
  static struct bfd_link_hash_table*
fNN_ia64_hash_table_create (abfd)
       bfd *abfd;
  {
!   struct elfNN_ia64_link_hash_table *ret;
  
    ret = bfd_alloc (, sizeof (*ret));
    if (!ret)
      return 0;
    if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
! 				     NN_ia64_new_elf_hash_entry))
      {
        bfd_release (abfd, ret);
        return 0;
      }
  
!   if (!elfNN_ia64_localh_table_init (&ret->loc_hash_table, abfd,
! 				         elfNN_ia64_new_loc_hash_entry))
      return 0;
    return &ret->root.root;
  }
***************
*** 1364,1397 ****
  
  /* Look up an entry in a Alpha ELF linker hash table.  */
  
atic INLINE struct elf64_ia64_local_hash_entry *
! elf64_ia64_local_hash_lookup(table, string, create, copy)
!      struct e_ia64_local_hash_table *table;
       const char *string;
       boolean create, copy;
  {
!   return ((struct elf64_ia64_lohash_entry *)
  	  bfd_hash_lookup (&table->root, string, create, copy));
  }
  
  /* Traverse both local and global  tables.  */
  
! struct elf64_ia64_dyn_sym_traverse_data
  {
!   boolean (*func) PARAMS ((struct elf64_ia64_dyn_sym_info *,));
    PTR data;
  };
  
  static boolean
! elf64_ia64_global_dyn_sym_thunk (xentry, xdata)
       struct bfd_hash_entry *xy;
       PTR xdata;
  {
!   struct elf64_ia64_link_hash_entry *entry
!     = (struct elf64_ia64_link_hash_entry *) xentry;
struct elf64_ia64_dyn_sym_traverse_data *data
!     = (struct elf64_ia64_dyn_sym_traverse_data *) xdata;
!   struct elf64_iayn_sym_info *dyn_i;
  
    for (dyn_i = entry->info; dyn_i; dyn_i = dyn_i->next)
      if (! (*data->func) (dyn_i, ->data))
--- 1364,1397 ----
  
  /* Look up an entry in a Alpha ELF linker hash table.  */
  
! static INLINE struct elfN64_local_hash_entry *
! elfNN_ia64_local_hash_lookup(table, string, create, copy)
!      struct elfNN_ia64_local_hash_table le;
       const char *string;
       boolean create, copy;
  {
!   return ((struct elfNN_ia64_local_hash_entry *)
  	  bfd__lookup (&table->root, string, create, copy));
  }
  
  /* Traverse both local and global hash tables.  */
  
! strucfNN_ia64_dyn_sym_traverse_data
  {
!   boolean (*func) PARAMS ((struct elfNN_ia64_dyn_sym_info *, PTR));
    PTR data;
  };
 static boolean
! elfNN_ia64_global_dyn_sym_thunk (xentry, xdata)
       struct bfd_hash_entry *xentry;
       PTR xdata;
    struct elfNN_ia64_link_hash_entry *entry
!     = (struct elfNN_ia64_link_hash_entry *) xentry;
!   struct elfNN_ia64_dyn_sraverse_data *data
!     = (struct elfNN_ia64_dyn_sym_traverse_data *) xdata;
!   struct elfNN_ia64_dyn_sym_info *dyn_i;
  
for (dyn_i = entry->info; dyn_i; dyn_i = dyn_i->next)
      if (! (*data->func) (dyn_i, data->data))
***********
*** 1400,1414 ****
  }
  
  static boolean
! elf64_ia64_local_dyn_sym_thunk (xentry, xdata)
       struct bfd_hash_entry *xy;
       PTR xdata;
  {
!   struct elf64_ia64_local_hash_entry *entry
!     = (struct elf64_ia64_local_hash_entry *) xentry  struct elf64_ia64_dyn_sym_traverse_data *data
!     = (struct elf64_ia64_dyn_sym_traverse_data *) xdata;
!   struct elf64__dyn_sym_info *dyn_i;
  
    for (dyn_i = entry->info; dyn_i; dyn_i = dyn_i->next)
      if (! (*data->func) (dyn_ita->data))
--- 1400,1414 ----
  }
  
  static boolean
! elfNN_ia64_local_dyn_sym_thunk (xentry, xdata)
       struct bfd__entry *xentry;
       PTR xdata;
  {
!   struct elfNN_ia64_local_hash_entry *entry
!     = (struct elfNN_ia64_local_hash_en*) xentry;
!   struct elfNN_ia64_dyn_sym_traverse_data *data
!     = (struct elfNN_ia64_dyn_sym_traverse_data *) xdata;
!   ct elfNN_ia64_dyn_sym_info *dyn_i;
  
    for (dyn_i = entry->info; dyn_i; dyn_i = dyn_i->next)
      if (! (*data->c) (dyn_i, data->data))
***************
*** 1417,1444 ****
  }
  
  static void
! elf64_ia64_dyn_sym_traverse (ia64_info,c, data)
!      struct elf64_ia64_link_hash_table *ia64_info;
!      boolean (*func) PARAMS ((struct elf64_ia64_dyn_sym_infoPTR));
       PTR data;
  {
!   struct elf64_ia64_dyn_sym_traverse_data xdata;
  
    xdata.func = func;
    xdata.data = da  
    elf_link_hash_traverse (&ia64_info->root,
! 			  elf64_ia64_global_dyn_sym_thunk, &xdata);
    bfd_hash_trse (&ia64_info->loc_hash_table.root,
! 		     elf64_ia64_local_dyn_sym_thunk, &xdata);
  }
  
  static boolean
!64_ia64_create_dynamic_sections (abfd, info)
       bfd *abfd;
       struct bfd_link_info *info;
  {
!   struct elf64_ia64__hash_table *ia64_info;
    struct elf_link_hash_entry *h;
    asection *s;
  
--- 1417,1444 ----
  }
  
  static void
! elfa64_dyn_sym_traverse (ia64_info, func, data)
!      struct elfNN_ia64_link_hash_table *ia64_info;
!      boolean (*func) PAR((struct elfNN_ia64_dyn_sym_info *, PTR));
       PTR data;
  {
!   struct elfNN_ia64_dyn_sym_traverse_data xdata;
  
    xdfunc = func;
    xdata.data = data;
  
    elf_link_hash_traverse (&ia64_info->root,
! 			  elfNN_ia64_global_dyn_symnk, &xdata);
    bfd_hash_traverse (&ia64_info->loc_hash_table.root,
! 		     elfNN_ia64_local_dyn_sym_thunk, &amata);
  }
  
  static boolean
! elfNN_ia64_create_dynamic_sections (abfd, info)
       bfd *abfd;
       struct bfd_link_ininfo;
  {
!   struct elfNN_ia64_link_hash_table *ia64_info;
    struct elf_link_hash_entry *h;
    asection *s;
  
***********
*** 1445,1451 ****
    if (! _bfd_elf_create_dynamic_sections (abfd, info))
      return false;
  
!   ia64_info = elf64__hash_table (info);
  
    ia64_info->plt_sec = bfd_get_section_by_name (abfd, ".plt");
    ia64_info->got_sec = bfd_gection_by_name (abfd, ".got");
--- 1445,1451 ----
    if (! _bfd_elf_create_dynamic_sections (abfd, info))
      return fals 
!   ia64_info = elfNN_ia64_hash_table (info);
  
    ia64_info->plt_sec = bfd_get_section_by_name (abfd, ".plt");
    iinfo->got_sec = bfd_get_section_by_name (abfd, ".got");
***************
*** 1486,1512 ****
  /* Find and/or create a descor for dynamic symbol info.  This will
     vary based on global or local symbol, and the addend to the reloc.  */
  
! stattruct elf64_ia64_dyn_sym_info *
  get_dyn_sym_info (ia64_info, h, abfd, rel, create)
!      struct elf64_ia64_link_hash_tabla64_info;
       struct elf_link_hash_entry *h;
       bfd *abfd;
       const Elf_Internal_Rela *rel;
       boolean create{
!   struct elf64_ia64_dyn_sym_info **pp;
!   struct elf64_ia64_dyn_sym_info *dyn_i;
    bfd_vma addend = rel ? rel->r_ad : 0;
    
    if (h)
!     pp = &((struct elf64_ia64_link_hash_entry *)h)->info;
    else
      {
!       struct elia64_local_hash_entry *loc_h;
        char *addr_name;
        size_t len;
  
!       /* Construct a string for use in the e_ia64_local_hash_table.
           The name describes what was once anonymous memory.  */
  
        len = sizeof(void*)*2 + sizeof(bfd_vma)*4 + 1 + 1;
--- 1486,1512 ----
  /* Find and/or create a descriptor for dynamic symbol info.  This will
    y based on global or local symbol, and the addend to the reloc.  */
  
! static struct elfNN_ia64_dyn_sym_info *
  get_dyn_snfo (ia64_info, h, abfd, rel, create)
!      struct elfNN_ia64_link_hash_table *ia64_info;
       struct elf_link_hash_entry
       bfd *abfd;
       const Elf_Internal_Rela *rel;
       boolean create;
  {
!   struct elfNN_ia64ddr_name, "%p:%lx", , ELFNN_R_SYM (rel->r_info));
  
        /* Collect the canonical entry data for this address.  */
!       loc_h = elfNN__local_hash_lookup (&ia64_info->loc_hash_table,
  					    addr_name, create, create);
        BFD_ASSERT (loc_h);
  ************
*** 1528,1534 ****
  
    if (dyn_i == NULL && create)
      {
!       dyn_i = (struct elf64_ia64_dyn_snfo *)
  	bfd_zalloc (abfd, sizeof *dyn_i);
        *pp = dyn_i;
        dyn_i->addend = addend;
--- 1528,1534 ----
  
   (dyn_i == NULL && create)
      {
!       dyn_i = (struct elfNN_ia64_dyn_sym_info *)
  	bfd_zalloc (abfd, sizeof *d);
        *pp = dyn_i;
        dyn_i->addend = addend;
***************
*** 1541,1547 ****
  get_got (abfd, info, ia64_in       bfd *abfd;
       struct bfd_link_info *info;
!      struct elf64_ia64_link_hash_table *ia64_info;
  {
    asection * *srel;
    bfd *dynobj;
--- 1541,1547 ----
  get_got (abfd, info, ia64_info)
       bfd *abfd;
       struct bfd_link_info o;
!      struct elfNN_ia64_link_hash_table *ia64_info;
  {
    asection *got, *srel;
    bfd *dynobj;
***************
*** 11583 ****
  get_fptr (abfd, info, ia64_info)
       bfd *abfd;
       struct bfd_link_info *info;
!      struct elf64_ia64_lhash_table *ia64_info;
  {
    asection *fptr;
    bfd *dynobj;
--- 1577,1583 ----
  get_fptr (abfd, info, ia64_info)
       *abfd;
       struct bfd_link_info *info;
!      struct elfNN_ia64_link_hash_table *ia64_info;
  {
    asection *fptr;
    *dynobj;
***************
*** 1614,1620 ****
  get_pltoff (abfd, info, ia64_info)
       bfd *abfd;
       struct bfd_link_ininfo;
!      struct elf64_ia64_link_hash_table *ia64_info;
  {
    asection *pltoff;
    bfd *dynobj;
--- 1614,1620 ----
  gltoff (abfd, info, ia64_info)
       bfd *abfd;
       struct bfd_link_info *info;
!      struct elfNN_ia64_link_hash_table 4_info;
  {
    asection *pltoff;
    bfd *dynobj;
***************
*** 1650,1656 ****
  static asection *
  get_reloc_sectiobfd, ia64_info, sec, create)
       bfd *abfd;
!      struct elf64_ia64_link_hash_table *ia64_info;
       asection *sec;
   boolean create;
  {
--- 1650,1656 ----
  static asection *
  get_reloc_section (abfd, ia64_info, sec, create)
       bfd *a
!      struct elfNN_ia64_link_hash_table *ia64_info;
       asection *sec;
       boolean create;
  {
***************
*** 11707 ****
  static boolean
  count_dyn_reloc (abfd, dyn_i, srel, type)
       bfd *abfd;
!      struct elf64_ia64_dyn_sym_indyn_i;
       asection *srel;
       int type;
  {
!   struct elf64_ia64_dyn_reloc_entry *rent;
  
    for (rent = dyn_i->oc_entries; rent; rent = rent->next)
      if (rent->srel == srel && rent->type == type)
--- 1697,1707 ----tatic boolean
  count_dyn_reloc (abfd, dyn_i, srel, type)
       bfd *abfd;
!      struct elfNN_ia64_dyn_sym_info *dyn_i;
   asection *srel;
       int type;
  {
!   struct elfNN_ia64_dyn_reloc_entry *rent;
  
    for (rent = dyn_i->reloc_entrieent; rent = rent->next)
      if (rent->srel == srel && rent->type == type)
***************
*** 1709,1715 *  
    if (!rent)
      {
!       rent = (struct elf64_ia64_dyn_reloc_entry *)
  	bfd_alloc (abfd, sizeof (*rent));
        !rent)
  	return false;
--- 1709,1715 ----
  
    if (!rent)
      {
!       rent = (struct elfNN_ia64_dyn_reloc_entry *)
  _alloc (abfd, sizeof (*rent));
        if (!rent)
  	return false;
***************
*** 1726,1738 ****
  }
  
  static booleaelf64_ia64_check_relocs (abfd, info, sec, relocs)
       bfd *abfd;
       struct bfd_link_info *info;
       asection *sec;    const Elf_Internal_Rela *relocs;
  {
!   struct elf64_ia64_link_hash_table *ia64_info;
    const Elf_Internal_Rela *rele9jĀ:  Elf_Internalla *rel;
--- 1726,1738 ----
  }
  
  static boolean
! elfNN_ia64ck_relocs (abfd, info, sec, relocs)
       bfd *abfd;
       struct bfd_link_info *info;
       asection *sec;
       const Internal_Rela *relocs;
  {
!   struct elfNN_ia64_link_hash_table *ia64_info;
    const Elf_Internal_Rela *relend;
    Elf_Inal_Shdr *symtab_hdr;
    const Elf_Internal_Rela *rel;
***************
*** 1742,1748 ****
      return true;
  
    symtab_h &elf_tdata (abfd)->symtab_hdr;
!   ia64_info = elf64_ia64_hash_table (info);
  
    got = fptr = srel = NULL;
  
---2,1748 ----
      return true;
  
    symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
!   ia64_info = elfNN_ia64_hash_tabinfo);
  
    got = fptr = srel = NULL;
  
***************
*** 1760,1767 ****
        };
  
        struct elf_link_hash_enth = NULL;
!       unsigned long r_symndx = ELF64_R_SYM (rel->r_info);
!       struct elf64_ia64_dyn_sym_info *dyn_i;
    int need_entry;
        boolean maybe_dynamic;
        int dynrel_type;
--- 1760,1767 ----
        };
  
        struct elf__hash_entry *h = NULL;
!       unsigned long r_symndx = ELFNN_R_SYM (rel->r_info);
!       struct elfNN_ia64_dyn_sym_info9jĀ:n_
        int        int dynrel_type;
***************
*** 1790,1796 ****
  	m_dynamic = true;
  
        need_entry = 0;
!       switch (ELF64_R_TYPE (rel->r_info))
  	{
  	case R_IA64_TPREL22:
  	cR_IA64_TPREL64MSB:
--- 1790,1796 ----
  	maybe_dynamic = true;
  
        need_entry = 0;
!       switch (ELFNN_R_TYPE (rel-r_info))
  	{
  	case R_IA64_TPREL22:
  	case R_IA64_TPREL64MSB:
***************
*** 1917,1923 ****
  	     dynamic symbol t.  */
  	  if (!h && info->shared)
  	    {
! 	      if (! (_bfd_elf64_link_record_local_dynamic_symbol
  		     o, abfd, r_symndx)))
  		return false;
  	    }
--- 1917,1923 ----
  	     dynamic symbol table.  */
  	  if (!h && ->shared)
  	    {
! 	      if (! (_bfd_elfNN_link_record_local_dynamic_symbol
  		     (info, abfd, r_symndx)))
  		retualse;
  	    }
***************
*** 1953,1959 ****
    return true;
  }
  
! struct elf64_ia64_allocate_data
  {
    struct bink_info *info;
    bfd_size_type ofs;
--- 1953,1959 ----
    return true;
  }
  
! struct elfNN_ia64_allocate_data
  {
    ct bfd_link_info *info;
    bfd_size_type ofs;
***************
*** 1964,1977 ****
  
  static boolean
  allocate_global_data (dyn_i, data)
!      struct elf64_ia64_dyn_sym_info *dyn_i;
       PTR data;
  {
!   struct elf64_ia64_allocate_data *x = (ct elf64_ia64_allocate_data *)data;
  
    if (dyn_i->want_got
        && ! dyn_i->want_fptr
!       &&f64_ia64_dynamic_symbol_p (dyn_i->h, x->info))
       {
         dyn_i->got_offset = x->ofs;
         x->ofs ;
--- 1964,1977 ----
  
  static boolean
  allocate_global_data_got (dyn_i, data)
!      struct elfNN_ia64_dyn_sym_info *dyn       PTR data;
  {
!   struct elfNN_ia64_allocate_data *x = (struct elfNN_ia64_allocate_data *)data;
  
    if (dyn_i->_got
        && ! dyn_i->want_fptr
!       && elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info))
    
         dyn_i->got_offset = x->ofs;
         x->ofs += 8;
***************
*** 1983,1996 ****
  
  static boolean
locate_global_fptr_got (dyn_i, data)
!      struct elf64_ia64_dyn_sym_info *dyn_i;
       PTR data;
  {
!   struct elf64_ia6locate_data *x = (struct elf64_ia64_allocate_data *)data;
  
    if (dyn_i->want_got
        && dyn_i->want_fp       && elf64_ia64_dynamic_symbol_p (dyn_i->h, x->info))
      {
        dyn_i->got_offset = x->ofs;
    x->ofs += 8;
--- 1983,1996 ----
  
  static boolean
  allocate_global_fptr_got (dyn_i, data)
!      struct elfNN_ia64_sym_info *dyn_i;
       PTR data;
  {
!   struct elfNN_ia64_allocate_data *x = (struct elfNN_ia64_allocate_data *)data;
  
 f (dyn_i->want_got
        && dyn_i->want_fptr
!       && elfNN_ia64_dynamic_symbol_p (dyn_i->h, x-info))
      {
        dyn_i->got_offset = x->ofs;
        x->ofs += 8;
***************
*** 2002,2014 ****
  
  staboolean
  allocate_local_got (dyn_i, data)
!      struct elf64_ia64_dyn_sym_info *dyn_i;
       PTR data;
  {
!   struct elfa64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
  
    if (dyn_i->want_got
!       && ! elf64_ia6namic_symbol_p (dyn_i->h, x->info))
      {
        dyn_i->got_offset = x->ofs;
        x->ofs += 8;
--- 20024 ----
  
  static boolean
  allocate_local_got (dyn_i, data)
!      struct elfNN_ia64_dyn_sym_info *dyn_i;
       PTR data;
!   struct elfNN_ia64_allocate_data *x = (struct elfNN_ia64_allocate_data *)data;
  
    if (dyn_i->want_got
!       &ammp; ! elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info))
      {
        dyn_i->got_offset = x->ofs;
        x-> += 8;
***************
*** 2040,2049 ****
  
  static boolean
  allocate_fptr (dyn_i, data)
!      struct elf64_ia64_dyn_symo *dyn_i;
       PTR data;
  {
!   struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
  
    if (i->want_fptr)
      {
--- 2040,2049 ----
  
  static boolean
  allocate_fptr (dyn_i, data)
!      struct elfNN_ia64_dyn_snfo *dyn_i;
       PTR data;
  {
!   struct elfNN_ia64_allocate_data *x = (struct elfNN_ia64_allocate_data *)data;
  
    ifn_i->want_fptr)
      {
***************
*** 2061,2067 ****
  	      BFD_ASSERT ((h->root.type == bfd_link_hash_defined			  || (h->root.type == bfd_link_hash_defweak));
  
! 	      if (!_bfd_elf64_link_record_local_dynamic_symbol
  		    (x;info, h->root.u.def.section->owner,
  		     global_sym_index (h)))
  		return false;
--- 2061,2067 ----
  	      BFDERT ((h->root.type == bfd_link_hash_defined)
  			  || (h->root.type == bfd_link_hash_defweak));
  
! 	      if (!_bfdNN_link_record_local_dynamic_symbol
  		    (x->info, h->root.u.def.section->owner,
  		     global_sym_index (h)))	return false;
***************
*** 2084,2093 ****
  
  static boolean
  allocate_plt_entries (dyn_i, data)
!      struct elfa64_dyn_sym_info *dyn_i;
       PTR data;
  {
!   struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)da  
    if (dyn_i->want_plt)
      {
--- 2084,2093 ----
  
  static boolean
  allocate_plt_entries (dyn_i, data)
!      st elfNN_ia64_dyn_sym_info *dyn_i;
       PTR data;
  {
!   struct elfNN_ia64_allocate_data *x = (struct elfNN_ia64_allocate_d*)data;
  
    if (dyn_i->want_plt)
      {
***************
*** 2099,2105 ****
  	  h = (struct elf_link_hash_entry *) h-root.u.i.link;
  
        /* ??? Versioned symbols seem to lose ELF_LINK_HASH_NEEDS_PLT.  */
!       if (elf64_ia64_dynamic_ol_p (h, x->info))
  	{
  	  bfd_size_type offset = x->ofs;
  	  if (offset == 0)
--- 2099,2105 ----
  	  h = (struct link_hash_entry *) h->root.u.i.link;
  
        /* ??? Versioned symbols seem to lose ELF_LINK_HASH_NEEDS_PLT.  */
!     9jĀ: (fNN_ia64_dyn_size_type offset = x->ofs;
  	  if (offset == 0)
***********
*** 2122,2131 ****
  
  static boolean
  allocate_plt2_entries (dyn_i, data)
!      struct elf64_ia64_dyn_sym_info *dyn_i;
   PTR data;
  {
!   struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
  
    if (dyn_i->want2)
      {
--- 2122,2131 ----
  
  static boolean
  allocate_plt2_entries (dyn_i, data)
!      struct elfNN_ia64_dyn_sym_inf9jĀ:yn;
       PTRta *x = (struct elfNN_ia64_allocate_data *)data;
  
    if (dyn_t;want_plt2)
      {
***************
*** 2150,2159 ****
  
  static boolean
  allocate_pltoff_entries (dyn_i, data)
!      st elf64_ia64_dyn_sym_info *dyn_i;
       PTR data;
  {
!   struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_ *)data;
  
    if (dyn_i->want_pltoff)
      {
--- 2150,2159 ----
  
  static boolean
  allocate_pltoff_entries (dyn_i, )
!      struct elfNN_ia64_dyn_sym_info *dyn_i;
       PTR data;
  {
!   struct elfNN_ia64_allocate_data *x = (struct elfNN__allocate_data *)data;
  
    if (dyn_i->want_pltoff)
      {
***************
*** 2168,2183 ****
  
  static boolean
  alte_dynrel_entries (dyn_i, data)
!      struct elf64_ia64_dyn_sym_info *dyn_i;
       PTR data;
  {
!   struct elf64_ia64_alle_data *x = (struct elf64_ia64_allocate_data *)data;
!   struct elf64_ia64_link_hash_table *ia64_info;
!   struct elf64_ia64_reloc_entry *rent;
    boolean dynamic_symbol, shared;
  
!   ia64_info = elf64_ia64_hash_table (x->info);
!   dynamic_sl = elf64_ia64_dynamic_symbol_p (dyn_i->h, x->info);
    shared = x->info->shared;
  
    /* Take care of the no data relocations.  */
--- 2168,2183 ----
  
  static boolean
  allocate_dynrel_entries (dyn_i, data)
!      struct elfNN_iayn_sym_info *dyn_i;
       PTR data;
  {
!   struct elfNN_ia64_allocate_data *x = (struct elfNN_ia64_allocate_data *)data;
!truct elfNN_ia64_link_hash_table *ia64_info;
!   struct elfNN_ia64_dyn_reloc_entry *rent;
    boolean dynamic_symbol, shared
!   ia64_info = elfNN_ia64_hash_table (x->info);
!   dynamic_symbol = elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->in
    shared = x->info->shared;
  
    /* Take care of the normal data relocations.  */
***************
*** 2202,2208 *  	    continue;
  	  break;
  	}
!       rent->srel->_raw_size += sizeof (Elf64_External_Rela) * rent->count;
      
    /* Take care of the GOT and PLT relocations.  */
--- 2202,2208 ----
  	    continue;
  	  break;
  	}
!       rent-&gel->_raw_size += sizeof (ElfNN_External_Rela) * rent->count;
      }
  
    /* Take care of the GOT and PLT relocation*/
***************
*** 2209,2215 ****
  
    if (((dynamic_symbol || shared) && dyn_i->want_got)
        || (dyn_t;want_ltoff_fptr && dyn_i->h && dyn_i->h->dynindx != -1))
!     ia64_info->rel_got_sec->_rawe += sizeof (Elf64_External_Rela);
  
    if (dyn_i->want_pltoff)
      {
--- 2209,2215 ----
  
    if (((dynamic_symbol hared) && dyn_i->want_got)
        || (dyn_i->want_ltoff_fptr && dyn_i->h && dyn_i->h-&gnindx != -1))
!     ia64_info->rel_got_sec->_raw_size += sizeof (ElfNN_External_Rela);
  
    if (dyn_i->want_pltof     {
***************
*** 2219,2227 ****
  	 shared libraries get two REL relocations.  Local symbols in
  	 main applicatiget nothing.  */
        if (dynamic_symbol)
! 	t = sizeof (Elf64_External_Rela);
        else if (shared)
! 	t = 2 * sizeoff64_External_Rela);
  
        ia64_info->rel_pltoff_sec->_raw_size += t;
      }
--- 2219,2227 ----
  	 shared librarget two REL relocations.  Local symbols in
  	 main applications get nothing.  */
        if (dynamic_symbol)
! 	t = sizeof NN_External_Rela);
        else if (shared)
! 	t = 2 * sizeof (ElfNN_External_Rela);
  
        ia64_info->rel_pltoff_sec;_raw_size += t;
      }
***************
*** 2230,2236 ****
  }
  
  static boolean
! elf64_ia64_adjust_dynamic_symbol (info
       struct bfd_link_info *info;
       struct elf_link_hash_entry *h;
  {
--- 2230,2236 ----
  }
  
  static boolean
! e_ia64_adjust_dynamic_symbol (info, h)
       struct bfd_link_info *info;
       struct elf_link_hash_entry *h;
  {
***********
*** 2260,2271 ****
  }
  
  static boolean
! elf64_ia64_size_dynamic_sections (output_bfd, info)
       bfd *output_bfd;
   struct bfd_link_info *info;
  {
!   struct elf64_ia64_allocate_data data;
!   struct elf64_ia64_link_hash_table *ia64_inf   asection *sec;
    bfd *dynobj;
    boolean reltext = false;
--- 2260,2271 ----
  }
  
  static boolean
! elfNN_ia64_sizeamic_sections (output_bfd, info)
       bfd *output_bfd;
       struct bfd_link_info *info;
  {
!   struct elfNN_ia64_allocaata data;
!   struct elfNN_ia64_link_hash_table *ia64_info;
    asection *sec;
    bfd *dynobj;
    boolean reltext = false;************
*** 2272,2278 ****
    boolean relplt = false;
  
    dynobj = elf_hash_table(info)->dynobj;
!   ia64_info =64_ia64_hash_table (info);
    BFD_ASSERT(dynobj != NULL);
    data.info = info;
  
--- 2272,2278 ----
    boolean relplt = e;
  
    dynobj = elf_hash_table(info)->dynobj;
!   ia64_info = elfNN_ia64_hash_table (info);
    BFD_ASSERT(dynobj != N;
    data.info = info;
  
***************
*** 2291,2297 ****
    if (ia64_info->root.dynamic_sections_created)
      {
    struct elf_link_hash_entry *h;
!       struct elf64_ia64_dyn_sym_info *dyn_i;
   
        if (info->init_function
  	 p;& (h = elf_link_hash_lookup (elf_hash_table (info), 
--- 2291,2297 ----
    if (ia64_info->root.dynamic_sections_crd)
      {
        struct elf_link_hash_entry *h;
!       struct elfNN_ia64_dyn_sym_info *dyn_i;
   
        if (info->inunction
  	  && (h = elf_link_hash_lookup (elf_hash_table (info), 
***************
*** 2321,2329 ****
    if (ia64_i>got_sec)
      {
        data.ofs = 0;
!       elf64_ia64_dyn_sym_traverse (ia64_info, allocate_global_data_got, &da
!       elf64_ia64_dyn_sym_traverse (ia64_info, allocate_global_fptr_got, &data);
!       elf64_ia64_dyn_sym_traverse (_info, allocate_local_got, &data);
        ia64_info->got_sec->_raw_size = data.ofs;
      }
  
--- 2321,2329 ---- if (ia64_info->got_sec)
      {
        data.ofs = 0;
!       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_global_daot, &data);
!       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_global_fptr_got, &data);
!       elfNN_ia64_dyn_traverse (ia64_info, allocate_local_got, &data);
        ia64_info->got_sec->_raw_size = data.ofs;
      }
  
***********
*** 2332,2338 ****
    if (ia64_info->fptr_sec)
      {
        data.ofs = 0;
!       elf64_ia64_dyn_sym_traversa64_info, allocate_fptr, &data);
        ia64_info->fptr_sec->_raw_size = data.ofs;
      }
  
--- 2332,2338 ----
if (ia64_info->fptr_sec)
      {
        data.ofs = 0;
!       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_fptr, &amta);
        ia64_info->fptr_sec->_raw_size = data.ofs;
      }
  
***************
*** 2342,2348 ****
       this has side-effect of clearing want_plt and want_plt2.  */
  
    data.ofs = 0;
!   elf64_ia64_dyn_sym_traverse (ia64_info, allocatt_entries, &data);
  
    ia64_info->minplt_entries = 0;
    if (data.ofs)
--- 2342,2348 ----
       this has the sidfect of clearing want_plt and want_plt2.  */
  
    data.ofs = 0;
!   elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_plt_ees, &data);
  
    ia64_info->minplt_entries = 0;
    if (data.ofs)
***************
*** 2354,2360 ****
    /* Align tointer for the plt2 entries.  */
    data.ofs = (data.ofs + 31) & -32;
  
!   elf64_ia64_dyn_sym_traverse (ia64_info, alte_plt2_entries, &data);
    if (data.ofs != 0)
      {
        BFD_ASSERT (ia64_info->root.dynamic_sections_created)- 2354,2360 ----
    /* Align the pointer for the plt2 entries.  */
    data.ofs = (data.ofs + 31) & -32;
  
!   elfNN_idyn_sym_traverse (ia64_info, allocate_plt2_entries, &data);
    if (data.ofs != 0)
      {
        BFD_ASSERT (ia64_info9jĀ:;rt.dynamic_se78 ****
    if (ia64_info->pltoff_sec)
      {
        data.o 0;
!       elf64_ia64_dyn_sym_traverse (ia64_info, allocate_pltoff_entries, &data);
        ia64_info->pltoff_sec-&gaw_size = data.ofs;
      }
  
--- 2372,2378 ----
    if (ia64_info->pltoff_sec)
      {
        data.ofs = 0;
!       elia64_dyn_sym_traverse (ia64_info, allocate_pltoff_entries, &data);
        ia64_info->pltoff_sec->_raw_size = data;
      }
  
***************
*** 2381,2387 ****
        /* Allocate space for the dynamic relocations that turned out to be
required.  */
  
!       elf64_ia64_dyn_sym_traverse (ia64_info, allocate_dynrel_entries, &data);
      }
  
    /* We hnow determined the sizes of the various dynamic sections.
--- 2381,2387 ----
        /* Allocate space for the dynamic relocns that turned out to be
  	 required.  */
  
!       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_dynrel_entries, &);
      }
  
    /* We have now determined the sizes of the various dynamic sections.
***************
*** 2503,2534 ****
   	  /* The DT_DEBUG entry is filled in by the dynamic linker and used
  	     by the debugger.  */
! 	  if (!bfd_elf64_add_dic_entry (info, DT_DEBUG, 0))
  	    return false;
  	}
  
!       if (! bfd_elf64_add_dynamic_entry (info, DT_IA_64_PLT_RES, 0))
  	return false;
!       if (! bfd_elf64_add_dynamic_entry (info, DT_PLTGOT, 0))
  	return false;
  
        if (relpl 	{
! 	  if (! bfd_elf64_add_dynamic_entry (info, DT_PLTRELSZ, 0)
! 	      || ! bfd_elf64_add_dynamic_entry (info, DT_PLTREL_RELA)
! 	      || ! bfd_elf64_add_dynamic_entry (info, DT_JMPREL, 0))
  	    return false;
  	}
  
!       if (! bfd_elf64_dynamic_entry (info, DT_RELA, 0)
! 	  || ! bfd_elf64_add_dynamic_entry (info, DT_RELASZ, 0)
! 	  || ! bfd_elf64_add_dynamic_y (info, DT_RELAENT,
! 					    sizeof(Elf64_External_Rela)))
  	return false;
  
        if (reltext)
  	{
! 	  if (! bfd_e_add_dynamic_entry (info, DT_TEXTREL, 0))
  	    return false;
  	  info->flags |= DF_TEXTREL;
  	}
--- 2503,2534 ----
   	  /* The DT_DEBUG entry is filled in by the dynamic linker and used
  	     by the debugger.  */
! 	  if (!bfd_elfNN_add_dic_entry (info, DT_DEBUG, 0))
  	    return false;
  	}
  
!       if (! bfd_elfNN_add_dynamic_entry (info, DT_IA_64_PLT_RES, 0))
  	return false;
!       if (! bfd_elfNN_add_dynamic_entry (info, DT_PLTGOT, 0))
  	return false;
  
        if (relpl 	{
! 	  if (! bfd_elfNN_add_dynamic_entry (info, DT_PLTRELSZ, 0)
! 	      || ! bfd_elfNN_add_dynamic_entry (info, DT_PLTREL_RELA)
! 	      || ! bfd_elfNN_add_dynamic_entry (info, DT_JMPREL, 0))
  	    return false;
  	}
  
!       if (! bfd_elfNN_dynamic_entry (info, DT_RELA, 0)
! 	  || ! bfd_elfNN_add_dynamic_entry (info, DT_RELASZ, 0)
! 	  || ! bfd_elfNN_add_dynamic_y (info, DT_RELAENT,
! 					    sizeof(ElfNN_External_Rela)))
  	return false;
  
        if (reltext)
  	{
! 	  if (! bfd_e_add_dynamic_entry (info, DT_TEXTREL, 0))
  	    return false;
  	  info->flags |= DF_TEXTREL;
  	}
***************
*** 22546 ****
  }
  
  static bfd_reloc_status_type
! elf64_ia64_install_value (abfd, hit_addr, val, r_type)
       bfd *abfd;
   bfd_byte *hit_addr;
       bfd_vma val;
--- 2540,2546 ----
  }
  
  static bfd_reloc_status_type
! elfNN_ia64_install_valu9jĀ:bf hit_addr, ve *hit_addr;
       bfd_vma val;
***************
*** 2758,2764 *  }
  
  static void
! elf64_ia64_install_dyn_reloc (abfd, info, sec, srel, offset, type,
  			      dynindx, addend)
       *abfd;
       struct bfd_link_info *info;
--- 2758,2764 ----
  }
  
  static void
! elfNN_ia64_install_dyn_reloc (abfd, infec, srel, offset, type,
  			      dynindx, addend)
       bfd *abfd;
       struct bfd_link_info *info;
***************
***6,2782 ****
  		     + offset);
  
    BFD_ASSERT (dynindx != -1);
!   outrel.r_info = ELF64_R_INFO (dynindx, type);
    outr_addend = addend;
  
    if (elf_section_data (sec)->stab_info != NULL)
--- 2776,2782 ----
  		     + offset);
  
    BFSERT (dynindx != -1);
!   outrel.r_info = ELFNN_R_INFO (dynindx, type);
    outrel.r_addend = addend;
  
    if (elf_sectiona (sec)->stab_info != NULL)
***************
*** 2793,2799 ****
  	{
  	  /* Run for the hills.  We shouldn't be outputtinrelocation
  	     for this.  So do what everyone else does and output a no-op.  */
! 	  outrel.r_info = ELF64_R_INFO (0, R_9jĀ:_NE);
  	  out2793,2799 ----
  	{
  	  /* Run for the hills.  We shouldn't be utting a relocation
  	     for this.  So do what everyone else does and output a no-op.  */
! 	  outrel.r_info = ELFNN_R_IN0, R_IA64_NONE);
  	  outrel.r_addend = 0;
  	  offset = 0;
  	}
***************
*** 2800,2809 ****
        outrel.r_offset fset;
      }
  
!   bfd_elf64_swap_reloca_out (abfd, &outrel,
! 			     ((Elf64_External_Rela *) srel->contents
  		   + srel->reloc_count++));
!   BFD_ASSERT (sizeof(Elf64_External_Rela) * srel->reloc_count
  	      <= srel->_cd_size);
  }
  
--- 2800,2809 ----
        outrel.r_offset = offset;
      }
  
!   bfd_elfNN_swap_reloca_out (abfd, &ou,
! 			     ((ElfNN_External_Rela *) srel->contents
  			      + srel->reloc_count++));
!   BFD_ASSERT (sizeof(ElfNN_E9jĀ:naRela) * sreloked_size);
  }
  
***************
*** 2814,2829 ****
  set_got_y (abfd, info, dyn_i, dynindx, addend, value, dyn_r_type)
       bfd *abfd;
       struct bfd_link_info *info;
!      struct64_ia64_dyn_sym_info *dyn_i;
       long dynindx;
       bfd_vma addend;
       bfd_vma value;
       unsigned int dyn_r_typ {
!   struct elf64_ia64_link_hash_table *ia64_info;
    asection *got_sec;
  
!   ia64_info = elf64_ia64_hash_table (info); got_sec = ia64_info->got_sec;
  
    BFD_ASSERT ((dyn_i->got_offset & 7) == 0);
--- 2814,2829 ----
  set_got_entrbfd, info, dyn_i, dynindx, addend, value, dyn_r_type)
       bfd *abfd;
       struct bfd_link_info *info;
!      struct elfa64_dyn_sym_info *dyn_i;
       long dynindx;
       bfd_vma addend;
       bfd_vma value;
       unsigned int dyn_r_type;
    struct elfNN_ia64_link_hash_table *ia64_info;
    asection *got_sec;
  
!   ia64_info = elfNN_ia64_hash_table (info);
   _sec = ia64_info->got_sec;
  
    BFD_ASSERT ((dyn_i->got_offset & 7) == 0);
***************
*** 2837,2843 ****
       /* Install a dynamic relocation if needed.  */
        if (info->shared
!           || elf64_ia64_dynamic_symbol_p (i->h, info)
  	  || (dynindx != -1 && dyn_r_type == R_IA64_FPTR64LSB))
  	{
  	  if (dynindx == -1)
--- 2837,2843-
  
        /* Install a dynamic relocation if needed.  */
        if (info->shared
!           || elfNN_ia64_dynamic_sy_p (dyn_i->h, info)
  	  || (dynindx != -1 && dyn_r_type == R_IA64_FPTR64LSB))
  	{
  	  if (dynindx == -1)
***********
*** 2866,2872 ****
  		}
  	    }
  
! 	  elf64_ia64_install_dyn_reloc (abfd, NULL, got_sec,
  					ia64_info->rel_sec,
  					dyn_i->got_offset, dyn_r_type,
  					dynindx, addend);
--- 2866,2872 ----
  		}
  	    }
  
! 	  elfNN_ia64tall_dyn_reloc (abfd, NULL, got_sec,
  					ia64_info->rel_got_sec,
  					dyn_i->got_offset, dyn_r_type,
  					dyninaddend);
***************
*** 2888,2900 ****
  set_fptr_entry (abfd, info, dyn_i, value)
       bfd *abfd;
       struct bfd__info *info;
!      struct elf64_ia64_dyn_sym_info *dyn_i;
       bfd_vma value;
  {
!   struct elf64_ia64_link_hash_table *_info;
    asection *fptr_sec;
  
!   ia64_info = elf64_ia64_hash_table (info);
    fptr_sec = ia64_info->fptr_sec;
  
   (!dyn_i->fptr_done)
--- 2888,2900 ----
  set_fptr_entry (abfd, info, dyn_i, value)
       bfd *abfd;
       struct bfd_linfo *info;
!      struct elfNN_ia64_dyn_sym_info *dyn_i;
       bfd_vma value;
  {
!   struct elfNN_ia64_link_hash_table *iinfo;
    asection *fptr_sec;
  
!   ia64_info = elfNN_ia64_hash_table (info);
    fptr_sec = ia64_info->fptr_sec;
  
   (!dyn_i->fptr_done)
***************
*** 2922,2935 ****
  set_pltoff_entry (abfd, info, dyn_i, value, is_plt)
       bfd *;
       struct bfd_link_info *info;
!      struct elf64_ia64_dyn_sym_info *dyn_i;
       bfd_vma value;
       boolean is_p  {
!   struct elf64_ia64_link_hash_table *ia64_info;
    asection *pltoff_sec;
  
!   ia64_info = elf64_ia64_hash_table (in
    pltoff_sec = ia64_info->pltoff_sec;
  
    /* Don't do anything if this symbol uses a real PLT entry.  In
--- 2922,2----
  set_pltoff_entry (abfd, info, dyn_i, value, is_plt)
       bfd *abfd;
       struct bfd_link_info *info;
!      strucfNN_ia64_dyn_sym_info *dyn_i;
       bfd_vma value;
       boolean is_plt;
  {
!   struct elfNN_ia64_link_hash_table *ia64_i
    asection *pltoff_sec;
  
!   ia64_info = elfNN_ia64_hash_table (info);
    pltoff_sec = ia64_info->pltoff_sec;
  
   Don't do anything if this symbol uses a real PLT entry.  In
***************
*** 2952,2962 ****
  	  else
  	    dyn_r_type IA64_REL64LSB;
  
! 	  elf64_ia64_install_dyn_reloc (abfd, NULL, pltoff_sec,
  					ia64_info->rel_pltoff_sec,
  					dyngt;pltoff_offset,
  					dyn_r_type, 0, 0);
! 	  elf64_ia64_install_dyn_reloc (abfd, NULL, pltoff_sec,
  					ia64_info->pltoff_sec,
  					dyn_i->pltoff_offset + 8,
  					dyn_r_type, 0, 0);
--- 2952,2962 ----
  	  else
  	    dyn_r_type = R4_REL64LSB;
  
! 	  elfNN_ia64_install_dyn_reloc (abfd, NULL, pltoff_sec,
  					ia64_info->rel_pltoff_sec,
  					dyn_i-pltoff_offset,
  					dyn_r_type, 0, 0);
! 	  elfNN_ia64_install_dyn_reloc (abfd, NULL, pltoff_sec,
  					ia64_info->reloff_sec,
  					dyn_i->pltoff_offset + 8,
  					dyn_r_type, 0, 0);
***************
*** 2974,3004 ****
  }
  
  /* Calledough qsort to sort the .IA_64.unwind section during a
!    non-relocatable link.  Set elf64_ia64_unwind_entry_compare_bfd
  o the output bfd so we can do proper endianness frobbing.  */
  
! static bfd *elf64_ia64_unwind_entry_compare_bfd;
  
  staint
! elf64_ia64_unwind_entry_compare (a, b)
       PTR a;
       PTR b;
  {
    bfd_vma av, bv;
  
!   av = bfd_get_64 (elfa64_unwind_entry_compare_bfd, a);
!   bv = bfd_get_64 (elf64_ia64_unwind_entry_compare_bfd, b);
  
    return (av < bv ?  av > bv ? 1 : 0);
  }
  
  static boolean
! elf64_ia64_final_link (abfd, info)
       bfd *abfd;
       struct bfd_link_ *info;
  {
!   struct elf64_ia64_link_hash_table *ia64_info;
!   ia64_info = elf64_ia64_hash_table (info);
  
    /* Make swe've got ourselves a nice fat __gp value.  */
    if (!info->relocateable)
--- 2974,3004 ----
  }
  
  /* Called throughrt to sort the .IA_64.unwind section during a
!    non-relocatable link.  Set elfNN_ia64_unwind_entry_compare_bfd
     to thtput bfd so we can do proper endianness frobbing.  */
  
! static bfd *elfNN_ia64_unwind_entry_compare_bfd;
  
  static int
fNN_ia64_unwind_entry_compare (a, b)
       PTR a;
       PTR b;
  {
    bfd_vma av, bv;
  
!   av = bfd_get_64 (elfNN_ia64_nd_entry_compare_bfd, a);
!   bv = bfd_get_64 (elfNN_ia64_unwind_entry_compare_bfd, b);
  
    return (av < bv ? -1 : av  bv ? 1 : 0);
  }
  
  static boolean
! elfNN_ia64_final_link (abfd, info)
       bfd *abfd;
       struct bfd_link_info *in  {
!   struct elfNN_ia64_link_hash_table *ia64_info;
!   ia64_info = elfNN_ia64_hash_table (info);
  
    /* Make sure we'vt ourselves a nice fat __gp value.  */
    if (!info->relocateable)
***************
*** 3120,3126 ****
    if (ia64_info-root.dynamic_sections_created)
      {
        struct elf_link_hash_entry *h;
!       struct elf64_ia64_dyn_sym_info *dyn_i;     bfd_vma addr;
   
        if (info->init_function
--- 3120,3126 ----
    if (ia64_info->root.179 ----
  					  cots, (file_ptr) 0, size))
  	    return false;
  
! 	  elfNN_ia64_unwind_entry_compare_bfd = abfd;
! 	  qsort (contents, size4, 24, elfNN_ia64_unwind_entry_compare);
  
  	  if (! bfd_set_section_contents (abfd, s->output_section,
  					  conten(file_ptr) 0, size))
***************
*** 3185,3191 ****
  }
  
  static boolean
! elf64_ia64_relocate_section (output_bfd, i input_bfd, input_section,
  			     contents, relocs, local_syms, local_sections)
       bfd *output_bfd;
       struct bfdk_info *info;
--- 3185,3191 ----
  }
  
  static boolean
! elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_son,
  			     contents, relocs, local_syms, local_sections)
       bfd *output_bfd;
       struct bfd_link_info *info;
***********
*** 3196,3202 ****
       Elf_Internal_Sym *local_syms;
       asection **local_sections;
  {
!   struct elf64_ia64_lhash_table *ia64_info;
    Elf_Internal_Shdr *symtab_hdr;
    Elf_Internal_Rela *rel;
    Elf_Internal_Rela *relend;
--- 31902 ----
       Elf_Internal_Sym *local_syms;
       asection **local_sections;
  {
!   struct elfNN_ia64_link_hash_table *ianfo;
    Elf_Internal_Shdr *symtab_hdr;
    Elf_Internal_Rela *rel;
    Elf_Internal_Rela *relend;
***************
*** 3205, ****
    bfd_vma gp_val;
  
    symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
!   ia64_info = elf64_ia64_hash_tabinfo);
  
    /* Infect various flags from the input section to the output section.  */
    if (info->relocateable)
--- 33211 ----
    bfd_vma gp_val;
  
    symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
!   ia64_info = elfNN_ia64_hashle (info);
  
    /* Infect various flags from the input section to the output section.  */
    if (info->relocateable)
***********
*** 3227,3233 ****
    for (; rel < relend; ++rel)
      {
        struct elf_link_hash_entry *h;
!       strulf64_ia64_dyn_sym_info *dyn_i;
        bfd_reloc_status_type r;
        reloc_howto_type *howto;
        unsigned long r_sym
--- 3227,3233 ----
    for (; rel < relend; ++rel)
      {
        struct elf_link_hash_entry *h;
!       struct elfNN_idyn_sym_info *dyn_i;
        bfd_reloc_status_type r;
        reloc_howto_type *howto;
        unsigned long r_symndx;
***********
*** 3239,3245 ****
        boolean dynamic_symbol_p;
        boolean undef_weak_ref;
  
!       r_type = ELF64_R_TYPEl->r_info);
        if (r_type > R_IA64_MAX_RELOC_CODE)
  	{
  	  (*_bfd_error_handler)
--- 3239,3245 ----
        boo dynamic_symbol_p;
        boolean undef_weak_ref;
  
!       r_type = ELFNN_R_TYPE (rel->r_info);
        if (r_type >IA64_MAX_RELOC_CODE)
  	{
  	  (*_bfd_error_handler)
***************
*** 3250,3256 ****
  	  continue;
  	}
        howto = up_howto (r_type);
!       r_symndx = ELF64_R_SYM (rel->r_info);
  
        if (info->relocateable)
  	{
--- 3250,3256-
  	  continue;
  	}
        howto = lookup_howto (r_type);
!       r_symndx = ELFNN_R_SYM (rel->r_info);
  
        if o->relocateable)
  	{
***************
*** 3339,3345 ****
  
        hit_addr = contents + rel->r_offset;
        valuerel->r_addend;
!       dynamic_symbol_p = elf64_ia64_dynamic_symbol_p (h, info);
  
        switch (r_type)
  	{
--- 33395 ----
  
        hit_addr = contents + rel->r_offset;
        value += rel->r_addend;
!       dynamic_symbol_p = elfN64_dynamic_symbol_p (h, info);
  
        switch (r_type)
  	{
***************
*** 3401,3407 ****
  		  dynindx = 0;
  		}
 	      elf64_ia64_install_dyn_reloc (output_bfd, info, input_section,
  					    srel, rel->r_offset, dyn_r_type,
  					dynindx, rel->r_addend);
  	    }
--- 3401,3407 ----
  		  dynindx = 0;
  		}
  
! 	      elfNN_ia64_install_dyn_reloc (ot_bfd, info, input_section,
  					    srel, rel->r_offset, dyn_r_type,
  					    dynindx, rel->r_addend);
  	    }
***********
*** 3411,3417 ****
  	case R_IA64_LTV32LSB:
  	case R_IA64_LTV64MSB:
  	case R_IA64_LTV64LSB:
! 	  r = elf64_ia64tall_value (output_bfd, hit_addr, value, r_type);
  	  break;
  
  	case R_IA64_GPREL22:
--- 3411,3417 ----
  	case R_IA64_LLSB:
  	case R_IA64_LTV64MSB:
  	case R_IA64_LTV64LSB:
! 	  r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_typ  	  break;
  
  	case R_IA64_GPREL22:
***************
*** 3429,3435 ****
  	      continue;
  	    }
  	  value -= gp_val;
 r = elf64_ia64_install_value (output_bfd, hit_addr, value, r_type);
  	  break;
  
  	case R_IA64_LTOFF22:
--- 3429,3435 -- 	      continue;
  	    }
  	  value -= gp_val;
! 	  r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
  reak;
  
  	case R_IA64_LTOFF22:
***************
*** 3439,3445 ****
  	  value = set_got_entry (input_bfd, info, dyn_i, (h ?gt;dynindx : -1),
  				 rel->r_addend, value, R_IA64_DIR64LSB);
  	  value -= gp_val;
! 	  r = elf64_ia64_install_value put_bfd, hit_addr, value, r_type);
  	  break;
  
  	case R_IA64_PLTOFF22:
--- 3439,3445 ----
  	  value = set_got_entry (inbfd, info, dyn_i, (h ? h->dynindx : -1),
  				 rel->r_addend, value, R_IA64_DIR64LSB);
  	  value -= gp_val;
! 	  r =NN_ia64_install_value (output_bfd, hit_addr, value, r_type);
  	  break;
  
  	case R_IA64_PLTOFF22:
***************
*** 34455 ****
            dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
  	  value = set_pltoff_entry (output_bfnfo, dyn_i, value, false);
  	  value -= gp_val;
! 	  r = elf64_ia64_install_value (output_bfd, hit_addr, value, r_type);
  reak;
  
  	case R_IA64_FPTR64I:
--- 3449,3455 ----
            dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, fals  	  value = set_pltoff_entry (output_bfd, info, dyn_i, value, false);
  	  value -= gp_val;
! 	  r = elfNN_ia64_install_val9jĀ:ouut_bfd, hit_ R_IA64_FPTR64I:
***************
*** 3485,3497 ****
  			     (i input_bfd, r_symndx));
  		}
  
! 	      elf64_ia64_install_dyn_reloc (output_bfd, info, input_section,
  					    srel, ret;r_offset, r_type,
  					    dynindx, rel->r_addend);
  	      value = 0;
  	    }
  
! 	  r = elf64_ia64_install_valuetput_bfd, hit_addr, value, r_type);
  	  break;
  
  	case R_IA64_LTOFF_FPTR22:
--- 3485,3497 ----
  			     (info, input_bf_symndx));
  		}
  
! 	      elfNN_ia64_install_dyn_reloc (output_bfd, info, input_section,
  					    srel, rel->r_offse_type,
  					    dynindx, rel->r_addend);
  	      value = 0;
  	    }
  
! 	  r = elfNN_ia64_install_value (output_bfd,_addr, value, r_type);
  	  break;
  
  	case R_IA64_LTOFF_FPTR22:
***************
*** 3531,3537 ****
  	    value = set_gotry (output_bfd, info, dyn_i, dynindx,
  				   rel->r_addend, value, R_IA64_FPTR64LSB);
  	    value -= gp_val;
! 	    r f64_ia64_install_value (output_bfd, hit_addr, value, r_type);
  	  }
  	  break;
  
--- 3531,3537 ----
  	    value = set_gotry (output_bfd, info, dyn_i, dynindx,
  				   rel->r_addend, value, R_IA64_FPTR64LSB);
  	    value -= gp_val;
! 	    rlfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
  	  }
  	  break;
  
***************
*** 3544,3550 ****
  	 
  	      BFD_ASSERT (srel != NULL);
  
! 	      elf64_ia64_install_dyn_reloc (output_bfd, info, input_section,
  					    s rel->r_offset, r_type,
  					    h->dynindx, rel->r_addend);
  	    }
--- 3544,3550 ----
  	    {
  	      BFD_AS (srel != NULL);
  
! 	      elfNN_ia64_install_dyn_reloc (output_bfd, info, input_section,
  					    srel, rel->r_offse_type,
  					    h->dynindx, rel->r_addend);
  	    }
***************
*** 3611,3617 ****
  	  value -= (input_section;output_section->vma
  		    + input_section->output_offset
  		    + rel->r_offset) & ~ (bfd_vma) 0x3;
! 	  r f64_ia64_install_value (output_bfd, hit_addr, value, r_type);
  	  break;
  
  	case R_IA64_SEGREL32MSB:
--- 3611,3617 ----
 value -= (input_section->output_section->vma
  		    + input_section->output_offset
  		    + rel->r_offset) &a~ (bfd_vma) 0x3;
! 	  r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
  	  break;
  
  	case R_IA64_SEGRMSB:
***************
*** 3654,3660 ****
  		  value -= p->p_vaddr;
  		else
  		  value = 0;
! 		r = elf64_ia64_install_v (output_bfd, hit_addr, value,
  					      r_type);
  	      }
  	    break;
--- 3654,3660 ----
  		  value -= p->p_vadd 		else
  		  value = 0;
! 		r = elfNN_ia64_install_value (output_bfd, hit_addr, value,
  					      r_type);
  	      }
  	break;
***************
*** 3669,3675 ****
  	    value -= input_section->output_section->vma;
  	  else
  	    value =! 	  r = elf64_ia64_install_value (output_bfd, hit_addr, value, r_type);
  	  break;
  
  	case R_IA64_SEGBASE:
--- 3669,3679jĀ:-- 	    value 
  	  else
  	    value = 0;
! 	  r = elfNN_ia64_install_value (ut_bfd, hit_addr, value, r_type);
  	  break;
  
  	case R_IA64_SEGBASE:
***************
*** 3766,3781 ****
  }
  
  static ean
! elf64_ia64_finish_dynamic_symbol (output_bfd, info, h, sym)
       bfd *output_bfd;
       struct bfd_link_info *info;    struct elf_link_hash_entry *h;
       Elf_Internal_Sym *sym;
  {
!   struct elf64_ia64_link_hash_table *ia64_info;
!   st elf64_ia64_dyn_sym_info *dyn_i;
  
!   ia64_info = elf64_ia64_hash_table (info);
    dyn_i = get_dyn_sym_info (ia64_info, ULL, NULL, false);
  
    /* Fill in the PLT data, if required.  */
--- 3766,3781 ----
  }
  
  static boolean
! elfNN_ia64_sh_dynamic_symbol (output_bfd, info, h, sym)
       bfd *output_bfd;
       struct bfd_link_info *info;
       struct elf_liash_entry *h;
       Elf_Internal_Sym *sym;
  {
!   struct elfNN_ia64_link_hash_table *ia64_info;
!   struct elfNN_ia64_dyn_info *dyn_i;
  
!   ia64_info = elfNN_ia64_hash_table (info);
    dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, false)
    /* Fill in the PLT data, if required.  */
***************
*** 3785,3791 ****
        bfd_byte *loc;
        asection *pec;
        bfd_vma plt_addr, pltoff_addr, gp_val, index;
!       Elf64_External_Rela *rel;
  
        gp_val = _bfd_get_gp_e (output_bfd);
  
--- 3785,3791 ----
        bfd_byte *loc;
        asection *plt_sec;
        bfd_vma plt_addr, pltoff_addp_val, index;
!       ElfNN_External_Rela *rel;
  
        gp_val = _bfd_get_gp_value (output_bfd);
  
***************
*** 33803 ****
        loc = plt_sec->contents + dyn_i->plt_offset;
  
        memcpy (loc, plt_min_entry, PLT_MIN_ENTRY_SI
!       elf64_ia64_install_value (output_bfd, loc, index, R_IA64_IMM22);
!       elf64_ia64_install_value (output_bfd, loc+dyn_i->plt_offset,
  				R_IA64_PCREL21B);
  
        plt_addr = (plt_sec->output_section->vma
--- 3796,3803 ----
    loc = plt_sec->contents + dyn_i->plt_offset;
  
        memcpy (loc, plt_min_entry, PLT_MIN_ENTRY_SIZE);
!       elia64_install_value (output_bfd, loc, index, R_IA64_IMM22);
!       elfNN_ia64_install_value (output_bfd, loc+2, -dyn_i->pffset,
  				R_IA64_PCREL21B);
  
        plt_addr = (plt_sec->output_section->vma
***************
*** 3811,3817 ****
 loc = plt_sec->contents + dyn_i->plt2_offset;
  
  	  memcpy (loc, plt_full_entry, PLT_FULL_ENTRY_SIZE);
! 	  elf64_iinstall_value (output_bfd, loc, pltoff_addr - gp_val,
  				    R_IA64_IMM22);
  
  	  /* Mark the symbol as undefined, rathhan as defined in the
--- 3811,3817 ----
  	  loc = plt_sec->contents + dyn_i->plt2_offset;
  
  	  memcpy (loc, plt_fentry, PLT_FULL_ENTRY_SIZE);
! 	  elfNN_ia64_install_value (output_bfd, loc, pltoff_addr - gp_val,
  				    R_IA64_IMM22);
 	  /* Mark the symbol as undefined, rather than as defined in the
***************
*** 3825,3833 ****
        /* Create the mic relocation.  */
        outrel.r_offset = pltoff_addr;
        if (bfd_little_endian (output_bfd))
! 	outrel.r_info = ELR_INFO (h->dynindx, R_IA64_IPLTLSB);
        else
! 	outrel.r_info = ELF64_R_INFO (h->dynindx, R_IA64_IPLTMSB);
      trel.r_addend = 0;
  
        /* This is fun.  In the .IA_64.pltoff section, we've got entries
--- 3825,3833 ----
        /*ate the dynamic relocation.  */
        outrel.r_offset = pltoff_addr;
        if (bfd_little_endian (output_bfd))
! 	outrelnfo = ELFNN_R_INFO (h->dynindx, R_IA64_IPLTLSB);
        else
! 	outrel.r_info = ELFNN_R_INFO (h->dynindx, R_IA64_IPLT;
        outrel.r_addend = 0;
  
        /* This is fun.  In the .IA_64.pltoff section, we've got entries
***************
*842,3851 ****
  	 existing sec->reloc_count to be the base of the array of
  	 PLT relocations.  */
  
!       rel = (Elfxternal_Rela *)ia64_info->rel_pltoff_sec->contents;
        rel += ia64_info->rel_pltoff_sec->reloc_count;
  
!   bfd_elf64_swap_reloca_out (output_bfd, &outrel, rel + index);
      }
  
    /* Mark some specially defined symbols asolute.  */
--- 3842,3851 ----
  	 existing sec->reloc_count to be the base of the array of
  	 PLT relocations.  */
  
!   rel = (ElfNN_External_Rela *)ia64_info->rel_pltoff_sec->contents;
        rel += ia64_info->rel_pltoff_sec->recount;
  
!       bfd_elfNN_swap_reloca_out (output_bfd, &outrel, rel + index);
      }
  
    /* Mark some specially ded symbols as absolute.  */
***************
*** 3858,3876 ****
  }
  
  static boolean
! elf64_ia64_finish_dynamic_sections (, info)
       bfd *abfd;
       struct bfd_link_info *info;
  {
!   struct elf64_ia64_link_hash_table *ia64_info;
    bfd *bj;
  
!   ia64_info = elf64_ia64_hash_table (info);
    dynobj = ia64_info->root.dynobj;
  
    if (elf_hash_table (infot;dynamic_sections_created)
      {
!       Elf64_External_Dyn *dyncon, *dynconend;
        asection *sdyn, *sgotplt;
      d_vma gp_val;
  
--- 3858,3876 ----
  }
  
  static boolean
! elfNN_ia64_finish_dynamic_sections (abfd, info)
       bfd *ab       struct bfd_link_info *info;
  {
!   struct elfNN_ia64_link_hash_table *ia64_info;
    bfd *dynobj;
  
!   ia64_info =NN_ia64_hash_table (info);
    dynobj = ia64_info->root.dynobj;
  
    if (elf_hash_table (info)->dynamic_sections_cre)
      {
!       ElfNN_External_Dyn *dyncon, *dynconend;
        asection *sdyn, *sgotplt;
        bfd_vma gp_val;
  
***********
*** 3877,3884 ****
        sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
        sgotplt = bfd_get_section_by_ (dynobj, ".got.plt");
        BFD_ASSERT (sdyn != NULL);
!       dyncon = (Elf64_External_Dyn *) sdyn->contents;
!      conend = (Elf64_External_Dyn *) (sdyn->contents + sdyn->_raw_size);
  
        gp_val = _bfd_get_gp_value (abfd);
  
-877,3884 ----
        sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
        sgotplt = bfd_get_section_by_name (dynobjgot.plt");
        BFD_ASSERT (sdyn != NULL);
!       dyncon = (ElfNN_External_Dyn *) sdyn->contents;
!       dynconend =fNN_External_Dyn *) (sdyn->contents + sdyn->_raw_size);
  
        gp_val = _bfd_get_gp_value (abfd);
  
*************** 3888,3894 ****
  	  const char *name;
  	  asection *s;
  
! 	  bfd_elf64_swap_dyn_in (dynobj, dyncon, &dyn);
  
  	 tch (dyn.d_tag)
  	    {
--- 3888,3894 ----
  	  const char *name;
  	  asection *s;
  
! 	  bfd_elfNN_swap_dyn_in (dynobj, on, &dyn);
  
  	  switch (dyn.d_tag)
  	    {
***************
*** 3898,3904 ****
  
  	    case DT_PLTRELSZ:
  	      d9jĀ:_ud_val = (ia6f64_External_Rela));
  	      break;
  
  	    case DT_JMPREL:
-898,3904 ----
  
  	    case DT_PLTRELSZ:
  	      dyn.d_un.d_val = (ia64_info->minplt_entries
! 				* sizeof (ElfNN_Exte_Rela));
  	      break;
  
  	    case DT_JMPREL:
***************
*** 3906,3912 ****
  	      dyn.d_un.d_ptr = (ia64_info-&el_pltoff_sec->output_section->vma
  				+ ia64_info->rel_pltoff_sec->output_offset
  				+ (ia64_info->rel_pf_sec->reloc_count
! 				   * sizeof (Elf64_External_Rela)));
  	      break;
  
  	    case DT_IA_64_PLT_RESERVE:
--- 39912 ----
  	      dyn.d_un.d_ptr = (ia64_info->rel_pltoff_sec->output_section->vma
  				+ ia64_info->rel_pltoff->output_offset
  				+ (ia64_info->rel_pltoff_sec->reloc_count
! 				   * sizeof (ElfNN_External_Rela)));
  	     ak;
  
  	    case DT_IA_64_PLT_RESERVE:
***************
*** 3918,3924 ****
  	      /* Do not have RELASZ include JMPREL.   makes things
  		 easier on ld.so.  This is not what the rest of BFD set up. */
  	      dyn.d_un.d_val -= (ia64_info->mt_entries
! 				 * sizeof (Elf64_External_Rela));
  	      break;
  
  	    case DT_INIT:
--- 3918,3924 ----
  	      /* Do have RELASZ include JMPREL.  This makes things
  		 easier on ld.so.  This is not what the rest of BFD set up. */
  	      d_un.d_val -= (ia64_info->minplt_entries
! 				 * sizeof (ElfNN_External_Rela));
  	      break;
  
  	    case DT_INIT:
***********
*** 3925,3931 ****
  	    case DT_FINI:
  	      {
  		struct elf_link_hash_entry *h;
! 		struct elf64_ia64_dyn_snfo *dyn_i;
  		const char *which;
   
  		if (dyn.d_tag == DT_INIT)
--- 3925,3931 ----
  	    case DT_FINI:
  	      {
  		9jĀ:ctlf_link_hasho *dyn_i;
  		const char *which;
   
  		if (dyn.d_tag == DT_INI**************
*** 3941,3947 ****
  	      }
  	    }
  
! 	  bfd_elf64_swap_dyn_out (abfd, &dyn, dyncon);
  	}
  
     * Initialize the PLT0 entry */
--- 3941,3947 ----
  	      }
  	    }
  
! 	  bfd_elfNN_swap_dyn_out (abfd, &dyn, dyncon 	}
  
        /* Initialize the PLT0 entry */
***************
*** 3956,3962 ****
  		    + sgotplt->output_offset
  		  gp_val);
  
! 	  elf64_ia64_install_value (abfd, loc+1, pltres, R_IA64_GPREL22);
  	}
      }
  
--- 3956,3962 ----
  		    otplt->output_offset
  		    - gp_val);
  
! 	  elfNN_ia64_install_value (abfd, loc+1, pltres, R_IA64_GPREL22);
  	}
    9jĀ:  ************ep IA-64 specific file flags. */
  static boolean
! elf64_ia64_srivate_flags (abfd, flags)
       bfd *abfd;
       flagword flags;
  {
--- 3967,3973 ----
  
  /* Function to keep IA-64 spic file flags. */
  static boolean
! elfNN_ia64_set_private_flags (abfd, flags)
       bfd *abfd;
       flagword flags;
  {************
*** 3981,3987 ****
  
  /* Copy backend specific data from one object module to another */
  static boolean
! e_ia64_copy_private_bfd_data (ibfd, obfd)
       bfd *ibfd, *obfd;
  {
    if (   bfd_get_flavour (ibfd) != bfd_target_elf_flr
--- 3981,3987 ----
  
  /* Copy backend specific data from one object module to another */
  static boolean
! elfNN_ia64_cprivate_bfd_data (ibfd, obfd)
       bfd *ibfd, *obfd;
  {
    if (   bfd_get_flavour (ibfd) != bfd_target_elf_flavour
***********
*** 4000,4006 ****
  /* Merge backend specific data from an object file to the output
     object file when linking.   static boolean
! elf64_ia64_merge_private_bfd_data (ibfd, obfd)
       bfd *ibfd, *obfd;
  {
    flagword out_flags;
--- 44006 ----
  /* Merge backend specific data from an object file to the output
     object file when linking.  */
  static boo
! elfNN_ia64_merge_private_bfd_data (ibfd, obfd)
       bfd *ibfd, *obfd;
  {
    flagword out_flags;
***************
*** 44095 ****
  }
  
  static boolean
! elf64_ia64_print_private_bfd_data (abfd, ptr)
       bfd *abfd;
       PTR ptr;
  {
--- ,4095 ----
  }
  
  static boolean
! elfNN_ia64_print_private_bfd_data (abfd, ptr)
       bfd *abfd;
       PTR ptr;
  {
***********
*** 4112,4121 ****
    return true;
  }
  
! #define TARGET_LITTLE_SYM		bfd_elf64_ia64_little_vec
! #define TARGETTLE_NAME		"elf64-ia64-little"
! #define TARGET_BIG_SYM			bfd_elf64_ia64_big_vec
! #define TARGET_BIG_NAME			"elf64-ia64-big"define ELF_ARCH			bfd_arch_ia64
  #define ELF_MACHINE_CODE		EM_IA_64
  #define ELF_MACHINE_ALT1		1999	/* EAS2.3 */
--- 4112,9jĀ: --
    returnbfd_elfNN_ia64_little_vec
! #define TARGET_LITTLE_NAME		"elfNN-ilittle"
! #define TARGET_BIG_SYM			bfd_elfNN_ia64_big_vec
! #define TARGET_BIG_NAME			"elfNN-ia64-big"
  #define ELF_ARCH			arch_ia64
  #define ELF_MACHINE_CODE		EM_IA_64
  #define ELF_MACHINE_ALT1		1999	/* EAS2.3 */
***************
*** 4123,4177 *  #define ELF_MAXPAGESIZE			0x10000	/* 64KB */
  
  #define elf_backend_section_from_shdr \
! 	elf64_ia64_section_from_shdr
efine elf_backend_section_flags \
! 	elf64_ia64_section_flags
  #define elf_backend_fake_sections \
! 	elf64_ia64_fake_secti  #define elf_backend_add_symbol_hook \
! 	elf64_ia64_add_symbol_hook
  #define elf_backend_additional_program_headers \
! 	4_ia64_additional_program_headers
  #define elf_backend_modify_segment_map \
! 	elf64_ia64_modify_segment_map
  #define elf__to_howto \
! 	elf64_ia64_info_to_howto
  
! #define bfd_elf64_bfd_reloc_type_lookup \
! 	elf64_ia64_reloc_type_lookup
! #de bfd_elf64_bfd_is_local_label_name \
! 	elf64_ia64_is_local_label_name
! #define bfd_elf64_bfd_relax_section \
! 	elf64_ia64ax_section
  
  /* Stuff for the BFD linker: */
! #define bfd_elf64_bfd_link_hash_table_create \
! 	elf64_ia64_hash_table_cr
  #define elf_backend_create_dynamic_sections \
! 	elf64_ia64_create_dynamic_sections
  #define elf_backend_check_relocs \
lf64_ia64_check_relocs
  #define elf_backend_adjust_dynamic_symbol \
! 	elf64_ia64_adjust_dynamic_symbol
  #define elf_backeize_dynamic_sections \
! 	elf64_ia64_size_dynamic_sections
  #define elf_backend_relocate_section \
! 	elf64_ia64_relocate_son
  #define elf_backend_finish_dynamic_symbol \
! 	elf64_ia64_finish_dynamic_symbol
  #define elf_backend_finish_dynamic_sens \
! 	elf64_ia64_finish_dynamic_sections
! #define bfd_elf64_bfd_final_link \
! 	elf64_ia64_final_link
  
! #define bfd_elbfd_copy_private_bfd_data \
! 	elf64_ia64_copy_private_bfd_data
! #define bfd_elf64_bfd_merge_private_bfd_data \
! 	elf64_iaerge_private_bfd_data
! #define bfd_elf64_bfd_set_private_flags \
! 	elf64_ia64_set_private_flags
! #define bfd_elf64_bfd_prprivate_bfd_data \
! 	elf64_ia64_print_private_bfd_data
  
  #define elf_backend_plt_readonly	1
  #define elf_backend_want_pym	0
--- 4123,4177 ----
  #define ELF_MAXPAGESIZE			0x10000	/* 64KB */
  
  #define elf_backend_section_from_shdr \
! 	elfNN4_section_from_shdr
  #define elf_backend_section_flags \
! 	elfNN_ia64_section_flags
  #define elf_backend_fake_sections \
lfNN_ia64_fake_sections
  #define elf_backend_add_symbol_hook \
! 	elfNN_ia64_add_symbol_hook
  #define elf_backend_additionrogram_headers \
! 	elfNN_ia64_additional_program_headers
  #define elf_backend_modify_segment_map \
! 	elfNN_ia64_modify_set_map
  #define elf_info_to_howto \
! 	elfNN_ia64_info_to_howto
  
! #define bfd_elfNN_bfd_reloc_type_lookup \
! 	elfNN_ia64oc_type_lookup
! #define bfd_elfNN_bfd_is_local_label_name \
! 	elfNN_ia64_is_local_label_name
! #define bfd_elfNN_bfd_relaxtion \
! 	elfNN_ia64_relax_section
  
  /* Stuff for the BFD linker: */
! #define bfd_elfNN_bfd_link_hash_table_create \
! 	N_ia64_hash_table_create
  #define elf_backend_create_dynamic_sections \
! 	elfNN_ia64_create_dynamic_sections
  #define elfkend_check_relocs \
! 	elfNN_ia64_check_relocs
  #define elf_backend_adjust_dynamic_symbol \
! 	elfNN_ia64_adjust_dynamic_sy
  #define elf_backend_size_dynamic_sections \
! 	elfNN_ia64_size_dynamic_sections
  #define elf_backend_relocate_section \
lfNN_ia64_relocate_section
  #define elf_backend_finish_dynamic_symbol \
! 	elfNN_ia64_finish_dynamic_symbol
  #define elf_bnd_finish_dynamic_sections \
! 	elfNN_ia64_finish_dynamic_sections
! #define bfd_elfNN_bfd_final_link \
! 	elfNN_ia64_final_
  
! #define bfd_elfNN_bfd_copy_private_bfd_data \
! 	elfNN_ia64_copy_private_bfd_data
! #define bfd_elfNN_bfd_merge_privat9jĀ:d_ta \
! 	elfNelfNN_bfd_set_private_flags \
! 	elfNN_ia64_set_private_flags
! ine bfd_elfNN_bfd_print_private_bfd_data \
! 	elfNN_ia64_print_private_bfd_data
  
  #define elf_backend_plt_readonly	1
  #de elf_backend_want_plt_sym	0
***************
*** 4183,4189 ****
  #define elf_backend_may_use_rela_p	1
  #define elf_backendault_use_rela_p	1
  #define elf_backend_want_dynbss		0
! #define elf_backend_copy_indirect_symbol elf64_ia64_hash_copy_indir! #define elf_backend_hide_symbol		elf64_ia64_hash_hide_symbol
  
! #include "elf64-target.h"
--- 4183,4189 ----
  #define eackend_may_use_rela_p	1
  #define elf_backend_default_use_rela_p	1
  #define elf_backend_want_dynbss		0
! #define elf_backenpy_indirect_symbol elfNN_ia64_hash_copy_indirect
! #define elf_backend_hide_symbol		elfNN_ia64_hash_hide_symbol
  
! #includlfNN-target.h"

Index N/th> [Date Index] [Subject&;Index] [Author Index] [Thread Index] >
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Threbsp;Next]
ODY>