[PATCH,V6 00/10] Definition and Implementation of CTF Frame format
Indu Bhagat
indu.bhagat@oracle.com
Tue Aug 2 08:04:42 GMT 2022
Hi,
This is version 6 of the previously sent RFC series.
Initial (V1) posting contains necessary introductions:
https://sourceware.org/pipermail/binutils/2022-May/120731.html
V2 posting with some improvements:
https://sourceware.org/pipermail/binutils/2022-May/120899.html
V3 posting with further improvements:
https://sourceware.org/pipermail/binutils/2022-June/121245.html
V4 posting with further improvements and bugfixes:
https://sourceware.org/pipermail/binutils/2022-June/121478.html
V5 posting testsuite additions:
https://sourceware.org/pipermail/binutils/2022-July/121839.html
The commit log of each patch in the current patch series specifies the changes
from the version V5 of the respective patch. Briefly, this patch series has
improved testsuites/infrastructure.
1. libctfframe/testsuite now uses recursive makefiles for building test programs.
2. Unwinder tests are still present in libctfframe/testsuite/libctfframe.unwind.
The code for the unwinding library for backtracing using CTF Frame (a.k.a.
libctfbacktrace) still sits in the libctfframe/ folder.
Testing notes:
- Tested natively on x86_64-linux, aarch64-linux
- 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. libctfframe tests ran as expected. libctfbacktrace/unwinder
tests (which are present in libctfframe/testsuite/libctfframe.unwind) have been
disabled when host != target.
Important note: libctfframe/configure has NOT been included in the patch
series, as it causes the size of some patches to go beyond the allowed limit.
Please regenerate the libctfframe/configure after applying the series.
Thanks,
Indu Bhagat (7):
ctf-frame.h: Add CTF Frame format definition
gas: add new command line option --gctf-frame
gas: generate .ctf_frame
libctfframe: add GNU poke pickles for CTF Frame
bfd: linker: merge .ctf_frame sections
readelf/objdump: support for CTF Frame section
gdb: sim: buildsystem changes to accommodate libctfframe
Weimin Pan (3):
libctfframe: add the CTF Frame library
unwinder: generate backtrace using CTF Frame format
unwinder: Add CTF Frame unwinder tests
Makefile.def | 5 +
Makefile.in | 1289 ++++++++++++-
bfd/Makefile.am | 6 +-
bfd/Makefile.in | 7 +-
bfd/bfd-in2.h | 1 +
bfd/configure | 2 +-
bfd/configure.ac | 2 +-
bfd/elf-bfd.h | 55 +
bfd/elf-ctf-frame.c | 529 ++++++
bfd/elf.c | 32 +
bfd/elf64-x86-64.c | 97 +-
bfd/elflink.c | 52 +
bfd/elfxx-x86.c | 379 +++-
bfd/elfxx-x86.h | 46 +
bfd/section.c | 1 +
binutils/Makefile.am | 10 +-
binutils/Makefile.in | 10 +-
binutils/doc/binutils.texi | 4 +
binutils/doc/ctfframe.options.texi | 10 +
binutils/objdump.c | 76 +
binutils/readelf.c | 47 +
config/ctf-frame.m4 | 16 +
configure | 2 +-
configure.ac | 2 +-
gas/Makefile.am | 3 +
gas/Makefile.in | 23 +-
gas/as.c | 10 +-
gas/as.h | 13 +-
gas/config/tc-aarch64.c | 42 +
gas/config/tc-aarch64.h | 29 +
gas/config/tc-i386.c | 46 +
gas/config/tc-i386.h | 26 +
gas/config/tc-xtensa.c | 1 +
gas/ctf-frame-opt.c | 158 ++
gas/doc/as.texi | 19 +-
gas/dw2gencfi.c | 30 +
gas/dw2gencfi.h | 1 +
gas/gen-ctf-frame.c | 1297 ++++++++++++++
gas/gen-ctf-frame.h | 142 ++
gas/testsuite/gas/cfi-ctf/cfi-ctf-aarch64-1.d | 20 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-aarch64-1.s | 61 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-1.d | 17 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-1.s | 3 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-2.d | 17 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-2.s | 2 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-3.d | 17 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-3.s | 4 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-4.d | 21 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-4.s | 8 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-5.d | 21 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-5.s | 7 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-6.d | 21 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-6.s | 7 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-7.d | 21 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-7.s | 7 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-8.d | 20 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-common-8.s | 12 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-x86_64-1.d | 22 +
gas/testsuite/gas/cfi-ctf/cfi-ctf-x86_64-1.s | 30 +
gas/testsuite/gas/cfi-ctf/cfi-ctf.exp | 58 +
gas/testsuite/gas/cfi-ctf/common-empty-1.d | 14 +
gas/testsuite/gas/cfi-ctf/common-empty-1.s | 5 +
gas/testsuite/gas/cfi-ctf/common-empty-2.d | 14 +
gas/testsuite/gas/cfi-ctf/common-empty-2.s | 8 +
gas/testsuite/gas/cfi-ctf/common-empty-3.d | 14 +
gas/testsuite/gas/cfi-ctf/common-empty-3.s | 9 +
gas/testsuite/gas/cfi-ctf/common-empty-4.d | 14 +
gas/testsuite/gas/cfi-ctf/common-empty-4.s | 18 +
gas/write.c | 13 +
gdb/Makefile.in | 8 +-
gdb/acinclude.m4 | 4 +-
gdb/configure | 35 +-
gdb/configure.ac | 11 +
include/ctf-backtrace-api.h | 57 +
include/ctf-frame-api.h | 213 +++
include/ctf-frame.h | 281 +++
include/elf/common.h | 1 +
include/elf/internal.h | 1 +
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 | 2 +
ld/testsuite/ld-aarch64/ctf-frame-bar.s | 7 +
ld/testsuite/ld-aarch64/ctf-frame-foo.s | 10 +
ld/testsuite/ld-aarch64/ctf-frame-simple-1.d | 26 +
ld/testsuite/ld-bootstrap/bootstrap.exp | 8 +-
ld/testsuite/ld-ctf-frame/ctf-frame-empty.d | 10 +
ld/testsuite/ld-ctf-frame/ctf-frame-empty.s | 2 +
ld/testsuite/ld-ctf-frame/ctf-frame.exp | 47 +
ld/testsuite/ld-ctf-frame/discard.d | 10 +
ld/testsuite/ld-ctf-frame/discard.ld | 9 +
ld/testsuite/ld-ctf-frame/discard.s | 13 +
ld/testsuite/ld-x86-64/ctf-frame-bar.s | 31 +
ld/testsuite/ld-x86-64/ctf-frame-foo.s | 37 +
ld/testsuite/ld-x86-64/ctf-frame-plt-1.d | 29 +
ld/testsuite/ld-x86-64/ctf-frame-simple-1.d | 35 +
ld/testsuite/ld-x86-64/x86-64.exp | 2 +
ld/testsuite/lib/ld-lib.exp | 45 +
libctfframe/Makefile.am | 52 +
libctfframe/Makefile.in | 1099 ++++++++++++
libctfframe/aclocal.m4 | 1242 +++++++++++++
libctfframe/config.h.in | 144 ++
libctfframe/configure.ac | 97 +
libctfframe/ctf-backtrace-err.c | 46 +
libctfframe/ctf-backtrace.c | 619 +++++++
libctfframe/ctf-frame-dump.c | 181 ++
libctfframe/ctf-frame-dump.pk | 68 +
libctfframe/ctf-frame-error.c | 49 +
libctfframe/ctf-frame-impl.h | 55 +
libctfframe/ctf-frame.c | 1587 +++++++++++++++++
libctfframe/ctf-frame.pk | 200 +++
libctfframe/testsuite/Makefile.am | 23 +
libctfframe/testsuite/Makefile.in | 684 +++++++
libctfframe/testsuite/config/default.exp | 57 +
libctfframe/testsuite/lib/ctfframe-lib.exp | 180 ++
.../testsuite/libctfframe.decode/DATA1 | Bin 0 -> 59 bytes
.../testsuite/libctfframe.decode/DATA2 | Bin 0 -> 91 bytes
.../testsuite/libctfframe.decode/DATA_BIGE | Bin 0 -> 59 bytes
.../testsuite/libctfframe.decode/Makefile.am | 14 +
.../testsuite/libctfframe.decode/Makefile.in | 663 +++++++
.../libctfframe.decode/bigendian_data.c | 107 ++
.../testsuite/libctfframe.decode/decode.exp | 41 +
.../testsuite/libctfframe.decode/frecnt_1.c | 99 +
.../testsuite/libctfframe.decode/frecnt_2.c | 103 ++
.../testsuite/libctfframe.encode/Makefile.am | 6 +
.../testsuite/libctfframe.encode/Makefile.in | 610 +++++++
.../testsuite/libctfframe.encode/encode.exp | 25 +
.../testsuite/libctfframe.encode/encode_1.c | 182 ++
.../testsuite/libctfframe.unwind/backtrace.c | 145 ++
.../testsuite/libctfframe.unwind/backtrace.lk | 3 +
.../libctfframe.unwind/inline-cmds.c | 135 ++
.../libctfframe.unwind/inline-cmds.lk | 3 +
.../testsuite/libctfframe.unwind/inline.c | 97 +
.../testsuite/libctfframe.unwind/inline.lk | 3 +
.../testsuite/libctfframe.unwind/solib-lib1.c | 8 +
.../testsuite/libctfframe.unwind/solib-lib2.c | 51 +
.../testsuite/libctfframe.unwind/solib-main.c | 47 +
.../testsuite/libctfframe.unwind/solib-main.d | 3 +
.../testsuite/libctfframe.unwind/solib.exp | 75 +
.../testsuite/libctfframe.unwind/solib_lib1.h | 3 +
.../testsuite/libctfframe.unwind/solib_lib2.h | 3 +
.../testsuite/libctfframe.unwind/tailcall.c | 103 ++
.../testsuite/libctfframe.unwind/tailcall.lk | 3 +
.../testsuite/libctfframe.unwind/ttest.c | 127 ++
.../testsuite/libctfframe.unwind/ttest.lk | 3 +
.../testsuite/libctfframe.unwind/unwind.exp | 200 +++
libctfframe/ttest.c | 78 +
sim/common/Make-common.in | 7 +-
151 files changed, 15252 insertions(+), 58 deletions(-)
create mode 100644 bfd/elf-ctf-frame.c
create mode 100644 binutils/doc/ctfframe.options.texi
create mode 100644 config/ctf-frame.m4
create mode 100644 gas/ctf-frame-opt.c
create mode 100644 gas/gen-ctf-frame.c
create mode 100644 gas/gen-ctf-frame.h
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-aarch64-1.d
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-aarch64-1.s
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-1.d
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-1.s
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-2.d
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-2.s
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-3.d
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-3.s
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-4.d
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-4.s
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-5.d
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-5.s
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-6.d
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-6.s
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-7.d
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-7.s
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-8.d
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-common-8.s
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-x86_64-1.d
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf-x86_64-1.s
create mode 100644 gas/testsuite/gas/cfi-ctf/cfi-ctf.exp
create mode 100644 gas/testsuite/gas/cfi-ctf/common-empty-1.d
create mode 100644 gas/testsuite/gas/cfi-ctf/common-empty-1.s
create mode 100644 gas/testsuite/gas/cfi-ctf/common-empty-2.d
create mode 100644 gas/testsuite/gas/cfi-ctf/common-empty-2.s
create mode 100644 gas/testsuite/gas/cfi-ctf/common-empty-3.d
create mode 100644 gas/testsuite/gas/cfi-ctf/common-empty-3.s
create mode 100644 gas/testsuite/gas/cfi-ctf/common-empty-4.d
create mode 100644 gas/testsuite/gas/cfi-ctf/common-empty-4.s
create mode 100644 include/ctf-backtrace-api.h
create mode 100644 include/ctf-frame-api.h
create mode 100644 include/ctf-frame.h
create mode 100644 ld/testsuite/ld-aarch64/ctf-frame-bar.s
create mode 100644 ld/testsuite/ld-aarch64/ctf-frame-foo.s
create mode 100644 ld/testsuite/ld-aarch64/ctf-frame-simple-1.d
create mode 100644 ld/testsuite/ld-ctf-frame/ctf-frame-empty.d
create mode 100644 ld/testsuite/ld-ctf-frame/ctf-frame-empty.s
create mode 100644 ld/testsuite/ld-ctf-frame/ctf-frame.exp
create mode 100644 ld/testsuite/ld-ctf-frame/discard.d
create mode 100644 ld/testsuite/ld-ctf-frame/discard.ld
create mode 100644 ld/testsuite/ld-ctf-frame/discard.s
create mode 100644 ld/testsuite/ld-x86-64/ctf-frame-bar.s
create mode 100644 ld/testsuite/ld-x86-64/ctf-frame-foo.s
create mode 100644 ld/testsuite/ld-x86-64/ctf-frame-plt-1.d
create mode 100644 ld/testsuite/ld-x86-64/ctf-frame-simple-1.d
create mode 100644 libctfframe/Makefile.am
create mode 100644 libctfframe/Makefile.in
create mode 100644 libctfframe/aclocal.m4
create mode 100644 libctfframe/config.h.in
create mode 100644 libctfframe/configure.ac
create mode 100644 libctfframe/ctf-backtrace-err.c
create mode 100644 libctfframe/ctf-backtrace.c
create mode 100644 libctfframe/ctf-frame-dump.c
create mode 100644 libctfframe/ctf-frame-dump.pk
create mode 100644 libctfframe/ctf-frame-error.c
create mode 100644 libctfframe/ctf-frame-impl.h
create mode 100644 libctfframe/ctf-frame.c
create mode 100644 libctfframe/ctf-frame.pk
create mode 100644 libctfframe/testsuite/Makefile.am
create mode 100644 libctfframe/testsuite/Makefile.in
create mode 100644 libctfframe/testsuite/config/default.exp
create mode 100644 libctfframe/testsuite/lib/ctfframe-lib.exp
create mode 100644 libctfframe/testsuite/libctfframe.decode/DATA1
create mode 100644 libctfframe/testsuite/libctfframe.decode/DATA2
create mode 100644 libctfframe/testsuite/libctfframe.decode/DATA_BIGE
create mode 100644 libctfframe/testsuite/libctfframe.decode/Makefile.am
create mode 100644 libctfframe/testsuite/libctfframe.decode/Makefile.in
create mode 100644 libctfframe/testsuite/libctfframe.decode/bigendian_data.c
create mode 100644 libctfframe/testsuite/libctfframe.decode/decode.exp
create mode 100644 libctfframe/testsuite/libctfframe.decode/frecnt_1.c
create mode 100644 libctfframe/testsuite/libctfframe.decode/frecnt_2.c
create mode 100644 libctfframe/testsuite/libctfframe.encode/Makefile.am
create mode 100644 libctfframe/testsuite/libctfframe.encode/Makefile.in
create mode 100644 libctfframe/testsuite/libctfframe.encode/encode.exp
create mode 100644 libctfframe/testsuite/libctfframe.encode/encode_1.c
create mode 100644 libctfframe/testsuite/libctfframe.unwind/backtrace.c
create mode 100644 libctfframe/testsuite/libctfframe.unwind/backtrace.lk
create mode 100644 libctfframe/testsuite/libctfframe.unwind/inline-cmds.c
create mode 100644 libctfframe/testsuite/libctfframe.unwind/inline-cmds.lk
create mode 100644 libctfframe/testsuite/libctfframe.unwind/inline.c
create mode 100644 libctfframe/testsuite/libctfframe.unwind/inline.lk
create mode 100644 libctfframe/testsuite/libctfframe.unwind/solib-lib1.c
create mode 100644 libctfframe/testsuite/libctfframe.unwind/solib-lib2.c
create mode 100644 libctfframe/testsuite/libctfframe.unwind/solib-main.c
create mode 100644 libctfframe/testsuite/libctfframe.unwind/solib-main.d
create mode 100644 libctfframe/testsuite/libctfframe.unwind/solib.exp
create mode 100644 libctfframe/testsuite/libctfframe.unwind/solib_lib1.h
create mode 100644 libctfframe/testsuite/libctfframe.unwind/solib_lib2.h
create mode 100644 libctfframe/testsuite/libctfframe.unwind/tailcall.c
create mode 100644 libctfframe/testsuite/libctfframe.unwind/tailcall.lk
create mode 100644 libctfframe/testsuite/libctfframe.unwind/ttest.c
create mode 100644 libctfframe/testsuite/libctfframe.unwind/ttest.lk
create mode 100644 libctfframe/testsuite/libctfframe.unwind/unwind.exp
create mode 100644 libctfframe/ttest.c
--
2.37.1
More information about the Binutils
mailing list