This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Follow-up to November's .eh_frame optimisations (3/3)


This patch follows on from:

    http://sources.redhat.com/ml/binutils/2005-01/msg00133.html
    http://sources.redhat.com/ml/binutils/2005-01/msg00134.html

and implements the optimisation itself.

The original code was written so that an eh_cie_fde's size could be
shrunk by the amount of padding.  All the patch below does is calculate
the appropriate shrink value.  It leaves the size as-is if it can't
understand the CFA instructions.

The test case I added last November was parameterised so that the CIEs
and FDEs could be padded either with nops or with non-nop instructions.
The existing test just pads with non-nop instructions, but the one below
pads with nops instead, and checks that we don't grow a CIE or FDE if
it already has room for the new data.

Tested in the same way as previous patches.  OK to install?

Richard


bfd/
	* elf-eh-frame.c (skip_cfa_op, skip_non_nops): New functions.
	(_bfd_elf_discard_section_eh_frame): Use them to interpret the CFA
	instructions.  If the amount of padding is known, reduce the size
	of the CIE or FDE by that amount.

ld/testsuite/
	* ld-mips-elf/eh-frame2-{n32,n64}.d: New tests.
	* ld-mips-elf/mips-elf.exp: Run them.

*** bfd/elf-eh-frame.c.3	2005-01-07 11:12:01.423299000 +0000
--- bfd/elf-eh-frame.c	2005-01-07 11:41:02.311356990 +0000
*************** size_of_output_cie_fde (struct eh_cie_fd
*** 260,265 ****
--- 260,361 ----
  	  + alignment - 1) & -alignment;
  }
  
+ /* Assume that the bytes between *ITER and END are CFA instructions.
+    Try to move *ITER past the first instruction and return true on
+    success.  ENCODED_PTR_WIDTH gives the width of pointer entries.  */
+ 
+ static bfd_boolean
+ skip_cfa_op (bfd_byte **iter, bfd_byte *end, unsigned int encoded_ptr_width)
+ {
+   bfd_byte op;
+   bfd_vma length;
+ 
+   if (!read_byte (iter, end, &op))
+     return FALSE;
+ 
+   switch (op & 0x80 ? op & 0xc0 : op)
+     {
+     case DW_CFA_nop:
+     case DW_CFA_advance_loc:
+     case DW_CFA_restore:
+       /* No arguments.  */
+       return TRUE;
+ 
+     case DW_CFA_offset:
+     case DW_CFA_restore_extended:
+     case DW_CFA_undefined:
+     case DW_CFA_same_value:
+     case DW_CFA_def_cfa_register:
+     case DW_CFA_def_cfa_offset:
+     case DW_CFA_def_cfa_offset_sf:
+     case DW_CFA_GNU_args_size:
+       /* One leb128 argument.  */
+       return skip_leb128 (iter, end);
+ 
+     case DW_CFA_offset_extended:
+     case DW_CFA_register:
+     case DW_CFA_def_cfa:
+     case DW_CFA_offset_extended_sf:
+     case DW_CFA_GNU_negative_offset_extended:
+     case DW_CFA_def_cfa_sf:
+       /* Two leb128 arguments.  */
+       return (skip_leb128 (iter, end)
+ 	      && skip_leb128 (iter, end));
+ 
+     case DW_CFA_def_cfa_expression:
+       /* A variable-length argument.  */
+       return (read_uleb128 (iter, end, &length)
+ 	      && skip_bytes (iter, end, length));
+ 
+     case DW_CFA_expression:
+       /* A leb128 followed by a variable-length argument.  */
+       return (skip_leb128 (iter, end)
+ 	      && read_uleb128 (iter, end, &length)
+ 	      && skip_bytes (iter, end, length));
+ 
+     case DW_CFA_set_loc:
+       return skip_bytes (iter, end, encoded_ptr_width);
+ 
+     case DW_CFA_advance_loc1:
+       return skip_bytes (iter, end, 1);
+ 
+     case DW_CFA_advance_loc2:
+       return skip_bytes (iter, end, 2);
+ 
+     case DW_CFA_advance_loc4:
+       return skip_bytes (iter, end, 4);
+ 
+     case DW_CFA_MIPS_advance_loc8:
+       return skip_bytes (iter, end, 8);
+ 
+     default:
+       return FALSE;
+     }
+ }
+ 
+ /* Try to interpret the bytes between BUF and END as CFA instructions.
+    If every byte makes sense, return a pointer to the first DW_CFA_nop
+    padding byte, or END if there is no padding.  Return null otherwise.
+    ENCODED_PTR_WIDTH is as for skip_cfa_op.  */
+ 
+ static bfd_byte *
+ skip_non_nops (bfd_byte *buf, bfd_byte *end, unsigned int encoded_ptr_width)
+ {
+   bfd_byte *last;
+ 
+   last = buf;
+   while (buf < end)
+     if (*buf == DW_CFA_nop)
+       buf++;
+     else
+       {
+ 	if (!skip_cfa_op (&buf, end, encoded_ptr_width))
+ 	  return 0;
+ 	last = buf;
+       }
+   return last;
+ }
+ 
  /* This function is called for each input file before the .eh_frame
     section is relocated.  It discards duplicate CIEs and FDEs for discarded
     functions.  The function returns TRUE iff any entries have been
*************** _bfd_elf_discard_section_eh_frame
*** 356,362 ****
    for (;;)
      {
        unsigned char *aug;
!       bfd_byte *start, *end;
        bfd_size_type length;
  
        if (sec_info->count == sec_info->alloced)
--- 452,458 ----
    for (;;)
      {
        unsigned char *aug;
!       bfd_byte *start, *end, *insns;
        bfd_size_type length;
  
        if (sec_info->count == sec_info->alloced)
*************** _bfd_elf_discard_section_eh_frame
*** 602,613 ****
  	  if (cie.fde_encoding == DW_EH_PE_omit)
  	    cie.fde_encoding = DW_EH_PE_absptr;
  
! 	  initial_insn_length = cie.hdr.length - (buf - last_fde - 4);
  	  if (initial_insn_length <= 50)
  	    {
  	      cie.initial_insn_length = initial_insn_length;
  	      memcpy (cie.initial_instructions, buf, initial_insn_length);
  	    }
  	  buf += initial_insn_length;
  	  ENSURE_NO_RELOCS (buf);
  	  last_cie = last_fde;
--- 698,710 ----
  	  if (cie.fde_encoding == DW_EH_PE_omit)
  	    cie.fde_encoding = DW_EH_PE_absptr;
  
! 	  initial_insn_length = end - buf;
  	  if (initial_insn_length <= 50)
  	    {
  	      cie.initial_insn_length = initial_insn_length;
  	      memcpy (cie.initial_instructions, buf, initial_insn_length);
  	    }
+ 	  insns = buf;
  	  buf += initial_insn_length;
  	  ENSURE_NO_RELOCS (buf);
  	  last_cie = last_fde;
*************** _bfd_elf_discard_section_eh_frame
*** 648,665 ****
  
  	  /* Skip the augmentation size, if present.  */
  	  if (cie.augmentation[0] == 'z')
! 	    REQUIRE (skip_leb128 (&buf, end));
  
  	  /* Of the supported augmentation characters above, only 'L'
  	     adds augmentation data to the FDE.  This code would need to
  	     be adjusted if any future augmentations do the same thing.  */
  	  if (cie.lsda_encoding != DW_EH_PE_omit)
! 	    this_inf->lsda_offset = buf - start;
  
  	  buf = last_fde + 4 + hdr.length;
  	  SKIP_RELOCS (buf);
  	}
  
        this_inf->fde_encoding = cie.fde_encoding;
        this_inf->lsda_encoding = cie.lsda_encoding;
        sec_info->count++;
--- 745,782 ----
  
  	  /* Skip the augmentation size, if present.  */
  	  if (cie.augmentation[0] == 'z')
! 	    REQUIRE (read_uleb128 (&buf, end, &length));
! 	  else
! 	    length = 0;
  
  	  /* Of the supported augmentation characters above, only 'L'
  	     adds augmentation data to the FDE.  This code would need to
  	     be adjusted if any future augmentations do the same thing.  */
  	  if (cie.lsda_encoding != DW_EH_PE_omit)
! 	    {
! 	      this_inf->lsda_offset = buf - start;
! 	      /* If there's no 'z' augmentation, we don't know where the
! 		 CFA insns begin.  Assume no padding.  */
! 	      if (cie.augmentation[0] != 'z')
! 		length = end - buf;
! 	    }
! 
! 	  /* Skip over the augmentation data.  */
! 	  REQUIRE (skip_bytes (&buf, end, length));
! 	  insns = buf;
  
  	  buf = last_fde + 4 + hdr.length;
  	  SKIP_RELOCS (buf);
  	}
  
+       /* Try to interpret the CFA instructions and find the first
+ 	 padding nop.  Shrink this_inf's size so that it doesn't
+ 	 including the padding.  */
+       length = get_DW_EH_PE_width (cie.fde_encoding, ptr_size);
+       insns = skip_non_nops (insns, end, length);
+       if (insns != 0)
+ 	this_inf->size -= end - insns;
+ 
        this_inf->fde_encoding = cie.fde_encoding;
        this_inf->lsda_encoding = cie.lsda_encoding;
        sec_info->count++;
Index: ld/testsuite/ld-mips-elf/mips-elf.exp
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/mips-elf.exp,v
retrieving revision 1.23
diff -c -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.23 mips-elf.exp
*** ld/testsuite/ld-mips-elf/mips-elf.exp	14 Dec 2004 09:48:20 -0000	1.23
--- ld/testsuite/ld-mips-elf/mips-elf.exp	7 Jan 2005 12:19:22 -0000
*************** run_dump_test "reloc-merge-lo16"
*** 78,83 ****
--- 78,85 ----
  if {$has_newabi && $linux_gnu} {
      run_dump_test "eh-frame1-n32"
      run_dump_test "eh-frame1-n64"
+     run_dump_test "eh-frame2-n32"
+     run_dump_test "eh-frame2-n64"
  }
  
  run_dump_test "jaloverflow"
diff -c /dev/null ld/testsuite/ld-mips-elf/eh-frame2-n32.d
*** /dev/null	2004-12-03 11:50:38.225654048 +0000
--- ld/testsuite/ld-mips-elf/eh-frame2-n32.d	2005-01-07 12:19:05.517449557 +0000
***************
*** 0 ****
--- 1,255 ----
+ #name: MIPS eh-frame 2, n32
+ #source: eh-frame1.s
+ #source: eh-frame1.s
+ #as: -EB -n32 --defsym alignment=2 --defsym fill=0
+ #readelf: --relocs -wf
+ #ld: -shared -melf32btsmipn32 -Teh-frame1.ld
+ 
+ Relocation section '\.rel\.dyn' .*:
+  *Offset .*
+ 00000000  00000000 R_MIPS_NONE *
+ # Initial PCs for the FDEs attached to CIE 0xb8
+ 000300d8  00000003 R_MIPS_REL32 *
+ 000300ec  00000003 R_MIPS_REL32 *
+ # Likewise CIE 0x218
+ 00030238  00000003 R_MIPS_REL32 *
+ 0003024c  00000003 R_MIPS_REL32 *
+ 0003008b  00000503 R_MIPS_REL32      00000000   foo
+ 000300cc  00000503 R_MIPS_REL32      00000000   foo
+ 0003010a  00000503 R_MIPS_REL32      00000000   foo
+ 000301eb  00000503 R_MIPS_REL32      00000000   foo
+ 0003022c  00000503 R_MIPS_REL32      00000000   foo
+ 0003026a  00000503 R_MIPS_REL32      00000000   foo
+ #...
+ The section \.eh_frame contains:
+ 
+ 00000000 00000010 00000000 CIE
+   Version:               1
+   Augmentation:          "zR"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     10
+ 
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000014 00000010 00000018 FDE cie=00000000 pc=00020000..00020010
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000028 00000010 0000002c FDE cie=00000000 pc=00020010..00020030
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ # basic2 removed
+ 0000003c 00000010 00000040 FDE cie=00000000 pc=00020030..00020060
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ # basic3 removed
+ 00000050 00000010 00000054 FDE cie=00000000 pc=00020060..000200a0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ # basic4 removed
+ 00000064 00000010 00000068 FDE cie=00000000 pc=000200a0..000200f0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000078 00000014 00000000 CIE
+   Version:               1
+   Augmentation:          "zRP"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     10 00 00 00 00 00
+ 
+   DW_CFA_nop
+ 
+ 00000090 00000010 0000001c FDE cie=00000078 pc=000200f0..00020100
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000000a4 00000010 00000030 FDE cie=00000078 pc=00020100..00020120
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000000b8 00000014 00000000 CIE
+   Version:               1
+   Augmentation:          "zP"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     50 00 00 00 00 00 00 00
+ 
+ 
+ 000000d0 00000010 0000001c FDE cie=000000b8 pc=00020120..00020130
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000000e4 00000010 00000030 FDE cie=000000b8 pc=00020130..00020150
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000000f8 00000014 00000000 CIE
+   Version:               1
+   Augmentation:          "zPR"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     00 00 00 00 00 10
+ 
+   DW_CFA_nop
+ 
+ 00000110 00000010 0000001c FDE cie=000000f8 pc=00020150..00020160
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ # FDE for .discard removed
+ # zPR2 removed
+ 00000124 00000010 00000030 FDE cie=000000f8 pc=00020160..00020190
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000138 00000010 00000044 FDE cie=000000f8 pc=00020190..000201d0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 0000014c 00000010 00000000 CIE
+   Version:               1
+   Augmentation:          "zR"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     10
+ 
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000160 00000010 00000018 FDE cie=0000014c pc=000201d0..000201e0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ # basic1 removed, followed by repeat of above
+ 00000174 00000010 0000002c FDE cie=0000014c pc=000201e0..000201f0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000188 00000010 00000040 FDE cie=0000014c pc=000201f0..00020210
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 0000019c 00000010 00000054 FDE cie=0000014c pc=00020210..00020240
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000001b0 00000010 00000068 FDE cie=0000014c pc=00020240..00020280
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000001c4 00000010 0000007c FDE cie=0000014c pc=00020280..000202d0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000001d8 00000014 00000000 CIE
+   Version:               1
+   Augmentation:          "zRP"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     10 00 00 00 00 00
+ 
+   DW_CFA_nop
+ 
+ 000001f0 00000010 0000001c FDE cie=000001d8 pc=000202d0..000202e0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000204 00000010 00000030 FDE cie=000001d8 pc=000202e0..00020300
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000218 00000014 00000000 CIE
+   Version:               1
+   Augmentation:          "zP"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     50 00 00 00 00 00 00 00
+ 
+ 
+ 00000230 00000010 0000001c FDE cie=00000218 pc=00020300..00020310
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000244 00000010 00000030 FDE cie=00000218 pc=00020310..00020330
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000258 00000014 00000000 CIE
+   Version:               1
+   Augmentation:          "zPR"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     00 00 00 00 00 10
+ 
+   DW_CFA_nop
+ 
+ 00000270 00000010 0000001c FDE cie=00000258 pc=00020330..00020340
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000284 00000010 00000030 FDE cie=00000258 pc=00020340..00020370
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000298 00000010 00000044 FDE cie=00000258 pc=00020370..000203b0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000002ac 00000010 00000000 CIE
+   Version:               1
+   Augmentation:          "zR"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     10
+ 
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000002c0 00000010 00000018 FDE cie=000002ac pc=000203b0..000203c0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
diff -c /dev/null ld/testsuite/ld-mips-elf/eh-frame2-n64.d
*** /dev/null	2004-12-03 11:50:38.225654048 +0000
--- ld/testsuite/ld-mips-elf/eh-frame2-n64.d	2005-01-07 12:18:53.819199714 +0000
***************
*** 0 ****
--- 1,409 ----
+ #name: MIPS eh-frame 2, n64
+ #source: eh-frame1.s
+ #source: eh-frame1.s
+ #as: -EB -64 --defsym alignment=3 --defsym fill=0
+ #readelf: --relocs -wf
+ #ld: -shared -melf64btsmip -Teh-frame1.ld
+ 
+ Relocation section '\.rel\.dyn' .*:
+  *Offset .*
+ 000000000000  000000000000 R_MIPS_NONE *
+  *Type2: R_MIPS_NONE *
+  *Type3: R_MIPS_NONE *
+ # Initial PCs for the FDEs attached to CIE 0x118
+ 000000030140  000000001203 R_MIPS_REL32 *
+  *Type2: R_MIPS_64 *
+  *Type3: R_MIPS_NONE *
+ 000000030160  000000001203 R_MIPS_REL32 *
+  *Type2: R_MIPS_64 *
+  *Type3: R_MIPS_NONE *
+ # Likewise CIE 0x330
+ 000000030358  000000001203 R_MIPS_REL32 *
+  *Type2: R_MIPS_64 *
+  *Type3: R_MIPS_NONE *
+ 000000030378  000000001203 R_MIPS_REL32 *
+  *Type2: R_MIPS_64 *
+  *Type3: R_MIPS_NONE *
+ 0000000300cb  000500001203 R_MIPS_REL32      0000000000000000 foo
+  *Type2: R_MIPS_64 *
+  *Type3: R_MIPS_NONE *
+ 000000030130  000500001203 R_MIPS_REL32      0000000000000000 foo
+  *Type2: R_MIPS_64 *
+  *Type3: R_MIPS_NONE *
+ 00000003018a  000500001203 R_MIPS_REL32      0000000000000000 foo
+  *Type2: R_MIPS_64 *
+  *Type3: R_MIPS_NONE *
+ 0000000302e3  000500001203 R_MIPS_REL32      0000000000000000 foo
+  *Type2: R_MIPS_64 *
+  *Type3: R_MIPS_NONE *
+ 000000030348  000500001203 R_MIPS_REL32      0000000000000000 foo
+  *Type2: R_MIPS_64 *
+  *Type3: R_MIPS_NONE *
+ 0000000303a2  000500001203 R_MIPS_REL32      0000000000000000 foo
+  *Type2: R_MIPS_64 *
+  *Type3: R_MIPS_NONE *
+ #...
+ The section \.eh_frame contains:
+ 
+ 00000000 00000014 00000000 CIE
+   Version:               1
+   Augmentation:          "zR"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     10
+ 
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000018 0000001c 0000001c FDE cie=00000000 pc=00020000..00020010
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000038 0000001c 0000003c FDE cie=00000000 pc=00020010..00020030
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ # basic2 removed
+ 00000058 0000001c 0000005c FDE cie=00000000 pc=00020030..00020060
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ # basic3 removed
+ 00000078 0000001c 0000007c FDE cie=00000000 pc=00020060..000200a0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ # basic4 removed
+ 00000098 0000001c 0000009c FDE cie=00000000 pc=000200a0..000200f0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000000b8 0000001c 00000000 CIE
+   Version:               1
+   Augmentation:          "zRP"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     10 00 00 00 00 00 00 00 00 00
+ 
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000000d8 0000001c 00000024 FDE cie=000000b8 pc=000200f0..00020100
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000000f8 0000001c 00000044 FDE cie=000000b8 pc=00020100..00020120
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000118 0000001c 00000000 CIE
+   Version:               1
+   Augmentation:          "zP"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 
+ 
+ 00000138 0000001c 00000024 FDE cie=00000118 pc=00020120..00020130
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000158 0000001c 00000044 FDE cie=00000118 pc=00020130..00020150
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000178 0000001c 00000000 CIE
+   Version:               1
+   Augmentation:          "zPR"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     00 00 00 00 00 00 00 00 00 10
+ 
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000198 0000001c 00000024 FDE cie=00000178 pc=00020150..00020160
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ # FDE for .discard removed
+ # zPR2 removed
+ 000001b8 0000001c 00000044 FDE cie=00000178 pc=00020160..00020190
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000001d8 0000001c 00000064 FDE cie=00000178 pc=00020190..000201d0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000001f8 00000014 00000000 CIE
+   Version:               1
+   Augmentation:          "zR"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     10
+ 
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000210 0000001c 0000001c FDE cie=000001f8 pc=000201d0..000201e0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ # basic1 removed, followed by repeat of above
+ 00000230 0000001c 0000003c FDE cie=000001f8 pc=000201e0..000201f0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000250 0000001c 0000005c FDE cie=000001f8 pc=000201f0..00020210
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000270 0000001c 0000007c FDE cie=000001f8 pc=00020210..00020240
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000290 0000001c 0000009c FDE cie=000001f8 pc=00020240..00020280
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000002b0 0000001c 000000bc FDE cie=000001f8 pc=00020280..000202d0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000002d0 0000001c 00000000 CIE
+   Version:               1
+   Augmentation:          "zRP"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     10 00 00 00 00 00 00 00 00 00
+ 
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000002f0 0000001c 00000024 FDE cie=000002d0 pc=000202d0..000202e0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000310 0000001c 00000044 FDE cie=000002d0 pc=000202e0..00020300
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000330 0000001c 00000000 CIE
+   Version:               1
+   Augmentation:          "zP"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 
+ 
+ 00000350 0000001c 00000024 FDE cie=00000330 pc=00020300..00020310
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000370 0000001c 00000044 FDE cie=00000330 pc=00020310..00020330
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000390 0000001c 00000000 CIE
+   Version:               1
+   Augmentation:          "zPR"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     00 00 00 00 00 00 00 00 00 10
+ 
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000003b0 0000001c 00000024 FDE cie=00000390 pc=00020330..00020340
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000003d0 0000001c 00000044 FDE cie=00000390 pc=00020340..00020370
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 000003f0 0000001c 00000064 FDE cie=00000390 pc=00020370..000203b0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000410 00000014 00000000 CIE
+   Version:               1
+   Augmentation:          "zR"
+   Code alignment factor: 1
+   Data alignment factor: 4
+   Return address column: 31
+   Augmentation data:     10
+ 
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 
+ 00000428 0000001c 0000001c FDE cie=00000410 pc=000203b0..000203c0
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+   DW_CFA_nop
+ 


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