From: Indu Bhagat <indu.bhagat@oracle.com>
To: binutils@sourceware.org
Cc: nickc@redhat.com, Indu Bhagat <indu.bhagat@oracle.com>
Subject: [PATCH,V2 00/15] Definition and support for SFrame unwind format
Date: Mon, 17 Oct 2022 15:15:57 -0700 [thread overview]
Message-ID: <20221017221612.495324-1-indu.bhagat@oracle.com> (raw)
Hello,
This patch series is the version 2 of the previously sent series
https://sourceware.org/pipermail/binutils/2022-September/123165.html.
Each patch has brief notes on the respective changes from V1. Here is a
combined summary of changes in V2:
- SFrame SPEC texi file has been added.
- readelf/objdump behaviour wrt --sframe command line option had some
reported issues in V1. These are now fixed. Both readelf and objdump,
specifying the section name with --gsframe is now optional.
- binutils/NEWS now has a mention about the new command line option --gsframe
in readelf/objdump.
- testsuite improvements - check for dejagnu+gcc compatible pair before
running libsframe tests.
- other minor code formatting, comments touch ups.
PS: libsframe/configure has been REMOVED from the patch series, as it causes
the size of some patches to go beyond the allowed limit. Please regenerate
libsframe/configure after applying the series.
Testing notes:
- Tested natively on x86_64-linux, aarch64-linux and i686-linux with
'--enable-shared'.
- Cross builds for various targets on x86_64 host.
Ran a regression script that checks for failures in gas, ld, binutils, libctf
with no reported regressions. libsframe tests ran as expected.
libsframebt (the backtracer) tests (which are present in
libsframe/testsuite/libsframe.unwind) have been disabled with host != target.
As next steps, I plan to continue to work on improving the current support in
this patch series. I also plan to now take up the following two tasks around
aarch64 support:
- #1 Generate SFrame information for PLT/veneers in aarch64, and
- #2 Look at how to support .cfi_negate_ra_state.
It is likely that #2 will need some changes to the SFrame format.
Thanks,
Indu Bhagat (12):
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
gdb: sim: buildsystem changes to accommodate libsframe
libctf: add libsframe to LDFLAGS and LIBS
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 (3):
libsframe: add the SFrame library
unwinder: generate backtrace using SFrame format
unwinder: Add SFrame unwinder tests
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 | 537 ++++++
bfd/elf.c | 32 +
bfd/elf64-x86-64.c | 97 +-
bfd/elflink.c | 52 +
bfd/elfxx-x86.c | 373 +++-
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 +
config/sframe.m4 | 16 +
configure | 2 +-
configure.ac | 2 +-
gas/Makefile.am | 3 +
gas/Makefile.in | 22 +-
gas/NEWS | 3 +
gas/as.c | 10 +-
gas/as.h | 13 +-
gas/config/tc-aarch64.c | 41 +
gas/config/tc-aarch64.h | 29 +
gas/config/tc-i386.c | 44 +
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 | 1306 +++++++++++++
gas/gen-sframe.h | 141 ++
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 | 71 +
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 +
gdb/Makefile.in | 8 +-
gdb/acinclude.m4 | 4 +-
gdb/configure | 35 +-
gdb/configure.ac | 11 +
include/elf/common.h | 1 +
include/elf/internal.h | 1 +
include/sframe-api.h | 222 +++
include/sframe-backtrace-api.h | 57 +
include/sframe.h | 289 +++
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 +
libctf/configure | 4 +-
libctf/configure.ac | 4 +-
libsframe/Makefile.am | 61 +
libsframe/Makefile.in | 1424 ++++++++++++++
libsframe/aclocal.m4 | 1243 +++++++++++++
libsframe/config.h.in | 144 ++
libsframe/configure.ac | 127 ++
libsframe/doc/local.mk | 40 +
libsframe/doc/sframe-spec.texi | 614 +++++++
libsframe/sframe-backtrace-err.c | 46 +
libsframe/sframe-backtrace.c | 620 +++++++
libsframe/sframe-dump.c | 180 ++
libsframe/sframe-error.c | 49 +
libsframe/sframe-impl.h | 55 +
libsframe/sframe.c | 1633 +++++++++++++++++
libsframe/testsuite/Makefile.am | 24 +
libsframe/testsuite/Makefile.in | 687 +++++++
libsframe/testsuite/config/default.exp | 57 +
libsframe/testsuite/lib/sframe-lib.exp | 180 ++
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/Makefile.am | 17 +
.../testsuite/libsframe.decode/Makefile.in | 665 +++++++
.../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 | 103 ++
.../testsuite/libsframe.encode/Makefile.am | 9 +
.../testsuite/libsframe.encode/Makefile.in | 612 ++++++
.../testsuite/libsframe.encode/encode-1.c | 182 ++
.../testsuite/libsframe.encode/encode.exp | 32 +
.../testsuite/libsframe.unwind/backtrace.c | 145 ++
.../testsuite/libsframe.unwind/backtrace.lk | 3 +
.../testsuite/libsframe.unwind/inline-cmds.c | 136 ++
.../testsuite/libsframe.unwind/inline-cmds.lk | 3 +
libsframe/testsuite/libsframe.unwind/inline.c | 97 +
.../testsuite/libsframe.unwind/inline.lk | 3 +
.../testsuite/libsframe.unwind/solib-lib1.c | 8 +
.../testsuite/libsframe.unwind/solib-lib1.h | 3 +
.../testsuite/libsframe.unwind/solib-lib2.c | 51 +
.../testsuite/libsframe.unwind/solib-lib2.h | 3 +
.../testsuite/libsframe.unwind/solib-main.c | 47 +
.../testsuite/libsframe.unwind/solib-main.d | 3 +
.../testsuite/libsframe.unwind/solib.exp | 75 +
.../testsuite/libsframe.unwind/tailcall.c | 103 ++
.../testsuite/libsframe.unwind/tailcall.lk | 3 +
libsframe/testsuite/libsframe.unwind/ttest.c | 127 ++
libsframe/testsuite/libsframe.unwind/ttest.lk | 3 +
.../testsuite/libsframe.unwind/unwind.exp | 200 ++
sim/common/Make-common.in | 7 +-
src-release.sh | 4 +-
156 files changed, 16113 insertions(+), 64 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 config/sframe.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
mode change 100755 => 100644 gdb/configure
create mode 100644 include/sframe-api.h
create mode 100644 include/sframe-backtrace-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-backtrace-err.c
create mode 100644 libsframe/sframe-backtrace.c
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/Makefile.am
create mode 100644 libsframe/testsuite/Makefile.in
create mode 100644 libsframe/testsuite/config/default.exp
create mode 100644 libsframe/testsuite/lib/sframe-lib.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/Makefile.am
create mode 100644 libsframe/testsuite/libsframe.decode/Makefile.in
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.encode/Makefile.am
create mode 100644 libsframe/testsuite/libsframe.encode/Makefile.in
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.unwind/backtrace.c
create mode 100644 libsframe/testsuite/libsframe.unwind/backtrace.lk
create mode 100644 libsframe/testsuite/libsframe.unwind/inline-cmds.c
create mode 100644 libsframe/testsuite/libsframe.unwind/inline-cmds.lk
create mode 100644 libsframe/testsuite/libsframe.unwind/inline.c
create mode 100644 libsframe/testsuite/libsframe.unwind/inline.lk
create mode 100644 libsframe/testsuite/libsframe.unwind/solib-lib1.c
create mode 100644 libsframe/testsuite/libsframe.unwind/solib-lib1.h
create mode 100644 libsframe/testsuite/libsframe.unwind/solib-lib2.c
create mode 100644 libsframe/testsuite/libsframe.unwind/solib-lib2.h
create mode 100644 libsframe/testsuite/libsframe.unwind/solib-main.c
create mode 100644 libsframe/testsuite/libsframe.unwind/solib-main.d
create mode 100644 libsframe/testsuite/libsframe.unwind/solib.exp
create mode 100644 libsframe/testsuite/libsframe.unwind/tailcall.c
create mode 100644 libsframe/testsuite/libsframe.unwind/tailcall.lk
create mode 100644 libsframe/testsuite/libsframe.unwind/ttest.c
create mode 100644 libsframe/testsuite/libsframe.unwind/ttest.lk
create mode 100644 libsframe/testsuite/libsframe.unwind/unwind.exp
--
2.37.2
next reply other threads:[~2022-10-17 22:16 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-17 22:15 Indu Bhagat [this message]
2022-10-17 22:15 ` [PATCH,V2 01/15] sframe.h: Add SFrame format definition Indu Bhagat
2022-10-17 22:15 ` [PATCH,V2 02/15] gas: add new command line option --gsframe Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 03/15] gas: generate .sframe from CFI directives Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 04/15] gas: testsuite: add new tests for SFrame unwind info Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 05/15] libsframe: add the SFrame library Indu Bhagat
2022-10-27 18:07 ` Mike Frysinger
2022-10-30 7:37 ` Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 06/15] bfd: linker: merge .sframe sections Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 07/15] readelf/objdump: support for SFrame section Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 08/15] unwinder: generate backtrace using SFrame format Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 09/15] unwinder: Add SFrame unwinder tests Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 10/15] gdb: sim: buildsystem changes to accommodate libsframe Indu Bhagat
2022-10-27 17:36 ` [PATCH, V2 " Mike Frysinger
2022-10-30 7:16 ` Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 11/15] libctf: add libsframe to LDFLAGS and LIBS Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 12/15] src-release.sh: Add libsframe Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 13/15] binutils/NEWS: add text for SFrame support Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 14/15] gas/NEWS: add text about new command line option and " Indu Bhagat
2022-10-17 22:16 ` [PATCH,V2 15/15] doc: add SFrame spec file Indu Bhagat
2022-10-21 10:52 ` [PATCH,V2 00/15] Definition and support for SFrame unwind format Nick Clifton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221017221612.495324-1-indu.bhagat@oracle.com \
--to=indu.bhagat@oracle.com \
--cc=binutils@sourceware.org \
--cc=nickc@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).