Set x86_cie_data_alignment to -4 for x32.
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 5 Mar 2011 02:16:36 +0000 (02:16 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Sat, 5 Mar 2011 02:16:36 +0000 (02:16 +0000)
gas/

2011-03-04  H.J. Lu  <hongjiu.lu@intel.com>

* config/tc-i386.c (x86_cie_stack_alignment): New.
(md_begin): Set x86_cie_data_alignment if it isn't set.  Set
x86_cie_stack_alignment.
(i386_target_format): Set x86_cie_data_alignment to -4 for x32.
(tc_x86_frame_initial_instructions): Use x86_cie_stack_alignment
instead of x86_cie_data_alignment on SP and RA.

gas/testsuite/

2011-03-04  H.J. Lu  <hongjiu.lu@intel.com>

* gas/i386/ilp32/cfi/cfi-x86_64.d: Updated.

gas/ChangeLog
gas/config/tc-i386.c
gas/testsuite/ChangeLog
gas/testsuite/gas/i386/ilp32/cfi/cfi-x86_64.d

index f53dd03ff2e3335a3cd153dff4307eeb22573535..7688f52afad4981527562e998ee0e2a1ec1ddade 100644 (file)
@@ -1,3 +1,12 @@
+2011-03-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/tc-i386.c (x86_cie_stack_alignment): New.
+       (md_begin): Set x86_cie_data_alignment if it isn't set.  Set
+       x86_cie_stack_alignment.
+       (i386_target_format): Set x86_cie_data_alignment to -4 for x32.
+       (tc_x86_frame_initial_instructions): Use x86_cie_stack_alignment
+       instead of x86_cie_data_alignment on SP and RA.
+
 2011-03-02  Nick Clifton  <nickc@redhat.com>
 
        * ecoff.c: Incldue filenames.h
index 5cc82190a8cb67f4ec9bdd8aeab2f4aeece3f119..d278172feac69d7b1663ce986aac3ea9a02a87cc 100644 (file)
@@ -502,6 +502,9 @@ unsigned int x86_dwarf2_return_column;
 /* The dwarf2 data alignment, adjusted for 32 or 64 bit.  */
 int x86_cie_data_alignment;
 
+/* The dwarf2 stack alignment, adjusted for 32 or 64 bit.  */
+static int x86_cie_stack_alignment;
+
 /* Interface to relax_segment.
    There are 3 major relax states for 386 jump insns because the
    different types of jumps add different sizes to frags when we're
@@ -2378,12 +2381,15 @@ md_begin ()
 #else
       x86_dwarf2_return_column = 16;
 #endif
-      x86_cie_data_alignment = -8;
+      if (!x86_cie_data_alignment)
+       x86_cie_data_alignment = -8;
+      x86_cie_stack_alignment = -8;
     }
   else
     {
       x86_dwarf2_return_column = 8;
       x86_cie_data_alignment = -4;
+      x86_cie_stack_alignment = -4;
     }
 }
 
@@ -8636,6 +8642,7 @@ i386_target_format (void)
            use_rela_relocations = 1;
            object_64bit = 1;
            disallow_64bit_reloc = 1;
+           x86_cie_data_alignment = -4;
            format = ELF_TARGET_FORMAT32;
            break;
          }
@@ -9045,8 +9052,8 @@ tc_x86_frame_initial_instructions (void)
       input_line_pointer = saved_input;
     }
 
-  cfi_add_CFA_def_cfa (sp_regno[flag_code >> 1], -x86_cie_data_alignment);
-  cfi_add_CFA_offset (x86_dwarf2_return_column, x86_cie_data_alignment);
+  cfi_add_CFA_def_cfa (sp_regno[flag_code >> 1], -x86_cie_stack_alignment);
+  cfi_add_CFA_offset (x86_dwarf2_return_column, x86_cie_stack_alignment);
 }
 
 int
index c4fbd0a2e106a06e27cbf7e1d5e05369d6b28bdd..56b8823a196423540e9c387ed626419fa03540e6 100644 (file)
@@ -1,3 +1,7 @@
+2011-03-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * gas/i386/ilp32/cfi/cfi-x86_64.d: Updated.
+
 2011-02-28  Maciej W. Rozycki  <macro@codesourcery.com>
 
        * gas/mips/alnv_ps-swap.d: New test for ALNV.PS instruction
index f1aa45e7e0cc1df75c6900a9160ec73fb00b266e..27dd2f5b70532c1efee1c3d19c71118e9321a844 100644 (file)
@@ -7,7 +7,7 @@ Contents of the .eh_frame section:
   Version:               1
   Augmentation:          "zR"
   Code alignment factor: 1
-  Data alignment factor: -8
+  Data alignment factor: -4
   Return address column: 16
   Augmentation data:     1b
 
@@ -55,7 +55,7 @@ Contents of the .eh_frame section:
   Version:               1
   Augmentation:          "zR"
   Code alignment factor: 1
-  Data alignment factor: -8
+  Data alignment factor: -4
   Return address column: 16
   Augmentation data:     1b
 
@@ -88,7 +88,7 @@ Contents of the .eh_frame section:
   Version:               1
   Augmentation:          "zR"
   Code alignment factor: 1
-  Data alignment factor: -8
+  Data alignment factor: -4
   Return address column: 16
   Augmentation data:     1b