From ac480657f156d963e5910b958c7b64fcee955f88 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sat, 5 Mar 2011 02:16:36 +0000 Subject: [PATCH] Set x86_cie_data_alignment to -4 for x32. gas/ 2011-03-04 H.J. Lu * 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 * gas/i386/ilp32/cfi/cfi-x86_64.d: Updated. --- gas/ChangeLog | 9 +++++++++ gas/config/tc-i386.c | 13 ++++++++++--- gas/testsuite/ChangeLog | 4 ++++ gas/testsuite/gas/i386/ilp32/cfi/cfi-x86_64.d | 6 +++--- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index f53dd03ff2..7688f52afa 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,12 @@ +2011-03-04 H.J. Lu + + * 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 * ecoff.c: Incldue filenames.h diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 5cc82190a8..d278172fea 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -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 diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index c4fbd0a2e1..56b8823a19 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-03-04 H.J. Lu + + * gas/i386/ilp32/cfi/cfi-x86_64.d: Updated. + 2011-02-28 Maciej W. Rozycki * gas/mips/alnv_ps-swap.d: New test for ALNV.PS instruction diff --git a/gas/testsuite/gas/i386/ilp32/cfi/cfi-x86_64.d b/gas/testsuite/gas/i386/ilp32/cfi/cfi-x86_64.d index f1aa45e7e0..27dd2f5b70 100644 --- a/gas/testsuite/gas/i386/ilp32/cfi/cfi-x86_64.d +++ b/gas/testsuite/gas/i386/ilp32/cfi/cfi-x86_64.d @@ -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