[PATCH,V4 00/11] Definition and support for SFrame unwind format
Indu Bhagat
indu.bhagat@oracle.com
Wed Nov 9 08:42:33 GMT 2022
This is the V4 of the patch series that adds support for the SFrame unwind
format in binutils.
[Changes in V4]
- Addressed review comments by Mike on the "gas: generate .sframe from CFI
directives" patch.
- Removed the patch for the gdb/ sim/ buildsystem because the buildsystem of
both of gdb and sim are now using libtool. So, explicit specification of the
libbfd->libsframe dependency is not needed. Thanks to Mike and Jose for
making the necessary improvements.
- Removed the patch "libctf: add libsframe to LDFLAGS and LIBS" earlier
present in V3. This patch has now been updated to "libctf: use libtool for
link test in configure" and will be reviewed outside of the current series.
- Removed the following two patches from V4 altogether:
- unwinder: generate backtrace using SFrame format
- unwinder: Add SFrame unwinder tests
This will allow us to make progress on the SFrame support effectively.
Weimin will post these two patches soon, which will include the requested
improvements.
[End of changes in V4]
This patch series is dependent on the following two patches which were sent
earlier. These patches are related to the libtoolization effort of gdb/ and
libctf/ link checks at configure time:
1. gdb: use libtool in GDB_AC_CHECK_BFD [Jose E. Marchesi]
https://sourceware.org/pipermail/gdb-patches/2022-November/193550.html
2. libctf: use libtool for link test in configure [Indu Bhagat]
https://sourceware.org/pipermail/binutils/2022-November/124253.html
The following testing uses the above two patches which libtoolize the link
checks in gdb/ and libctf/ configure.
Testing notes:
- binutils/gdb try bot showed no new regressions.
- reg tested natively on x86_64-linux (including gdb), aarch64-linux and
i686-linux with --enable-shared.
- reg tested cross build of several targets on an x86_64 host and an
aarch64 host using a regression script that checks for failures in gas, ld,
binutils, and libctf. libsframe testsuite ran as expected.
PS: libsframe/configure has NOT been included in the patch. Please
regenerate.
Thanks,
Indu Bhagat (10):
sframe.h: Add SFrame format definition
gas: add new command line option --gsframe
gas: generate .sframe from CFI directives
gas: testsuite: add new tests for SFrame unwind info
bfd: linker: merge .sframe sections
readelf/objdump: support for SFrame section
src-release.sh: Add libsframe
binutils/NEWS: add text for SFrame support
gas/NEWS: add text about new command line option and SFrame support
doc: add SFrame spec file
Weimin Pan (1):
libsframe: add the SFrame library
Makefile.def | 6 +
Makefile.in | 1299 ++++++++++++-
bfd/Makefile.am | 6 +-
bfd/Makefile.in | 7 +-
bfd/bfd-in2.h | 1 +
bfd/configure | 2 +-
bfd/configure.ac | 2 +-
bfd/elf-bfd.h | 54 +
bfd/elf-sframe.c | 544 ++++++
bfd/elf.c | 32 +
bfd/elf64-x86-64.c | 97 +-
bfd/elflink.c | 52 +
bfd/elfxx-x86.c | 375 +++-
bfd/elfxx-x86.h | 49 +
bfd/section.c | 1 +
binutils/Makefile.am | 10 +-
binutils/Makefile.in | 9 +-
binutils/NEWS | 3 +
binutils/doc/binutils.texi | 4 +
binutils/doc/sframe.options.texi | 10 +
binutils/objdump.c | 75 +
binutils/readelf.c | 64 +
config/dejagnu.m4 | 22 +
configure | 2 +-
configure.ac | 2 +-
gas/Makefile.am | 3 +
gas/Makefile.in | 14 +-
gas/NEWS | 3 +
gas/as.c | 10 +-
gas/as.h | 13 +-
gas/config/tc-aarch64.c | 58 +
gas/config/tc-aarch64.h | 29 +
gas/config/tc-i386.c | 50 +
gas/config/tc-i386.h | 26 +
gas/config/tc-xtensa.c | 1 +
gas/doc/as.texi | 20 +-
gas/dw2gencfi.c | 30 +
gas/dw2gencfi.h | 1 +
gas/gen-sframe.c | 1294 +++++++++++++
gas/gen-sframe.h | 153 ++
gas/sframe-opt.c | 158 ++
.../gas/cfi-sframe/cfi-sframe-aarch64-1.d | 20 +
.../gas/cfi-sframe/cfi-sframe-aarch64-1.s | 61 +
.../gas/cfi-sframe/cfi-sframe-common-1.d | 17 +
.../gas/cfi-sframe/cfi-sframe-common-1.s | 3 +
.../gas/cfi-sframe/cfi-sframe-common-2.d | 17 +
.../gas/cfi-sframe/cfi-sframe-common-2.s | 2 +
.../gas/cfi-sframe/cfi-sframe-common-3.d | 17 +
.../gas/cfi-sframe/cfi-sframe-common-3.s | 4 +
.../gas/cfi-sframe/cfi-sframe-common-4.d | 21 +
.../gas/cfi-sframe/cfi-sframe-common-4.s | 8 +
.../gas/cfi-sframe/cfi-sframe-common-5.d | 21 +
.../gas/cfi-sframe/cfi-sframe-common-5.s | 7 +
.../gas/cfi-sframe/cfi-sframe-common-6.d | 21 +
.../gas/cfi-sframe/cfi-sframe-common-6.s | 7 +
.../gas/cfi-sframe/cfi-sframe-common-7.d | 21 +
.../gas/cfi-sframe/cfi-sframe-common-7.s | 7 +
.../gas/cfi-sframe/cfi-sframe-common-8.d | 20 +
.../gas/cfi-sframe/cfi-sframe-common-8.s | 12 +
.../gas/cfi-sframe/cfi-sframe-x86_64-1.d | 22 +
.../gas/cfi-sframe/cfi-sframe-x86_64-1.s | 30 +
gas/testsuite/gas/cfi-sframe/cfi-sframe.exp | 100 +
gas/testsuite/gas/cfi-sframe/common-empty-1.d | 14 +
gas/testsuite/gas/cfi-sframe/common-empty-1.s | 5 +
gas/testsuite/gas/cfi-sframe/common-empty-2.d | 14 +
gas/testsuite/gas/cfi-sframe/common-empty-2.s | 8 +
gas/testsuite/gas/cfi-sframe/common-empty-3.d | 14 +
gas/testsuite/gas/cfi-sframe/common-empty-3.s | 9 +
gas/testsuite/gas/cfi-sframe/common-empty-4.d | 14 +
gas/testsuite/gas/cfi-sframe/common-empty-4.s | 17 +
gas/write.c | 13 +
include/elf/common.h | 1 +
include/elf/internal.h | 1 +
include/sframe-api.h | 234 +++
include/sframe.h | 303 +++
ld/Makefile.am | 2 +
ld/Makefile.in | 2 +
ld/configure | 8 +-
ld/configure.ac | 3 +
ld/ld.texi | 4 +-
ld/scripttempl/elf.sc | 2 +
ld/testsuite/ld-aarch64/aarch64-elf.exp | 4 +
ld/testsuite/ld-aarch64/sframe-bar.s | 7 +
ld/testsuite/ld-aarch64/sframe-foo.s | 10 +
ld/testsuite/ld-aarch64/sframe-simple-1.d | 26 +
ld/testsuite/ld-bootstrap/bootstrap.exp | 8 +-
ld/testsuite/ld-sframe/discard.d | 10 +
ld/testsuite/ld-sframe/discard.ld | 9 +
ld/testsuite/ld-sframe/discard.s | 13 +
ld/testsuite/ld-sframe/sframe-empty.d | 10 +
ld/testsuite/ld-sframe/sframe-empty.s | 2 +
ld/testsuite/ld-sframe/sframe.exp | 47 +
ld/testsuite/ld-x86-64/sframe-bar.s | 31 +
ld/testsuite/ld-x86-64/sframe-foo.s | 37 +
ld/testsuite/ld-x86-64/sframe-plt-1.d | 29 +
ld/testsuite/ld-x86-64/sframe-simple-1.d | 35 +
ld/testsuite/ld-x86-64/x86-64.exp | 5 +
ld/testsuite/lib/ld-lib.exp | 45 +
libsframe/Makefile.am | 46 +
libsframe/Makefile.in | 1488 +++++++++++++++
libsframe/aclocal.m4 | 1242 ++++++++++++
libsframe/config.h.in | 132 ++
libsframe/configure.ac | 96 +
libsframe/doc/local.mk | 40 +
libsframe/doc/sframe-spec.texi | 619 ++++++
libsframe/sframe-dump.c | 181 ++
libsframe/sframe-error.c | 49 +
libsframe/sframe-impl.h | 55 +
libsframe/sframe.c | 1676 +++++++++++++++++
libsframe/testsuite/config/default.exp | 54 +
libsframe/testsuite/libsframe.decode/DATA-BE | Bin 0 -> 64 bytes
libsframe/testsuite/libsframe.decode/DATA1 | Bin 0 -> 60 bytes
libsframe/testsuite/libsframe.decode/DATA2 | Bin 0 -> 92 bytes
.../testsuite/libsframe.decode/be-flipping.c | 115 ++
.../testsuite/libsframe.decode/decode.exp | 50 +
.../testsuite/libsframe.decode/frecnt-1.c | 99 +
.../testsuite/libsframe.decode/frecnt-2.c | 104 +
libsframe/testsuite/libsframe.decode/local.mk | 16 +
.../testsuite/libsframe.encode/encode-1.c | 177 ++
.../testsuite/libsframe.encode/encode.exp | 37 +
libsframe/testsuite/libsframe.encode/local.mk | 7 +
libsframe/testsuite/local.mk | 24 +
src-release.sh | 4 +-
123 files changed, 12290 insertions(+), 46 deletions(-)
create mode 100644 bfd/elf-sframe.c
create mode 100644 binutils/doc/sframe.options.texi
create mode 100644 config/dejagnu.m4
create mode 100644 gas/gen-sframe.c
create mode 100644 gas/gen-sframe.h
create mode 100644 gas/sframe-opt.c
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-1.d
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-1.s
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-1.d
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-1.s
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-2.d
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-2.s
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-3.d
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-3.s
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-4.d
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-4.s
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-5.d
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-5.s
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-6.d
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-6.s
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-7.d
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-7.s
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-8.d
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-8.s
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-1.d
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-1.s
create mode 100644 gas/testsuite/gas/cfi-sframe/cfi-sframe.exp
create mode 100644 gas/testsuite/gas/cfi-sframe/common-empty-1.d
create mode 100644 gas/testsuite/gas/cfi-sframe/common-empty-1.s
create mode 100644 gas/testsuite/gas/cfi-sframe/common-empty-2.d
create mode 100644 gas/testsuite/gas/cfi-sframe/common-empty-2.s
create mode 100644 gas/testsuite/gas/cfi-sframe/common-empty-3.d
create mode 100644 gas/testsuite/gas/cfi-sframe/common-empty-3.s
create mode 100644 gas/testsuite/gas/cfi-sframe/common-empty-4.d
create mode 100644 gas/testsuite/gas/cfi-sframe/common-empty-4.s
create mode 100644 include/sframe-api.h
create mode 100644 include/sframe.h
create mode 100644 ld/testsuite/ld-aarch64/sframe-bar.s
create mode 100644 ld/testsuite/ld-aarch64/sframe-foo.s
create mode 100644 ld/testsuite/ld-aarch64/sframe-simple-1.d
create mode 100644 ld/testsuite/ld-sframe/discard.d
create mode 100644 ld/testsuite/ld-sframe/discard.ld
create mode 100644 ld/testsuite/ld-sframe/discard.s
create mode 100644 ld/testsuite/ld-sframe/sframe-empty.d
create mode 100644 ld/testsuite/ld-sframe/sframe-empty.s
create mode 100644 ld/testsuite/ld-sframe/sframe.exp
create mode 100644 ld/testsuite/ld-x86-64/sframe-bar.s
create mode 100644 ld/testsuite/ld-x86-64/sframe-foo.s
create mode 100644 ld/testsuite/ld-x86-64/sframe-plt-1.d
create mode 100644 ld/testsuite/ld-x86-64/sframe-simple-1.d
create mode 100644 libsframe/Makefile.am
create mode 100644 libsframe/Makefile.in
create mode 100644 libsframe/aclocal.m4
create mode 100644 libsframe/config.h.in
create mode 100644 libsframe/configure.ac
create mode 100644 libsframe/doc/local.mk
create mode 100644 libsframe/doc/sframe-spec.texi
create mode 100644 libsframe/sframe-dump.c
create mode 100644 libsframe/sframe-error.c
create mode 100644 libsframe/sframe-impl.h
create mode 100644 libsframe/sframe.c
create mode 100644 libsframe/testsuite/config/default.exp
create mode 100644 libsframe/testsuite/libsframe.decode/DATA-BE
create mode 100644 libsframe/testsuite/libsframe.decode/DATA1
create mode 100644 libsframe/testsuite/libsframe.decode/DATA2
create mode 100644 libsframe/testsuite/libsframe.decode/be-flipping.c
create mode 100644 libsframe/testsuite/libsframe.decode/decode.exp
create mode 100644 libsframe/testsuite/libsframe.decode/frecnt-1.c
create mode 100644 libsframe/testsuite/libsframe.decode/frecnt-2.c
create mode 100644 libsframe/testsuite/libsframe.decode/local.mk
create mode 100644 libsframe/testsuite/libsframe.encode/encode-1.c
create mode 100644 libsframe/testsuite/libsframe.encode/encode.exp
create mode 100644 libsframe/testsuite/libsframe.encode/local.mk
create mode 100644 libsframe/testsuite/local.mk
--
2.37.2
More information about the Binutils
mailing list