mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-19 13:53:29 +08:00
PR 12610
* config/tc-alpha.c (s_alpha_align): Don't auto-align a previous label; zap alpha_insn_label.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2011-03-29 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
PR 12610
|
||||||
|
* config/tc-alpha.c (s_alpha_align): Don't auto-align a previous
|
||||||
|
label; zap alpha_insn_label.
|
||||||
|
|
||||||
2011-03-29 H.J. Lu <hongjiu.lu@intel.com>
|
2011-03-29 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* config/tc-i386.c (handle_quad): Properly handle multiple
|
* config/tc-i386.c (handle_quad): Properly handle multiple
|
||||||
|
@ -5081,12 +5081,13 @@ s_alpha_align (int ignore ATTRIBUTE_UNUSED)
|
|||||||
if (align != 0)
|
if (align != 0)
|
||||||
{
|
{
|
||||||
alpha_auto_align_on = 1;
|
alpha_auto_align_on = 1;
|
||||||
alpha_align (align, pfill, alpha_insn_label, 1);
|
alpha_align (align, pfill, NULL, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
alpha_auto_align_on = 0;
|
alpha_auto_align_on = 0;
|
||||||
}
|
}
|
||||||
|
alpha_insn_label = NULL;
|
||||||
|
|
||||||
demand_empty_rest_of_line ();
|
demand_empty_rest_of_line ();
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,8 @@
|
|||||||
#include "as.h"
|
#include "as.h"
|
||||||
#include "safe-ctype.h"
|
#include "safe-ctype.h"
|
||||||
#include "subsegs.h"
|
#include "subsegs.h"
|
||||||
|
#include "dw2gencfi.h"
|
||||||
|
|
||||||
|
|
||||||
struct avr_opcodes_s
|
struct avr_opcodes_s
|
||||||
{
|
{
|
||||||
@ -1543,3 +1545,18 @@ avr_cons_fix_new (fragS *frag,
|
|||||||
exp_mod_pm = 0;
|
exp_mod_pm = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tc_cfi_frame_initial_instructions (void)
|
||||||
|
{
|
||||||
|
/* AVR6 pushes 3 bytes for calls. */
|
||||||
|
int return_size = (avr_mcu->mach == bfd_mach_avr6 ? 3 : 2);
|
||||||
|
|
||||||
|
/* The CFA is the caller's stack location before the call insn. */
|
||||||
|
/* Note that the stack pointer is dwarf register number 32. */
|
||||||
|
cfi_add_CFA_def_cfa (32, return_size);
|
||||||
|
|
||||||
|
/* Note that AVR consistently uses post-decrement, which means that things
|
||||||
|
do not line up the same way as for targers that use pre-decrement. */
|
||||||
|
cfi_add_CFA_offset (DWARF2_DEFAULT_RETURN_COLUMN, 1-return_size);
|
||||||
|
}
|
||||||
|
@ -153,3 +153,16 @@ extern long md_pcrel_from_section (struct fix *, segT);
|
|||||||
|
|
||||||
/* 32 bits pseudo-addresses are used on AVR. */
|
/* 32 bits pseudo-addresses are used on AVR. */
|
||||||
#define DWARF2_ADDR_SIZE(bfd) 4
|
#define DWARF2_ADDR_SIZE(bfd) 4
|
||||||
|
|
||||||
|
/* Enable cfi directives. */
|
||||||
|
#define TARGET_USE_CFIPOP 1
|
||||||
|
|
||||||
|
/* The stack grows down, and is only byte aligned. */
|
||||||
|
#define DWARF2_CIE_DATA_ALIGNMENT -1
|
||||||
|
|
||||||
|
/* Define the column that represents the PC. */
|
||||||
|
#define DWARF2_DEFAULT_RETURN_COLUMN 36
|
||||||
|
|
||||||
|
/* Define a hook to setup initial CFI state. */
|
||||||
|
extern void tc_cfi_frame_initial_instructions (void);
|
||||||
|
#define tc_cfi_frame_initial_instructions tc_cfi_frame_initial_instructions
|
||||||
|
6
gas/testsuite/gas/alpha/auto-align-1.d
Normal file
6
gas/testsuite/gas/alpha/auto-align-1.d
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#objdump: -s -j .data
|
||||||
|
#name: alpha auto-align-1
|
||||||
|
|
||||||
|
.*: file format *
|
||||||
|
Contents of section .data:
|
||||||
|
0000 04000000 .*
|
7
gas/testsuite/gas/alpha/auto-align-1.s
Normal file
7
gas/testsuite/gas/alpha/auto-align-1.s
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
.text
|
||||||
|
.align 4
|
||||||
|
$B: unop
|
||||||
|
$E: .align 4
|
||||||
|
fnop
|
||||||
|
.data
|
||||||
|
.long $E - $B
|
Reference in New Issue
Block a user