mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 02:24:17 +08:00
RISC-V: Always generate mapping symbols at the start of the sections.
Before figuring out the suppress rule of mapping symbol with architecture (changed back to $x), always generate them at the start of the sections. gas/ * config/tc-riscv.c (need_arch_map_symbol): Removed. (riscv_mapping_state): Updated. (riscv_check_mapping_symbols): Updated. * testsuite/gas/riscv/mapping-non-arch.d: Removed. * testsuite/gas/riscv/mapping-non-arch.s: Likewise.
This commit is contained in:
@ -470,11 +470,6 @@ static char *expr_end;
|
|||||||
#define OPCODE_MATCHES(OPCODE, OP) \
|
#define OPCODE_MATCHES(OPCODE, OP) \
|
||||||
(((OPCODE) & MASK_##OP) == MATCH_##OP)
|
(((OPCODE) & MASK_##OP) == MATCH_##OP)
|
||||||
|
|
||||||
/* Indicate if .option directives do affect instructions. Set to true means
|
|
||||||
we need to add $x+arch at somewhere; Otherwise just add $x for instructions
|
|
||||||
should be enough. */
|
|
||||||
static bool need_arch_map_symbol = false;
|
|
||||||
|
|
||||||
/* Create a new mapping symbol for the transition to STATE. */
|
/* Create a new mapping symbol for the transition to STATE. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -579,7 +574,6 @@ riscv_mapping_state (enum riscv_seg_mstate to_state,
|
|||||||
S_GET_NAME (seg_arch_symbol) + 2) != 0)
|
S_GET_NAME (seg_arch_symbol) + 2) != 0)
|
||||||
{
|
{
|
||||||
reset_seg_arch_str = true;
|
reset_seg_arch_str = true;
|
||||||
need_arch_map_symbol = true;
|
|
||||||
}
|
}
|
||||||
else if (from_state == to_state)
|
else if (from_state == to_state)
|
||||||
return;
|
return;
|
||||||
@ -634,13 +628,6 @@ riscv_check_mapping_symbols (bfd *abfd ATTRIBUTE_UNUSED,
|
|||||||
if (seginfo == NULL || seginfo->frchainP == NULL)
|
if (seginfo == NULL || seginfo->frchainP == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* If we don't set any .option arch directive, then the arch_map_symbol
|
|
||||||
in each segment must be the first instruction, and we don't need to
|
|
||||||
add $x+arch for them. */
|
|
||||||
if (!need_arch_map_symbol
|
|
||||||
&& seginfo->tc_segment_info_data.arch_map_symbol != 0)
|
|
||||||
S_SET_NAME (seginfo->tc_segment_info_data.arch_map_symbol, "$x");
|
|
||||||
|
|
||||||
for (fragp = seginfo->frchainP->frch_root;
|
for (fragp = seginfo->frchainP->frch_root;
|
||||||
fragp != NULL;
|
fragp != NULL;
|
||||||
fragp = fragp->fr_next)
|
fragp = fragp->fr_next)
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
#as:
|
|
||||||
#source: mapping-non-arch.s
|
|
||||||
#objdump: --syms --special-syms
|
|
||||||
|
|
||||||
.*file format.*riscv.*
|
|
||||||
|
|
||||||
SYMBOL TABLE:
|
|
||||||
00+00 l d .text 00+00 .text
|
|
||||||
00+00 l d .data 00+00 .data
|
|
||||||
00+00 l d .bss 00+00 .bss
|
|
||||||
00+00 l .text 00+00 \$x
|
|
||||||
00+08 l .text 00+00 \$d
|
|
||||||
00+0c l .text 00+00 \$x
|
|
||||||
00+00 l d text.A 00+00 text.A
|
|
||||||
00+00 l text.A 00+00 \$x
|
|
||||||
00+02 l text.A 00+00 \$d
|
|
||||||
00+00 l d .riscv.attributes 00+00 .riscv.attributes
|
|
@ -1,11 +0,0 @@
|
|||||||
.attribute arch, "rv32i"
|
|
||||||
.option arch, +c
|
|
||||||
.text
|
|
||||||
addi a0, zero, 1
|
|
||||||
.align 3
|
|
||||||
.word 0x1
|
|
||||||
addi a0, zero, 2
|
|
||||||
|
|
||||||
.section text.A, "ax"
|
|
||||||
addi a0, zero, 3
|
|
||||||
.word 0x2
|
|
Reference in New Issue
Block a user