PDT HOME PREVIOUS NEXT

PDT Application:
Source-to-Source Translation in TAU

Step 2: The IL Analyzer processes the IL file, and produces a program database (PDB) file

The PDB file:

  • Provides the interface of the original source code
  • Consists of items describing functions and classes
  • Includes information on template instantiations, as well as other types, templates, namespaces, and macros

For example, routine ro#12, quicksort():

  • Is defined in source file so#18, klargest.cpp
  • Has signature ty#549, void (int *, int, int)
  • Calls ro#10, interchange(), and itself


PDB File
< PDB 1.0 >

so#15 /usr/include/stdlib.h

so#17 decl.h

so#18 klargest.cpp
sinc so#15
sinc so#17

ro#4 sort_5elements
rloc so#18 237 6
rsig ty#551
rlink C++
rstore NA
rvirt no
rcall ro#12 no so#18 239 3 
rpos so#18 237 1 so#18 237 29
     so#18 238 1 so#18 241 1 

ro#8 select_kth_largest
rloc so#18 31 5
rsig ty#546
rlink C++
rstore NA
rvirt no
rcall ro#2 no so#18 57 12 
rcall ro#3 no so#18 70 9 
rcall ro#4 no so#18 74 5 
rcall ro#5 no so#18 81 16 
rcall ro#5 no so#18 82 16 
rcall ro#6 no so#18 85 5 
rcall ro#7 no so#18 86 5 
rcall ro#3 no so#18 90 26 
rcall ro#8 no so#18 90 7 
rcall ro#9 no so#18 108 5 
rcall ro#8 no so#18 109 12 
rcall ro#9 no so#18 110 5 
rcall ro#9 no so#18 119 7 
rcall ro#9 no so#18 120 7 
rcall ro#9 no so#18 127 7 
rcall ro#8 no so#18 128 14 
rcall ro#9 no so#18 129 7 
rpos so#18 31 1 so#18 31 44
     so#18 32 1 so#18 133 1


ro#10 interchange
rloc so#18 142 6
rsig ty#547
rlink C++
rstore NA
rvirt no
rpos so#18 142 1 so#18 142 32
     so#18 143 1 so#18 149 1 

ro#12 quicksort
rloc so#18 189 6
rsig ty#549
rlink C++
rstore NA
rvirt no
rcall ro#10 no so#18 223 9 
rcall ro#10 no so#18 225 5 
rcall ro#12 no so#18 226 5 
rcall ro#12 no so#18 227 5 
rpos so#18 189 1 so#18 189 38
     so#18 190 1 so#18 229 1 

ty#546 int (int, int *, int)
ykind func
yrett ty#1
yargt ty#1
yargt ty#3
yargt ty#1

ty#547 void (int *, int *)
ykind func
yrett ty#7
yargt ty#3
yargt ty#3

ty#551 void (int *)
ykind func
yrett ty#7
yargt ty#3

ty#549 void (int *, int, int)
ykind func
yrett ty#7
yargt ty#3
yargt ty#1