gas: Add --gdwarf-cie-version command line flag
authorAndrew Burgess <andrew.burgess@embecosm.com>
Mon, 4 Nov 2019 12:27:45 +0000 (12:27 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Mon, 18 Nov 2019 10:30:21 +0000 (10:30 +0000)
commit66f8b2cbbb675ccbcae56e2bdb6dae485878ec00
tree74128ccf4156406fd2deebe1b4b092eab1b60063
parentf1e8bd2dd26cbe08d3722a9e12844e290e47a1d2
gas: Add --gdwarf-cie-version command line flag

Add a flag to control the version of CIE that is generated.  By
default gas produces CIE version 1, and this continues to be the
default after this patch.

However, a user can now provide --gdwarf-cie-version=NUMBER to switch
to either version 3 or version 4 of CIE, version 2 was never released,
and so causes an error as does any number less than 1 or greater than
4.

Producing version 4 CIE requires two new fields to be added to the
CIE, an address size field, and an segment selector field.  For a flat
address space the DWARF specification indicates that the segment
selector should be 0, and the address size fields just contains the
address size in bytes.  For now we support 4 or 8 byte addresses, and
the segment selector is always produced as 0.  At some future time we
might need to allow targets to override this.

gas/ChangeLog:

* as.c (parse_args): Parse --gdwarf-cie-version option.
(flag_dwarf_cie_version): New variable.
* as.h (flag_dwarf_cie_version): Declare.
* dw2gencfi.c (output_cie): Switch from DW_CIE_VERSION to
flag_dwarf_cie_version.
* doc/as.texi (Overview): Document --gdwarf-cie-version.
* NEWS: Likewise.
* testsuite/gas/cfi/cfi.exp: Add new tests.
* testsuite/gas/cfi/cie-version-0.d: New file.
* testsuite/gas/cfi/cie-version-1.d: New file.
* testsuite/gas/cfi/cie-version-2.d: New file.
* testsuite/gas/cfi/cie-version-3.d: New file.
* testsuite/gas/cfi/cie-version-4.d: New file.
* testsuite/gas/cfi/cie-version.s: New file.

include/ChangeLog:

* dwarf2.h (DW_CIE_VERSION): Delete.

Change-Id: I9de19461aeb8332b5a57bbfe802953d0725a7ae8
15 files changed:
gas/ChangeLog
gas/NEWS
gas/as.c
gas/as.h
gas/doc/as.texi
gas/dw2gencfi.c
gas/testsuite/gas/cfi/cfi.exp
gas/testsuite/gas/cfi/cie-version-0.d [new file with mode: 0644]
gas/testsuite/gas/cfi/cie-version-1.d [new file with mode: 0644]
gas/testsuite/gas/cfi/cie-version-2.d [new file with mode: 0644]
gas/testsuite/gas/cfi/cie-version-3.d [new file with mode: 0644]
gas/testsuite/gas/cfi/cie-version-4.d [new file with mode: 0644]
gas/testsuite/gas/cfi/cie-version.s [new file with mode: 0644]
include/ChangeLog
include/dwarf2.h