diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2011-03-05 02:16:36 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2011-03-05 02:16:36 +0000 |
commit | ac480657f156d963e5910b958c7b64fcee955f88 (patch) | |
tree | 5bf00ac371f513d42ee2d4c98b290066f26c689f /gas/config | |
parent | da3ecdc6646f015c02e4414ff54251382b252663 (diff) | |
download | gdb-ac480657f156d963e5910b958c7b64fcee955f88.zip gdb-ac480657f156d963e5910b958c7b64fcee955f88.tar.gz gdb-ac480657f156d963e5910b958c7b64fcee955f88.tar.bz2 |
Set x86_cie_data_alignment to -4 for x32.
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.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-i386.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 5cc8219..d278172 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 |