[PATCH,RFC,V2 0/8] Definition and Implementation of CTF Frame format
Indu Bhagat
indu.bhagat@oracle.com
Fri May 27 16:20:49 GMT 2022
Ping.
On 5/19/22 1:30 AM, Indu Bhagat wrote:
> Hello,
>
> Thanks for your comments on the version V1 of the patch series.
>
> This is a refresh of the previously sent RFC series
> https://sourceware.org/pipermail/binutils/2022-May/120731.html.
>
> The commit log of each patch in this series specifies the changes from V1 of
> the respective patch. Briefly, following are the main changes in the current
> version V2 as compared to V1:
>
> 1. GAS now supports a new command line option --gctf-frame. This command line
> option instructs GAS to generate .ctf_frame section from CFI directives. The
> user can either specify --gctf-frame or use ".cfi_sections" directive with
> ".ctf_frame" to generate .ctf_frame sections.
> 2. Some code cleanup, improvements and bugfixes.
> 3. libctfbacktrace has required some buildsystem changes. libctfbacktrace is
> the ".ctf_frame unwinding library", and as such needs CTF Frame unwind
> information for itself to work. So the buildsystem checks if the available
> assembler supports --gctf-frame, if so, libctfbacktrace is generated with "-Wa,
> --gctf-frame".
> 4. Regression testing for some aarch64 and x86 targets.
>
> This is a work in progress. There still remain open issues to be resolved,
> crude code stubs to be revisited, addition of testsuites, and more regression
> testing testing. This will be taken care of in subsequent iterations of the
> series.
>
> 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.
>
> Please comment and provide feedback, it will help shape the format. Here are a
> few of the aspects that particularly need discussion:
>
> 1. What is a good place for an unwinder based on CTF Frame format ? Currently
> to facilitate discussion, it is presented in a library of its own:
> libctfbacktrace which, in turn, uses the libctfframe library for decoding the
> .ctf_frame section for unwinding. We brainstormed a bit about the possible
> candidates being libbacktace, libgcc or libunwind ? Are there any
> recommendations ?
> 2. Are there some ideas for smartly dealing with the issue of bloat caused by
> the CTF Frame unwind information for the PLT entries ?
>
> Thanks,
>
> Indu Bhagat (6):
> ctf-frame.h: Add CTF Frame format definition
> gas: add new command line option --gctf-frame
> gas: generate .ctf_frame
> bfd: linker: merge .ctf_frame sections
> readelf/objdump: support for CTF Frame section
> gdb: sim: buildsystem changes to accommodate libctfframe
>
> Weimin Pan (2):
> libctfframe: add the CTF Frame library
> unwinder: generate backtrace using CTF Frame format
>
> 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 | 490 ++++++++
> bfd/elf.c | 32 +
> bfd/elf64-x86-64.c | 97 +-
> bfd/elflink.c | 52 +
> bfd/elfxx-x86.c | 336 ++++-
> 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 | 22 +-
> 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/ctffreopt.c | 158 +++
> gas/doc/as.texi | 19 +-
> gas/dw2gencfi.c | 30 +
> gas/dw2gencfi.h | 1 +
> gas/gen-ctf-frame.c | 1212 ++++++++++++++++++
> gas/gen-ctf-frame.h | 142 +++
> 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 | 257 ++++
> 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-bootstrap/bootstrap.exp | 8 +-
> libctfframe/Makefile.am | 50 +
> libctfframe/Makefile.in | 982 +++++++++++++++
> libctfframe/aclocal.m4 | 1242 ++++++++++++++++++
> libctfframe/config.h.in | 144 +++
> libctfframe/configure.ac | 82 ++
> libctfframe/ctf-backtrace-err.c | 46 +
> libctfframe/ctf-backtrace.c | 617 +++++++++
> libctfframe/ctf-frame-dump.c | 173 +++
> libctfframe/ctf-frame-error.c | 49 +
> libctfframe/ctf-frame-impl.h | 55 +
> libctfframe/ctf-frame.c | 1525 +++++++++++++++++++++++
> libctfframe/ttest.c | 78 ++
> sim/common/Make-common.in | 7 +-
> 69 files changed, 9973 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/ctffreopt.c
> create mode 100644 gas/gen-ctf-frame.c
> create mode 100644 gas/gen-ctf-frame.h
> 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 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-error.c
> create mode 100644 libctfframe/ctf-frame-impl.h
> create mode 100644 libctfframe/ctf-frame.c
> create mode 100644 libctfframe/ttest.c
>
More information about the Binutils
mailing list