1da0c48c4Sopenharmony_ci# Copyright (C) 2011 Red Hat, Inc. 2da0c48c4Sopenharmony_ci# This file is part of elfutils. 3da0c48c4Sopenharmony_ci# 4da0c48c4Sopenharmony_ci# This file is free software; you can redistribute it and/or modify 5da0c48c4Sopenharmony_ci# it under the terms of the GNU General Public License as published by 6da0c48c4Sopenharmony_ci# the Free Software Foundation; either version 3 of the License, or 7da0c48c4Sopenharmony_ci# (at your option) any later version. 8da0c48c4Sopenharmony_ci# 9da0c48c4Sopenharmony_ci# elfutils is distributed in the hope that it will be useful, but 10da0c48c4Sopenharmony_ci# WITHOUT ANY WARRANTY; without even the implied warranty of 11da0c48c4Sopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12da0c48c4Sopenharmony_ci# GNU General Public License for more details. 13da0c48c4Sopenharmony_ci# 14da0c48c4Sopenharmony_ci# You should have received a copy of the GNU General Public License 15da0c48c4Sopenharmony_ci# along with this program. If not, see <http://www.gnu.org/licenses/>. 16da0c48c4Sopenharmony_ci 17da0c48c4Sopenharmony_ci. $srcdir/test-subr.sh 18da0c48c4Sopenharmony_ci 19da0c48c4Sopenharmony_ci# NOTE: 20da0c48c4Sopenharmony_ci# the file testfile_nvidia_linemap is a CUDA binary for an NVIDIA A100 generated as follows using CUDA 11.2 21da0c48c4Sopenharmony_ci# nvcc -o main main.cu -Xcompiler "-g -fopenmp" -O3 -lineinfo -arch sm_80 -lcudart -lcuda -lstdc++ -lm 22da0c48c4Sopenharmony_ci# cuobjdump -xelf all main 23da0c48c4Sopenharmony_ci# mv main.sm_80.cubin testfile_nvidia_linemap 24da0c48c4Sopenharmony_ci 25da0c48c4Sopenharmony_citestfiles testfile_nvidia_linemap 26da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=line testfile_nvidia_linemap << EOF 27da0c48c4Sopenharmony_ci 28da0c48c4Sopenharmony_ciDWARF section [ 5] '.debug_line' at offset 0x3e0: 29da0c48c4Sopenharmony_ci 30da0c48c4Sopenharmony_ciTable at offset 0: 31da0c48c4Sopenharmony_ci 32da0c48c4Sopenharmony_ci Length: 253 33da0c48c4Sopenharmony_ci DWARF version: 2 34da0c48c4Sopenharmony_ci Prologue length: 111 35da0c48c4Sopenharmony_ci Address size: 8 36da0c48c4Sopenharmony_ci Segment selector size: 0 37da0c48c4Sopenharmony_ci Min instruction length: 1 38da0c48c4Sopenharmony_ci Max operations per instruction: 1 39da0c48c4Sopenharmony_ci Initial value if 'is_stmt': 1 40da0c48c4Sopenharmony_ci Line base: -5 41da0c48c4Sopenharmony_ci Line range: 14 42da0c48c4Sopenharmony_ci Opcode base: 10 43da0c48c4Sopenharmony_ci 44da0c48c4Sopenharmony_ciOpcodes: 45da0c48c4Sopenharmony_ci [1] 0 arguments 46da0c48c4Sopenharmony_ci [2] 1 argument 47da0c48c4Sopenharmony_ci [3] 1 argument 48da0c48c4Sopenharmony_ci [4] 1 argument 49da0c48c4Sopenharmony_ci [5] 1 argument 50da0c48c4Sopenharmony_ci [6] 0 arguments 51da0c48c4Sopenharmony_ci [7] 0 arguments 52da0c48c4Sopenharmony_ci [8] 0 arguments 53da0c48c4Sopenharmony_ci [9] 1 argument 54da0c48c4Sopenharmony_ci 55da0c48c4Sopenharmony_ciDirectory table: 56da0c48c4Sopenharmony_ci /home/johnmc/hpctoolkit-gpu-samples/nvidia_extended_linemap4 57da0c48c4Sopenharmony_ci 58da0c48c4Sopenharmony_ciFile name table: 59da0c48c4Sopenharmony_ci Entry Dir Time Size Name 60da0c48c4Sopenharmony_ci 1 1 1626104146 1819 main.cu 61da0c48c4Sopenharmony_ci 2 1 1626104111 211 bar.h 62da0c48c4Sopenharmony_ci 63da0c48c4Sopenharmony_ciLine number statements: 64da0c48c4Sopenharmony_ci [ 79] extended opcode 2: set address to 0 <kernel> 65da0c48c4Sopenharmony_ci [ 84] set file to 1 66da0c48c4Sopenharmony_ci [ 86] advance line by constant 24 to 25 67da0c48c4Sopenharmony_ci [ 88] copy 68da0c48c4Sopenharmony_ci [ 89] special opcode 240: address+16 = 0x10 <kernel+0x10>, line+1 = 26 69da0c48c4Sopenharmony_ci [ 8a] advance line by constant 1 to 27 70da0c48c4Sopenharmony_ci [ 8c] advance address by 48 to 0x40 <kernel+0x40> 71da0c48c4Sopenharmony_ci [ 8e] copy 72da0c48c4Sopenharmony_ci [ 8f] advance line by constant -2 to 25 73da0c48c4Sopenharmony_ci [ 91] advance address by 80 to 0x90 <kernel+0x90> 74da0c48c4Sopenharmony_ci [ 94] copy 75da0c48c4Sopenharmony_ci [ 95] special opcode 242: address+16 = 0xa0 <kernel+0xa0>, line+3 = 28 76da0c48c4Sopenharmony_ci [ 96] advance address by 96 to 0x100 <kernel+0x100> 77da0c48c4Sopenharmony_ci [ 99] copy 78da0c48c4Sopenharmony_ci [ 9a] extended opcode 144: set inlined context 6, function name foo (0x0) 79da0c48c4Sopenharmony_ci [ 9f] advance line by constant -20 to 8 80da0c48c4Sopenharmony_ci [ a1] copy 81da0c48c4Sopenharmony_ci [ a2] advance line by constant 1 to 9 82da0c48c4Sopenharmony_ci [ a4] advance address by 80 to 0x150 <kernel+0x150> 83da0c48c4Sopenharmony_ci [ a7] copy 84da0c48c4Sopenharmony_ci [ a8] extended opcode 144: set inlined context 0, function name foo (0x0) 85da0c48c4Sopenharmony_ci [ ad] advance line by constant 22 to 31 86da0c48c4Sopenharmony_ci [ af] advance address by 144 to 0x1e0 <kernel+0x1e0> 87da0c48c4Sopenharmony_ci [ b2] copy 88da0c48c4Sopenharmony_ci [ b3] set file to 2 89da0c48c4Sopenharmony_ci [ b5] extended opcode 144: set inlined context 9, function name bar (0x4) 90da0c48c4Sopenharmony_ci [ ba] advance line by constant -25 to 6 91da0c48c4Sopenharmony_ci [ bc] copy 92da0c48c4Sopenharmony_ci [ bd] set file to 1 93da0c48c4Sopenharmony_ci [ bf] extended opcode 144: set inlined context 10, function name foo (0x0) 94da0c48c4Sopenharmony_ci [ c4] advance line by constant 2 to 8 95da0c48c4Sopenharmony_ci [ c6] copy 96da0c48c4Sopenharmony_ci [ c7] advance line by constant 1 to 9 97da0c48c4Sopenharmony_ci [ c9] advance address by 64 to 0x220 <kernel+0x220> 98da0c48c4Sopenharmony_ci [ cc] copy 99da0c48c4Sopenharmony_ci [ cd] set file to 2 100da0c48c4Sopenharmony_ci [ cf] extended opcode 144: set inlined context 9, function name bar (0x4) 101da0c48c4Sopenharmony_ci [ d4] advance line by constant -2 to 7 102da0c48c4Sopenharmony_ci [ d6] advance address by 144 to 0x2b0 <kernel+0x2b0> 103da0c48c4Sopenharmony_ci [ d9] copy 104da0c48c4Sopenharmony_ci [ da] advance line by constant 1 to 8 105da0c48c4Sopenharmony_ci [ dc] advance address by 64 to 0x2f0 <kernel+0x2f0> 106da0c48c4Sopenharmony_ci [ df] copy 107da0c48c4Sopenharmony_ci [ e0] set file to 1 108da0c48c4Sopenharmony_ci [ e2] extended opcode 144: set inlined context 14, function name _Z1aPiS_S_ (0x8) 109da0c48c4Sopenharmony_ci [ e7] advance line by constant 10 to 18 110da0c48c4Sopenharmony_ci [ e9] copy 111da0c48c4Sopenharmony_ci [ ea] advance line by constant 1 to 19 112da0c48c4Sopenharmony_ci [ ec] advance address by 64 to 0x330 <kernel+0x330> 113da0c48c4Sopenharmony_ci [ ef] copy 114da0c48c4Sopenharmony_ci [ f0] extended opcode 144: set inlined context 0, function name foo (0x0) 115da0c48c4Sopenharmony_ci [ f5] advance line by constant 14 to 33 116da0c48c4Sopenharmony_ci [ f7] advance address by 144 to 0x3c0 <kernel+0x3c0> 117da0c48c4Sopenharmony_ci [ fa] copy 118da0c48c4Sopenharmony_ci [ fb] advance address by 192 to 0x480 119da0c48c4Sopenharmony_ci [ fe] extended opcode 1: end of sequence 120da0c48c4Sopenharmony_ciEOF 121