public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [RFC][PATCH 0/1] Fortran entry and DW_TAG_entry_point
@ 2022-03-23 10:53 Nils-Christian Kempke
  2022-03-23 10:53 ` [RFC][PATCH 1/1] dwarf, fortran: add support for DW_TAG_entry_point Nils-Christian Kempke
  2022-04-08 20:36 ` [RFC][PATCH 0/1] Fortran entry and DW_TAG_entry_point Kevin Buettner
  0 siblings, 2 replies; 4+ messages in thread
From: Nils-Christian Kempke @ 2022-03-23 10:53 UTC (permalink / raw)
  To: gdb-patches

Hi,

please find attached a patch that enables GDB to parse the
DW_TAG_entry_point DWARF tag.

It was already sent to the mailing list a while ago but got lost in
review (see the commit message of the attached patch).

The patch was originally written with ifort in mind, the only compiler
we know of, that actually emits the DW_TAG_entry_point.  It is used to
describe alternative entry points to functions defined with Fortran's
'entry' keyword.  With this patch it becomes possible to define and hit
breakpoints in an executable that uses the 'entry' feature and has been
compiled with ifort.

Gfortran and ifx actually follow a different way to describe Fortran entry
points.  Both emit a DW_TAG_subprogram instead.

Sadly, the DWARF emitted by ifort is not quite correct for the given
test (or any other entry point test we tried).  Some parameters of
subroutines and entry points have a wrong DWARF location description.  So
even though hitting breakpoints is possible in the test, printing of the
passed variables fails and running the test with ifort will still produce
FAILs.

With this in mind, we were unsure what to do with this patch, thus the RFC.
On the one hand we did not want the patch to be lost.  On the other hand the
compiler the patch was written for has some issues in its emitted DWARF 
and we do not know when these issues can/will get fixed.

Note, that the attached test only fully passes with gfortran.  Ifx, while
able to define breakpoints at entry points, also has issues producing
correct DWARF for entry points (using the DW_TAG_subprogram approach).

The patch was tested with the standard board, unix/-m32,
navtive-gdbserver and native-extended-gdbserver and we did not find any
regressions with these.

Any feedback is highly welcome.

Cheers!

Nils

Nils-Christian Kempke (1):
  dwarf, fortran: add support for DW_TAG_entry_point

 gdb/dwarf2/read.c                         | 101 ++++++++++++++++++++++
 gdb/testsuite/gdb.fortran/entry-point.exp |  67 ++++++++++++++
 gdb/testsuite/gdb.fortran/entry-point.f90 |  48 ++++++++++
 3 files changed, 216 insertions(+)
 create mode 100644 gdb/testsuite/gdb.fortran/entry-point.exp
 create mode 100644 gdb/testsuite/gdb.fortran/entry-point.f90

-- 
2.25.1

Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-04-11 16:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-23 10:53 [RFC][PATCH 0/1] Fortran entry and DW_TAG_entry_point Nils-Christian Kempke
2022-03-23 10:53 ` [RFC][PATCH 1/1] dwarf, fortran: add support for DW_TAG_entry_point Nils-Christian Kempke
2022-04-08 20:36 ` [RFC][PATCH 0/1] Fortran entry and DW_TAG_entry_point Kevin Buettner
2022-04-11 16:08   ` Kempke, Nils-Christian

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).