LLVM

Enhanced debuggability support in LLVM for various Fortran language features

Fortran debuggabiliy support in LLVM
<p>The aim of this abstract is to showcase the enhanced debuggability support added in LLVM for the Fortran language features. LLVM being emerging compiler framework, there was some gap to be bridged w.r.t. Fortran language debug info generation. This is because Fortran language has few features which are very powerful, as compared to other languages.</p> <p>Fortran dynamic arrays are one such powerful language feature. There are variety of arrays like adjustable array, assumed shape, assumed size, assumed rank, allocatable and pointer arrays. LLVM generated debug info was not sufficient to debug these many variety of arrays with GDB/LLDB. The LLVM was lacking support for multiple DWARF operators (DW<em>OP</em>push<em>object address, DW</em>OP<em>over), DWARF attributes (DW</em>AT<em>data</em>location, DW<em>AT</em>allocated, DW<em>AT</em>associated, DW<em>AT</em>rank) and a DWARF TAGs (DW<em>TAG</em>generic_subrange). Other than these, existing support for DISubrange was not sufficient to handle Fortran arrays. The same was true for Fortran strings which is not mere pointer to character type and needed more support from LLVM. Other features which needed similar LLVM support for debugging were Fortran modules, namelist and signed constants etc.</p> <p>All these enhancements made in LLVM are as per DWARF4 or DWARF5 specification for the Fortran language. These enhanced debug info are used by GDB/LLDB and user debugging experience is improved now while handling these Fortran features with GDB/LLDB. In order to make use of these enhanced debug info emitted by LLVM, GDB/LLDB is also enhanced in cases where required. With these enhancements added now in LLVM, Fortran program debugging experience with the clang/flang emitted programs are on par with gcc/gfortran emitted programs and in some cases it’s even better than gcc/gfortran.</p>

Additional information

Type devroom

More sessions

2/5/22
LLVM
Pavel Kosov
D.llvm
<p>In this talk we will briefly describe how to add your own extension to C, what steps may be needed to do it. And then we will review a small example</p>
2/5/22
LLVM
Leonardo Di Donato
D.llvm
<p>eBPF is fastly becoming the first choice for implementing tracing and security-critical applications and software.</p> <p>Yet, its ecosystem lacks tooling to make developers' life easier.</p> <p>Join this talk to get to know bpfcov: an open-source tool I wrote that uses the LLVM pass infrastructure to instrument your eBPF programs to collect coverage data while they run in the eBPF VM in the Linux kernel.</p>
2/5/22
LLVM
Kristof Beyls
D.llvm
<p>Compilers play a crucial role in hardening software against security attacks. As compiler engineers we experience an increase in demand for security-related features: we simply work on security-related features more often. We find it tough to analyze whether the hardenings we implement are easy or hard to circumvent by attackers. After chatting about this with many compiler developers, our experience is that most feel their work would benefit from a deeper understanding of attacks and ...
2/5/22
LLVM
Thomas Pietsch
D.llvm
<p>Clang and LLVM have a great history of supporting a great variety of CPUs, from 8- to 64-bits assuming they all have a smallest size of an addressable unit of 8-bits words. Despite the fact that a lot of types and there alignment can be defined with the “target datalayout” string, the “character” and “short” type have been hard-coded into clang and llvm.</p>
2/5/22
LLVM
Bernhard Rosenkränzer
D.llvm
<p>Oniro - the Eclipse Foundation's embedded operating system - is switching from libstdc++ to libc++ by default. This talk gives an overview of our experience daring to make the switch.</p>
2/5/22
LLVM
Babar Khan
D.llvm
<p>Although Linux is still the best preferred operating system, the talk begins with a problem statement regarding the dependencies of ANTLR and LLVM on Windows. To this end, the presenter will explain how these dependency issues can be resolved through an easy-to-use environment for building, installing and running native LLVM and ANTLR on Windows. Furthermore, the talk will briefly explain how we can design domain specific languages (DSLs) using a powerful combination of ANTLR and LLVM front ...