This is the mail archive of the binutils@sourceware.cygnus.com mailing list for the binutils project.


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

ia64 gas patch for unwind info bugs


I've checked in this patch from David Mosberger.  It fixes two bugs in the
ia64 unwind info support that he found.  This requires a corresponding patch
to the gcc exception handling unwind support.

2000-05-08  David Mosberger  <davidm@hpl.hp.com>

	* config/tc-ia64.c (output_P7_format, case mem_stack_f): Output fixed
	frame size in units of 16 bytes, as required per SW Conventions manual.
	(output_unw_records): Output info-block header as a dword to get
	byte-order right.

Index: tc-ia64.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-ia64.c,v
retrieving revision 1.2
diff -p -r1.2 tc-ia64.c
*** tc-ia64.c	2000/04/23 02:53:35	1.2
--- tc-ia64.c	2000/05/09 01:46:01
*************** output_P7_format (f, rtype, w1, w2)
*** 1010,1017 ****
    switch (rtype)
      {
        case mem_stack_f:
!         r = 0;
! 	count += output_leb128 (bytes + count, w2, 0);
  	break;
        case mem_stack_v:
          r = 1;
--- 1010,1017 ----
    switch (rtype)
      {
        case mem_stack_f:
! 	r = 0;
! 	count += output_leb128 (bytes + count, w2 >> 4, 0);
  	break;
        case mem_stack_v:
          r = 1;
*************** output_unw_records (list, ptr)
*** 2213,2223 ****
    /* Clear the padding area and personality.  */
    memset (mem + 8 + size, 0 , extra + 8);
    /* Initialize the header area.  */
!   md_number_to_chars (mem, 1, 2);	/* version number. */
!   md_number_to_chars (mem + 2, 0x03, 2);  /* Set E and U handler bits.  */    
! 
!   /* Length in double words.  */
!   md_number_to_chars (mem + 4, (size + extra) / 8, 4);
  
    process_unw_records (list, output_vbyte_mem);
  
--- 2213,2222 ----
    /* Clear the padding area and personality.  */
    memset (mem + 8 + size, 0 , extra + 8);
    /* Initialize the header area.  */
!   md_number_to_chars (mem, (  ((bfd_vma) 1 << 48)     /* version */
! 			    | ((bfd_vma) 3 << 32)     /* U & E handler flags */
! 			    | ((size + extra) / 8)),  /* length (dwords) */
! 		      8);
  
    process_unw_records (list, output_vbyte_mem);
  

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