gas/riscv: Produce version 3 DWARF CIE by default
The flag controlling the default DWARF CIE version to produce now starts with the value -1. This can be modified with the command line flag as before, but after command line flag processing, in md_after_parse_args targets can, if the global still has the value -1, override this value. This gives a target specific default. If a CIE version is not select either by command line flag, or a target specific default, then some new code in dwarf2_init now select a global default. This remains as version 1 to match previous behaviour. This RISC-V has a target specific default of version provided, this make the return column uleb128, which means we can use all DWARF registers include CSRs. I chose to switch to version 3 rather than version 4 as this is most similar to the global default (version 1). Switching to version 4 adds additional columns to the CIE header. gas/ChangeLog: * as.c (flag_dwarf_cie_version): Change initial value to -1, and update comment. * config/tc-riscv.c (riscv_after_parse_args): Set flag_dwarf_cie_version if it has not already been set. * dwarf2dbg.c (dwarf2_init): Initialise flag_dwarf_cie_version if needed. * testsuite/gas/riscv/default-cie-version.d: New file. * testsuite/gas/riscv/default-cie-version.s: New file. ld/ChangeLog: * testsuite/ld-elf/eh5.d: Accept version 3 DWARF CIE. Change-Id: Ibbfe8f0979fba480bf0a359978b09d2b3055555e
This commit is contained in:
parent
22eb4a0617
commit
0ac2b354ee
@ -1,3 +1,14 @@
|
||||
2019-11-22 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* as.c (flag_dwarf_cie_version): Change initial value to -1, and
|
||||
update comment.
|
||||
* config/tc-riscv.c (riscv_after_parse_args): Set
|
||||
flag_dwarf_cie_version if it has not already been set.
|
||||
* dwarf2dbg.c (dwarf2_init): Initialise flag_dwarf_cie_version if
|
||||
needed.
|
||||
* testsuite/gas/riscv/default-cie-version.d: New file.
|
||||
* testsuite/gas/riscv/default-cie-version.s: New file.
|
||||
|
||||
2019-11-22 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* dw2gencfi.c (output_cie): Error on return column overflow.
|
||||
|
10
gas/as.c
10
gas/as.c
@ -95,10 +95,12 @@ int debug_memory = 0;
|
||||
/* Enable verbose mode. */
|
||||
int verbose = 0;
|
||||
|
||||
/* Which version of DWARF CIE to produce. The default could be overridden
|
||||
by a target during its initialisation, or by the --gdwarf-cie-version
|
||||
command line flag. */
|
||||
int flag_dwarf_cie_version = 1;
|
||||
/* Which version of DWARF CIE to produce. This default value of -1
|
||||
indicates that this value has not been set yet, a default value is
|
||||
provided in dwarf2_init. A different value can also be supplied by the
|
||||
command line flag --gdwarf-cie-version, or by a target in
|
||||
MD_AFTER_PARSE_ARGS. */
|
||||
int flag_dwarf_cie_version = -1;
|
||||
|
||||
#if defined OBJ_ELF || defined OBJ_MAYBE_ELF
|
||||
int flag_use_elf_stt_common = DEFAULT_GENERATE_ELF_STT_COMMON;
|
||||
|
@ -2341,6 +2341,12 @@ riscv_after_parse_args (void)
|
||||
|
||||
/* Insert float_abi into the EF_RISCV_FLOAT_ABI field of elf_flags. */
|
||||
elf_flags |= float_abi * (EF_RISCV_FLOAT_ABI & ~(EF_RISCV_FLOAT_ABI << 1));
|
||||
|
||||
/* If the CIE to be produced has not been overridden on the command line,
|
||||
then produce version 3 by default. This allows us to use the full
|
||||
range of registers in a .cfi_return_column directive. */
|
||||
if (flag_dwarf_cie_version == -1)
|
||||
flag_dwarf_cie_version = 3;
|
||||
}
|
||||
|
||||
long
|
||||
|
@ -2171,6 +2171,17 @@ void
|
||||
dwarf2_init (void)
|
||||
{
|
||||
last_seg_ptr = &all_segs;
|
||||
|
||||
/* Select the default CIE version to produce here. The global
|
||||
starts with a value of -1 and will be modified to a valid value
|
||||
either by the user providing a command line option, or some
|
||||
targets will select their own default in md_after_parse_args. If
|
||||
we get here and the global still contains -1 then it is up to us
|
||||
to pick a sane default. The default we choose is 1, this is the
|
||||
CIE version gas has produced for a long time, and there seems no
|
||||
reason to change it yet. */
|
||||
if (flag_dwarf_cie_version == -1)
|
||||
flag_dwarf_cie_version = 1;
|
||||
}
|
||||
|
||||
|
||||
|
15
gas/testsuite/gas/riscv/default-cie-version.d
Normal file
15
gas/testsuite/gas/riscv/default-cie-version.d
Normal file
@ -0,0 +1,15 @@
|
||||
#objdump: --dwarf=frames
|
||||
#as:
|
||||
#...
|
||||
.*: file format elf.*-.*riscv
|
||||
|
||||
Contents of the .* section:
|
||||
|
||||
00000000 0+[0-9a-f]+ 0+000 CIE
|
||||
Version: 3
|
||||
Augmentation: .*
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
Return address column: .*
|
||||
Augmentation data: .*
|
||||
#...
|
2
gas/testsuite/gas/riscv/default-cie-version.s
Normal file
2
gas/testsuite/gas/riscv/default-cie-version.s
Normal file
@ -0,0 +1,2 @@
|
||||
.cfi_startproc
|
||||
.cfi_endproc
|
@ -1,3 +1,7 @@
|
||||
2019-11-27 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* testsuite/ld-elf/eh5.d: Accept version 3 DWARF CIE.
|
||||
|
||||
2019-11-26 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* scripttempl/arclinux.sc: Add .text.sorted.* which is sorted
|
||||
|
@ -9,7 +9,7 @@
|
||||
Contents of the .eh_frame section:
|
||||
|
||||
0+0000 0+001[04] 0+0000 CIE
|
||||
Version: 1
|
||||
Version: [13]
|
||||
Augmentation: "zR"
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
@ -28,7 +28,7 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_nop
|
||||
|
||||
0+00(2c|30) 0+0014 0+0000 CIE
|
||||
Version: 1
|
||||
Version: [13]
|
||||
Augmentation: "zPR"
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
@ -52,7 +52,7 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_nop
|
||||
|
||||
0+007[48] 0+001[8c] 0+0000 CIE
|
||||
Version: 1
|
||||
Version: [13]
|
||||
Augmentation: "zPLR"
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
@ -73,7 +73,7 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_nop
|
||||
|
||||
0+00b[08] 0+001[04] 0+0000 CIE
|
||||
Version: 1
|
||||
Version: [13]
|
||||
Augmentation: "zR"
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
@ -88,7 +88,7 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_nop
|
||||
#...
|
||||
0+00[de]8 0+0014 0+0000 CIE
|
||||
Version: 1
|
||||
Version: [13]
|
||||
Augmentation: "zPR"
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
@ -110,7 +110,7 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_nop
|
||||
#...
|
||||
0+01(1c|30) 0+001[8c] 0+0000 CIE
|
||||
Version: 1
|
||||
Version: [13]
|
||||
Augmentation: "zPLR"
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
|
Loading…
Reference in New Issue
Block a user