From: Indu Bhagat <indu.bhagat@oracle.com>
To: binutils@sourceware.org
Cc: Indu Bhagat <indu.bhagat@oracle.com>
Subject: [PATCH,V3 00/15] Definition and support for SFrame unwind format
Date: Sun, 30 Oct 2022 00:44:35 -0700 [thread overview]
Message-ID: <20221030074450.1956074-1-indu.bhagat@oracle.com> (raw)
Since the V2 was approved, there have been some changes to the patch series.
Each patch has brief notes on the respective changes from V2. Here is a
combined summary:
- V3 has some bugfixes. It was noticed that unwinding on aarch64 had issues
with -fomit-frame-pointer. Fixed now. Added new unwinder testcases around
the same.
- Addressed review comments by Mike on libsframe/ and gdb/ builsystem.
Posting a V3 for the complete set.
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:
- Regression tested natively on x86_64-linux, aarch64-linux and i686-linux with
'--enable-shared'.
- Cross builds for various targets on x86_64 host, and some targets on aarch64
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.
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 | 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 +
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 | 52 +
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 | 96 +
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 | 7 +-
gdb/acinclude.m4 | 4 +-
gdb/configure | 8 +-
include/elf/common.h | 1 +
include/elf/internal.h | 1 +
include/sframe-api.h | 234 +++
include/sframe-backtrace-api.h | 57 +
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 +
libctf/configure | 4 +-
libctf/configure.ac | 4 +-
libsframe/Makefile.am | 58 +
libsframe/Makefile.in | 1533 +++++++++++++++
libsframe/aclocal.m4 | 1243 ++++++++++++
libsframe/config.h.in | 132 ++
libsframe/configure.ac | 114 ++
libsframe/doc/local.mk | 40 +
libsframe/doc/sframe-spec.texi | 619 ++++++
libsframe/sframe-backtrace-err.c | 46 +
libsframe/sframe-backtrace.c | 626 ++++++
libsframe/sframe-dump.c | 181 ++
libsframe/sframe-error.c | 49 +
libsframe/sframe-impl.h | 55 +
libsframe/sframe.c | 1675 +++++++++++++++++
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/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.unwind/backtrace-fp-attr-1.c | 109 ++
.../libsframe.unwind/backtrace-fp-attr-1.lk | 4 +
.../libsframe.unwind/backtrace-fp-attr-2.c | 110 ++
.../libsframe.unwind/backtrace-fp-attr-2.lk | 4 +
.../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 | 205 ++
libsframe/testsuite/local.mk | 24 +
sim/common/Make-common.in | 7 +-
sim/ppc/Makefile.in | 5 +-
src-release.sh | 4 +-
157 files changed, 14549 insertions(+), 66 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/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/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/libsframe.unwind/backtrace-fp-attr-1.c
create mode 100644 libsframe/testsuite/libsframe.unwind/backtrace-fp-attr-1.lk
create mode 100644 libsframe/testsuite/libsframe.unwind/backtrace-fp-attr-2.c
create mode 100644 libsframe/testsuite/libsframe.unwind/backtrace-fp-attr-2.lk
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
create mode 100644 libsframe/testsuite/local.mk
--
2.37.2
next reply other threads:[~2022-10-30 7:45 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-30 7:44 Indu Bhagat [this message]
2022-10-30 7:44 ` [PATCH,V3 01/15] sframe.h: Add SFrame format definition Indu Bhagat
2022-10-30 7:44 ` [PATCH,V3 02/15] gas: add new command line option --gsframe Indu Bhagat
2022-10-30 7:44 ` [PATCH,V3 03/15] gas: generate .sframe from CFI directives Indu Bhagat
2022-10-30 8:03 ` Mike Frysinger
2022-11-06 5:30 ` Indu Bhagat
2022-11-06 5:36 ` [PATCH,V3.1 " Indu Bhagat
2022-10-30 7:44 ` [PATCH,V3 04/15] gas: testsuite: add new tests for SFrame unwind info Indu Bhagat
2022-10-30 7:44 ` [PATCH,V3 05/15] libsframe: add the SFrame library Indu Bhagat
2022-10-30 7:44 ` [PATCH,V3 06/15] bfd: linker: merge .sframe sections Indu Bhagat
2022-10-30 13:33 ` Mike Frysinger
2022-10-30 7:44 ` [PATCH,V3 07/15] readelf/objdump: support for SFrame section Indu Bhagat
2022-10-30 7:44 ` [PATCH,V3 08/15] unwinder: generate backtrace using SFrame format Indu Bhagat
2022-10-30 14:03 ` Mike Frysinger
2022-11-01 22:36 ` [PATCH, V3 " Weimin Pan
2022-11-02 15:00 ` Mike Frysinger
2022-11-02 6:23 ` [PATCH,V3 " Indu Bhagat
2022-10-30 7:44 ` [PATCH,V3 09/15] unwinder: Add SFrame unwinder tests Indu Bhagat
2022-10-30 14:14 ` Mike Frysinger
2022-10-30 7:44 ` [PATCH,V3 10/15] gdb: sim: buildsystem changes to accommodate libsframe Indu Bhagat
2022-10-30 14:15 ` [PATCH, V3 " Mike Frysinger
2022-10-31 20:39 ` Indu Bhagat
2022-11-02 15:02 ` Mike Frysinger
2022-11-02 19:11 ` Jose E. Marchesi
2022-11-03 15:27 ` Mike Frysinger
2022-11-04 12:14 ` Jose E. Marchesi
2022-10-30 7:44 ` [PATCH,V3 11/15] libctf: add libsframe to LDFLAGS and LIBS Indu Bhagat
2022-10-30 13:27 ` Mike Frysinger
2022-10-31 20:06 ` Indu Bhagat
2022-11-01 18:57 ` Nick Alcock
2022-11-01 21:42 ` Andreas Schwab
2022-11-02 13:16 ` Nick Alcock
2022-11-04 19:02 ` [PATCH,V3.1,11/15] " Indu Bhagat
2022-11-04 21:01 ` [PATCH,V3.2,11/15] " Indu Bhagat
2022-11-05 9:21 ` Andreas Schwab
2022-11-07 22:28 ` [PATCH,V3.3 11/15] " Indu Bhagat
2022-11-08 3:26 ` Mike Frysinger
2022-11-08 19:26 ` Indu Bhagat
2022-10-30 7:44 ` [PATCH,V3 12/15] src-release.sh: Add libsframe Indu Bhagat
2022-10-30 7:44 ` [PATCH,V3 13/15] binutils/NEWS: add text for SFrame support Indu Bhagat
2022-10-30 7:44 ` [PATCH,V3 14/15] gas/NEWS: add text about new command line option and " Indu Bhagat
2022-10-30 8:05 ` [PATCH, V3 " Mike Frysinger
2022-10-31 23:17 ` Indu Bhagat
2022-10-30 7:44 ` [PATCH,V3 15/15] doc: add SFrame spec file Indu Bhagat
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=20221030074450.1956074-1-indu.bhagat@oracle.com \
--to=indu.bhagat@oracle.com \
--cc=binutils@sourceware.org \
/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).