summaryrefslogtreecommitdiffstats
path: root/libdw/dwarf.h
diff options
context:
space:
mode:
authorJohn M Mellor-Crummey <[email protected]>2021-10-20 18:19:38 -0500
committerMark Wielaard <[email protected]>2021-11-10 11:03:32 +0100
commitdbd44e96f101a81f387ca6ff46910ab74ed7b1dc (patch)
tree062f1ea987223df99a9dae87aaa4a9e25c294b00 /libdw/dwarf.h
parent5b21e70216b853065fa2fef34273db5f7dcdc88b (diff)
libdw, readelf: Read inlining info in NVIDIA extended line map
As of CUDA 11.2, NVIDIA added extensions to the line map section of CUDA binaries to represent inlined functions. These extensions include - two new fields in a line table row to represent inline information: context, and functionname, - two new DWARF extended opcodes: DW_LNE_NVIDIA_inlined_call, DW_LNE_NVIDIA_set_function_name, - an additional word in the line table header that indicates the offset in the .debug_str function where the function names for this line table begin, and A line table row for an inlined function contains a non-zero "context" value. The “context” field indicates the index of the line table row that serves as the call site for an inlined context. The "functionname" field in a line table row is only meaningful if the "context" field of the row is non-zero. A meaningful "functionname" field contains an index into the .debug_str section relative to the base offset established in the line table header; the position in the .debug_str section indicates the name of the inlined function. These extensions resemble the proposed DWARF extensions (http://dwarfstd.org/ShowIssue.php?issue=140906.1) by Cary Coutant, but are not identical. This commit integrates support for handling NVIDIA's extended line maps into elfutil's libdw library, by adding two functions dwarf_linecontext and dwarf_linefunctionname, and the readelf --debug-dump=line command line utility. Signed-off-by: John M Mellor-Crummey <[email protected]> Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'libdw/dwarf.h')
-rw-r--r--libdw/dwarf.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/libdw/dwarf.h b/libdw/dwarf.h
index 19a4be96..3ce7f236 100644
--- a/libdw/dwarf.h
+++ b/libdw/dwarf.h
@@ -844,6 +844,10 @@ enum
DW_LNE_set_discriminator = 4,
DW_LNE_lo_user = 128,
+
+ DW_LNE_NVIDIA_inlined_call = 144,
+ DW_LNE_NVIDIA_set_function_name = 145,
+
DW_LNE_hi_user = 255
};