summaryrefslogtreecommitdiffstats
path: root/tests/run-nvidia-extended-linemap-readelf.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run-nvidia-extended-linemap-readelf.sh')
-rwxr-xr-xtests/run-nvidia-extended-linemap-readelf.sh120
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/run-nvidia-extended-linemap-readelf.sh b/tests/run-nvidia-extended-linemap-readelf.sh
new file mode 100755
index 00000000..1fa9b7b4
--- /dev/null
+++ b/tests/run-nvidia-extended-linemap-readelf.sh
@@ -0,0 +1,120 @@
+# Copyright (C) 2011 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# NOTE:
+# the file testfile_nvidia_linemap is a CUDA binary for an NVIDIA A100 generated as follows using CUDA 11.2
+# nvcc -o main main.cu -Xcompiler "-g -fopenmp" -O3 -lineinfo -arch sm_80 -lcudart -lcuda -lstdc++ -lm
+# cuobjdump -xelf all main
+# mv main.sm_80.cubin testfile_nvidia_linemap
+
+testfiles testfile_nvidia_linemap
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=line testfile_nvidia_linemap << EOF
+
+DWARF section [ 5] '.debug_line' at offset 0x3e0:
+
+Table at offset 0:
+
+ Length: 253
+ DWARF version: 2
+ Prologue length: 111
+ Address size: 8
+ Segment selector size: 0
+ Min instruction length: 1
+ Max operations per instruction: 1
+ Initial value if 'is_stmt': 1
+ Line base: -5
+ Line range: 14
+ Opcode base: 10
+
+Opcodes:
+ [1] 0 arguments
+ [2] 1 argument
+ [3] 1 argument
+ [4] 1 argument
+ [5] 1 argument
+ [6] 0 arguments
+ [7] 0 arguments
+ [8] 0 arguments
+ [9] 1 argument
+
+Directory table:
+ /home/johnmc/hpctoolkit-gpu-samples/nvidia_extended_linemap4
+
+File name table:
+ Entry Dir Time Size Name
+ 1 1 1626104146 1819 main.cu
+ 2 1 1626104111 211 bar.h
+
+Line number statements:
+ [ 79] extended opcode 2: set address to 0 <kernel>
+ [ 84] set file to 1
+ [ 86] advance line by constant 24 to 25
+ [ 88] copy
+ [ 89] special opcode 240: address+16 = 0x10 <kernel+0x10>, line+1 = 26
+ [ 8a] advance line by constant 1 to 27
+ [ 8c] advance address by 48 to 0x40 <kernel+0x40>
+ [ 8e] copy
+ [ 8f] advance line by constant -2 to 25
+ [ 91] advance address by 80 to 0x90 <kernel+0x90>
+ [ 94] copy
+ [ 95] special opcode 242: address+16 = 0xa0 <kernel+0xa0>, line+3 = 28
+ [ 96] advance address by 96 to 0x100 <kernel+0x100>
+ [ 99] copy
+ [ 9a] extended opcode 144: set inlined context 6, function name foo (0x0)
+ [ 9f] advance line by constant -20 to 8
+ [ a1] copy
+ [ a2] advance line by constant 1 to 9
+ [ a4] advance address by 80 to 0x150 <kernel+0x150>
+ [ a7] copy
+ [ a8] extended opcode 144: set inlined context 0, function name foo (0x0)
+ [ ad] advance line by constant 22 to 31
+ [ af] advance address by 144 to 0x1e0 <kernel+0x1e0>
+ [ b2] copy
+ [ b3] set file to 2
+ [ b5] extended opcode 144: set inlined context 9, function name bar (0x4)
+ [ ba] advance line by constant -25 to 6
+ [ bc] copy
+ [ bd] set file to 1
+ [ bf] extended opcode 144: set inlined context 10, function name foo (0x0)
+ [ c4] advance line by constant 2 to 8
+ [ c6] copy
+ [ c7] advance line by constant 1 to 9
+ [ c9] advance address by 64 to 0x220 <kernel+0x220>
+ [ cc] copy
+ [ cd] set file to 2
+ [ cf] extended opcode 144: set inlined context 9, function name bar (0x4)
+ [ d4] advance line by constant -2 to 7
+ [ d6] advance address by 144 to 0x2b0 <kernel+0x2b0>
+ [ d9] copy
+ [ da] advance line by constant 1 to 8
+ [ dc] advance address by 64 to 0x2f0 <kernel+0x2f0>
+ [ df] copy
+ [ e0] set file to 1
+ [ e2] extended opcode 144: set inlined context 14, function name _Z1aPiS_S_ (0x8)
+ [ e7] advance line by constant 10 to 18
+ [ e9] copy
+ [ ea] advance line by constant 1 to 19
+ [ ec] advance address by 64 to 0x330 <kernel+0x330>
+ [ ef] copy
+ [ f0] extended opcode 144: set inlined context 0, function name foo (0x0)
+ [ f5] advance line by constant 14 to 33
+ [ f7] advance address by 144 to 0x3c0 <kernel+0x3c0>
+ [ fa] copy
+ [ fb] advance address by 192 to 0x480
+ [ fe] extended opcode 1: end of sequence
+EOF