public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [patch] aix ld import symbols
@ 2001-08-21  6:52 Tom Rix
  2001-08-21 11:02 ` Geoff Keating
  0 siblings, 1 reply; 2+ messages in thread
From: Tom Rix @ 2001-08-21  6:52 UTC (permalink / raw)
  To: binutils

New handling of XMC_XO and syscall symbols from import files.  Cleaned up old
broken method. 

Tom
-- 
Tom Rix 
GCC Engineer
trix@redhat.com
256.704.9201
2001-08-20  Tom Rix <trix@redhat.com> 

	* xcofflink.c (bfd_xcoff_import_symbol): Handle import file XMC_XO 
	and syscall symbols.
	(write_global_symbol) : Same.	
	(bfd_xcoff_export_symbol): Remove unused syscall param.
	* libxcoff.h: Change prototype of bfd_xcoff_export symbol and 
	bfd_xcoff_import_symbol.
 
Index: libxcoff.h
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/libxcoff.h,v
retrieving revision 1.1.2.1
diff -c -p -r1.1.2.1 libxcoff.h
*** libxcoff.h	2001/01/30 21:37:03	1.1.2.1
--- libxcoff.h	2001/08/20 17:48:47
*************** extern boolean bfd_xcoff_link_record_set
*** 229,238 ****
  	   bfd_size_type));
  extern boolean bfd_xcoff_import_symbol
    PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *,
! 	   bfd_vma, const char *, const char *, const char *));
  extern boolean bfd_xcoff_export_symbol
!   PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *,
! 	   boolean));
  extern boolean bfd_xcoff_link_count_reloc
    PARAMS ((bfd *, struct bfd_link_info *, const char *));
  extern boolean bfd_xcoff_record_link_assignment
--- 229,237 ----
  	   bfd_size_type));
  extern boolean bfd_xcoff_import_symbol
    PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *,
! 	   bfd_vma, const char *, const char *, const char *, unsigned int));
  extern boolean bfd_xcoff_export_symbol
!   PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *));
  extern boolean bfd_xcoff_link_count_reloc
    PARAMS ((bfd *, struct bfd_link_info *, const char *));
  extern boolean bfd_xcoff_record_link_assignment
Index: xcofflink.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/xcofflink.c,v
retrieving revision 1.75.86.5
diff -c -p -r1.75.86.5 xcofflink.c
*** xcofflink.c	2001/08/13 17:55:42	1.75.86.5
--- xcofflink.c	2001/08/20 17:48:47
*************** bfd_xcoff_link_record_set (output_bfd, i
*** 2620,2626 ****
  
  boolean
  bfd_xcoff_import_symbol (output_bfd, info, harg, val, imppath, impfile,
! 			 impmember)
       bfd *output_bfd;
       struct bfd_link_info *info;
       struct bfd_link_hash_entry *harg;
--- 2620,2626 ----
  
  boolean
  bfd_xcoff_import_symbol (output_bfd, info, harg, val, imppath, impfile,
! 			 impmember, syscall_flag)
       bfd *output_bfd;
       struct bfd_link_info *info;
       struct bfd_link_hash_entry *harg;
*************** bfd_xcoff_import_symbol (output_bfd, inf
*** 2628,2633 ****
--- 2628,2634 ----
       const char *imppath;
       const char *impfile;
       const char *impmember;
+      unsigned int syscall_flag;
  {
    struct xcoff_link_hash_entry *h = (struct xcoff_link_hash_entry *) harg;
  
*************** bfd_xcoff_import_symbol (output_bfd, inf
*** 2670,2676 ****
  	h = hds;
      }
  
!   h->flags |= XCOFF_IMPORT;
  
    if (val != (bfd_vma) -1)
      {
--- 2671,2677 ----
  	h = hds;
      }
  
!   h->flags |= (XCOFF_IMPORT | syscall_flag);
  
    if (val != (bfd_vma) -1)
      {
*************** bfd_xcoff_import_symbol (output_bfd, inf
*** 2737,2747 ****
  /* Export a symbol.  */
  
  boolean
! bfd_xcoff_export_symbol (output_bfd, info, harg, syscall)
       bfd *output_bfd;
       struct bfd_link_info *info;
       struct bfd_link_hash_entry *harg;
-      boolean syscall ATTRIBUTE_UNUSED;
  {
    struct xcoff_link_hash_entry *h = (struct xcoff_link_hash_entry *) harg;
  
--- 2738,2747 ----
  /* Export a symbol.  */
  
  boolean
! bfd_xcoff_export_symbol (output_bfd, info, harg)
       bfd *output_bfd;
       struct bfd_link_info *info;
       struct bfd_link_hash_entry *harg;
  {
    struct xcoff_link_hash_entry *h = (struct xcoff_link_hash_entry *) harg;
  
*************** xcoff_write_global_symbol (h, p)
*** 5477,5483 ****
      if (((h->flags & XCOFF_DEF_REGULAR) == 0 && 
  	 (h->flags & XCOFF_DEF_DYNAMIC) != 0) || 
  	(h->flags & XCOFF_IMPORT) != 0) {
!       ldsym->l_smtype |= L_IMPORT;
      }
  
      if (((h->flags & XCOFF_DEF_REGULAR) != 0 && 
--- 5477,5486 ----
      if (((h->flags & XCOFF_DEF_REGULAR) == 0 && 
  	 (h->flags & XCOFF_DEF_DYNAMIC) != 0) || 
  	(h->flags & XCOFF_IMPORT) != 0) {
!       /* Clear l_smtype 
! 	 Import symbols are defined so the check above will make the l_smtype
! 	 XTY_SD.  But this is not correct, it should be cleared. */
!       ldsym->l_smtype = L_IMPORT;
      }
  
      if (((h->flags & XCOFF_DEF_REGULAR) != 0 && 
*************** xcoff_write_global_symbol (h, p)
*** 5496,5501 ****
--- 5499,5527 ----
  
      ldsym->l_smclas = h->smclas;
  
+     if (ldsym->l_smtype & L_IMPORT)
+       {
+ 	if ((h->root.type == bfd_link_hash_defined ||
+ 	     h->root.type == bfd_link_hash_defweak) &&
+ 	    (h->root.u.def.value != 0))
+ 	  {
+ 	    ldsym->l_smclas = XMC_XO;
+ 	  }
+ 	else if ((h->flags & (XCOFF_SYSCALL32 | XCOFF_SYSCALL64)) ==
+ 		 (XCOFF_SYSCALL32 | XCOFF_SYSCALL64))
+ 	  {
+ 	    ldsym->l_smclas = XMC_SV3264;
+ 	  }
+ 	else if (h->flags & XCOFF_SYSCALL32) 
+ 	  {
+ 	    ldsym->l_smclas = XMC_SV;
+ 	  }
+ 	else if (h->flags & XCOFF_SYSCALL64) 
+ 	  {
+ 	    ldsym->l_smclas = XMC_SV64;
+ 	  }
+       }
+        
      if (ldsym->l_ifile == (bfd_size_type) -1) {
        ldsym->l_ifile = 0;
  

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

* Re: [patch] aix ld import symbols
  2001-08-21  6:52 [patch] aix ld import symbols Tom Rix
@ 2001-08-21 11:02 ` Geoff Keating
  0 siblings, 0 replies; 2+ messages in thread
From: Geoff Keating @ 2001-08-21 11:02 UTC (permalink / raw)
  To: trix; +Cc: binutils

This is also OK.

-- 
- Geoffrey Keating <geoffk@geoffk.org>

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

end of thread, other threads:[~2001-08-21 11:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-08-21  6:52 [patch] aix ld import symbols Tom Rix
2001-08-21 11:02 ` Geoff Keating

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