Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

EDG Source File Map

This page is the definitive reference table mapping all 52 .c source files and 13 .h header files from EDG 6.6 to their binary addresses in the cudafe++ CUDA 13.0 build. Every column is derived from the .rodata string cross-reference database and verified against the 20 sweep reports (P1.01 through P1.20).

For narrative discussion of these files and their roles in the compilation pipeline, see the Function Map and EDG Overview pages.

Build Path

All source files share the build prefix:

/dvs/p4/build/sw/rel/gpgpu/toolkit/r13.0/compiler/drivers/compiler/edg/EDG_6.6/src/

Coverage Summary

MetricCount
.c files with mapped functions52
.h files with mapped functions13
Total source files65
Functions mapped via .c paths2,129
Functions mapped via .h paths only80
Total mapped functions2,209
Unmapped functions in EDG region (0x403300--0x7E0000)~2,896
C++ runtime / demangler (0x7E0000--0x829722)~1,085
PLT stubs + init (0x402A18--0x403300)~283
Total functions in binary~6,483
Mapping coverage34.1%

The 34% mapping rate reflects the fact that only functions containing EDG internal_error assertions reference __FILE__ strings. Functions below the assertion threshold, display-only code compiled without assertions, inlined leaf functions, and the statically-linked C++ runtime are all invisible to this technique.

Column Definitions

ColumnMeaning
#Row number, ordered by main body start address
Source FileFilename from the EDG source tree
OriginEDG = standard Edison Design Group code; NVIDIA = NVIDIA-authored
Total FuncsUnique functions referencing this file's __FILE__ string (stubs + main)
StubsAssert wrapper functions in 0x403300--0x408B40
Main FuncsFunctions in the main body region (after 0x409350)
Main Body StartLowest xref address outside the stub region
Main Body EndHighest xref address outside the stub region
Code SizeMain Body End - Main Body Start in bytes; approximate (includes interleaved .h inlines and alignment padding)

Source File Table -- 52 .c Files

Sorted by main body start address. This ordering reflects the binary layout, which is near-alphabetical with two exceptions noted below.

#Source FileOriginTotal FuncsStubsMain FuncsMain Body StartMain Body EndCode Size
1attribute.cEDG17771700x4093500x418F8064,560
2class_decl.cEDG27392640x4192800x447930190,160
3cmd_line.cEDG441430x44B2500x45963058,336
4const_ints.cEDG4130x461C200x4659A015,744
5cp_gen_be.cEDG226252010x466F900x489000139,376
6debug.cEDG2020x48A1B00x48A1B0<1 KB
7decl_inits.cEDG19641920x48B3F00x4A154090,448
8decl_spec.cEDG883850x4A1BF00x4B37F072,704
9declarator.cEDG640640x4B39700x4C00A050,480
10decls.cEDG20752020x4C09100x4E8C40164,656
11disambig.cEDG5140x4E9E700x4EC69010,272
12error.cEDG511500x4EDCD00x4F8F8045,744
13expr.cEDG538105280x4F98700x5565E0380,528
14exprutil.cEDG299132860x5587200x583540175,648
15extasm.cEDG7070x584CA00x5858502,992
16fe_init.cEDG6150x585B100x5863A02,192
17fe_wrapup.cEDG2020x588D400x588F90592
18float_pt.cEDG790790x5895500x59415044,032
19folding.cEDG13991300x594B300x5A4FD066,464
20func_def.cEDG561550x5A51B00x5AAB8022,992
21host_envir.cEDG192170x5AD5400x5B1E7018,736
22il.cEDG358163420x5B28F00x5DFAD0184,800
23il_alloc.cEDG381370x5E06000x5E830031,488
24il_to_str.cEDG831820x5F7FD00x6039E047,632
25il_walk.cEDG271260x603FE00x620190115,120
26interpret.cEDG21652110x620CE00x65DE10250,160
27layout.cEDG212190x65EA500x665A6028,688
28lexical.cEDG14051350x6667200x689130141,328
29literals.cEDG210210x68ACC00x68F2B017,904
30lookup.cEDG712690x68FAB00x69BE8050,128
31lower_name.cEDG179111680x69C9800x6AB28059,648
32macro.cEDG431420x6AB6E00x6B5C1042,288
33mem_manage.cEDG9270x6B6DD00x6BA23013,408
34nv_transforms.cNVIDIA1010x6BE3000x6BE300~22 KB1
35overload.cEDG28432810x6BE4A00x6EF7A0201,472
36pch.cEDG233200x6F27900x6F5DA013,840
37pragma.cEDG280280x6F61B00x6F83208,560
38preproc.cEDG100100x6F9B000x6FC94011,840
39scope_stk.cEDG18661800x6FE1600x7106B075,600
40src_seq.cEDG571560x710F100x71872030,736
41statements.cEDG831820x7193000x726A5055,120
42symbol_ref.cEDG422400x726F200x72CEA024,448
43symbol_tbl.cEDG17581670x72D9500x74B8D0122,688
44sys_predef.cEDG351340x74C6900x75147019,936
45target.cEDG110110x7525F00x752DF02,048
46templates.cEDG455124430x7530C00x794D30285,808
47trans_copy.cEDG2020x796BA00x796BA0<1 KB
48trans_corresp.cEDG886820x796E600x7A342050,112
49trans_unit.cEDG100100x7A3BB00x7A46902,784
50types.cEDG885830x7A49400x7C02A0112,480
51modules.cEDG223190x7C0C600x7C25606,400
52floating.cEDG509410x7D0EB00x7D59B019,200
TOTALS5,3381985,1400x4093500x7D59B0~3.57 MB

Source File Table -- 13 .h Header Files

Header files appear in assertion strings when an inline function or macro defined in the header triggers an internal_error call. The function itself is compiled within the .c file's translation unit, but __FILE__ resolves to the header path. These functions are scattered across the binary, interleaved with the .c file that #include-d them.

#Header FileTotal FuncsStubsMain FuncsMin AddressMax AddressPrimary Host
1decls.h1010x4E08F00x4E08F0decls.c
2float_type.h630630x7D1C900x7DEB90floating.c
3il.h5230x52ABC00x6011F0expr.c, il.c, il_to_str.c
4lexical.h1010x68F2B00x68F2B0lexical.c / literals.c boundary
5mem_manage.h4040x4EDCD00x4EDCD0error.c
6modules.h5050x7C11000x7C2560modules.c
7nv_transforms.h3030x4322800x719D20class_decl.c, cp_gen_be.c, src_seq.c
8overload.h1010x6C9E400x6C9E40overload.c
9scope_stk.h4040x503D900x574DD0expr.c, exprutil.c
10symbol_tbl.h2110x7377D00x7377D0symbol_tbl.c
11types.h174130x4692600x7B05E0Many .c files (scattered type queries)
12util.h124101140x430E100x7C2B10All major .c files
13walk_entry.h510510x6041700x618660il_walk.c
TOTALS28117264

Header Distribution Patterns

The 13 headers fall into three distinct patterns:

Localized headers -- functions cluster in a single .c file's address range:

  • float_type.h (63 funcs in 52 KB at 0x7D1C90--0x7DEB90, all within floating.c)
  • walk_entry.h (51 funcs in 90 KB at 0x604170--0x618660, all within il_walk.c)
  • modules.h (5 funcs in 5 KB at 0x7C1100--0x7C2560, all within modules.c)
  • decls.h, lexical.h, overload.h, symbol_tbl.h (1--2 funcs each, single site)
  • mem_manage.h (4 funcs, single site in error.c)

Moderately scattered headers -- functions appear in 2--3 .c files:

  • il.h (5 funcs across expr.c, il.c, il_to_str.c)
  • scope_stk.h (4 funcs across expr.c, exprutil.c)
  • nv_transforms.h (3 funcs across class_decl.c, cp_gen_be.c, src_seq.c)

Pervasive headers -- functions inlined into most .c files:

  • util.h (124 xrefs spanning 0x430E10--0x7C2B10, nearly the entire EDG region)
  • types.h (17 funcs spanning 0x469260--0x7B05E0, scattered type queries)

Assert Stub Region

The region 0x403300--0x408B40 contains 198 small __noreturn functions. Each encodes a single assertion site: the source file path, line number, and enclosing function name. When the assertion condition fails, the stub calls sub_4F2930 (EDG's internal_error handler) and does not return. Every stub is 29 bytes.

Stub Distribution by Source File

Source FileStub CountSource FileStub Count
cp_gen_be.c25macro.c1
il.c16mem_manage.c2
exprutil.c13modules.c3
templates.c12overload.c3
lower_name.c11pch.c3
expr.c10preproc.c0
class_decl.c9scope_stk.c6
folding.c9src_seq.c1
floating.c9statements.c1
attribute.c7symbol_ref.c2
symbol_tbl.c8symbol_tbl.h1
trans_corresp.c6sys_predef.c1
lexical.c5target.c0
decls.c5trans_copy.c0
types.c5trans_unit.c0
decl_inits.c4types.h4
interpret.c3util.h10
decl_spec.c3il.h2
host_envir.c2debug.c0
layout.c2extasm.c0
lookup.c2fe_wrapup.c0
cmd_line.c1float_pt.c0
const_ints.c1declarator.c0
disambig.c1pragma.c0
error.c1nv_transforms.c0
fe_init.c1literals.c0
func_def.c1
il_alloc.c1
il_to_str.c1
il_walk.c1

After the stubs, addresses 0x408B40--0x409350 contain 15 C++ static constructor functions (ctor_001 through ctor_015) that initialize global tables at program startup. These have no source file attribution.

Gap Analysis -- Unmapped Regions

The following address ranges within the EDG .text region contain functions that could not be mapped to any source file via __FILE__ strings. Each gap represents functions that either lack assertions entirely, use non-EDG assertion macros, or are compiler-generated (vtable thunks, exception handlers, template instantiation artifacts).

#Gap RangeSizeBetweenProbable Content
10x408B40--0x4093502 KBstubs / attribute.cStatic constructors (ctor_001--ctor_015)
20x447930--0x44B25013 KBclass_decl.c / cmd_line.cBoundary helpers, small inlines
30x459630--0x461C2034 KBcmd_line.c / const_ints.cUnmapped option handlers, flag tables
40x4659A0--0x466F906 KBconst_ints.c / cp_gen_be.cConstant integer helpers
50x489000--0x48A1B05 KBcp_gen_be.c / debug.cBackend emission tail
60x48A1B0--0x48B3F05 KBdebug.c / decl_inits.cDebug infrastructure
70x5E8300--0x5F7FD087 KBil_alloc.c / il_to_str.cIL display routines (no assertions)
80x620190--0x620CE03 KBil_walk.c / interpret.cWalk epilogue
90x65DE10--0x65EA503 KBinterpret.c / layout.cInterpreter tail
100x665A60--0x6667203 KBlayout.c / lexical.cLayout/lexer boundary
110x689130--0x68ACC07 KBlexical.c / literals.cToken conversion helpers
120x6AB280--0x6AB6E01 KBlower_name.c / macro.cMangling helpers
130x6BA230--0x6BAE703 KBmem_manage.c / nv_transforms.cMemory infrastructure
140x6EF7A0--0x6F279012 KBoverload.c / pch.cOverload resolution tail
150x6FC940--0x6FE1606 KBpreproc.c / scope_stk.cPreprocessor tail functions
160x751470--0x7525F07 KBsys_predef.c / target.cPredefined macro infrastructure
170x7A4690--0x7A49401 KBtrans_unit.c / types.cTU helpers
180x7C2560--0x7D0EB059 KBmodules.c / floating.cType-name encoding, module helpers
190x7D59B0--0x7DEB9037 KBfloating.c tailfloat_type.h template instantiations
200x7DFFF0--0x82A000304 KBpost-EDGC++ runtime, demangler, soft-float, EH
Total unmapped~582 KB

The largest unmapped gap within EDG code proper is the IL display region at 0x5E8300--0x5F7FD0 (87 KB). These functions were compiled from il_to_str.c but contain no assertions because the display/dump subsystem was built without assertion macros -- it is purely diagnostic code that formats IL trees to stdout.

Alphabetical Layout Observation

Source files are laid out in the binary in near-alphabetical order by filename, a consequence of the build system compiling .c files in directory-listing order and the linker processing them sequentially. The sequence is strictly alphabetical from attribute.c through types.c (rows 1--50).

Two files break this pattern:

FileExpected PositionActual PositionOffset
modules.cBetween mem_manage.c and nv_transforms.c (#33--#34)After types.c (#51, at 0x7C0C60)+47 rows late
floating.cBetween float_pt.c and folding.c (#18--#19)After modules.c (#52, at 0x7D0EB0)+34 rows late

Both files appear after the main alphabetical sequence, placed at the very end of the EDG region. The most likely explanation is that modules.c and floating.c are compiled as separate translation units outside the main EDG build directory -- perhaps in a subdirectory or a secondary build target -- and are appended to the link line after the alphabetically-sorted main objects. The modules.c file implements C++20 module support (mostly stubs in the CUDA build), and floating.c implements arbitrary-precision IEEE 754 arithmetic -- both are semi-independent subsystems that could plausibly be compiled separately.

Note that floating.c is followed immediately by its private header float_type.h (63 template instantiations at 0x7D1C90--0x7DEB90), confirming they share a compilation unit.

Binary Region Map

0x402A18 +--------------------------+
         | PLT stubs / init (283)   |  3 KB
0x403300 +--------------------------+
         | Assert stubs (198)       |  22 KB
0x408B40 +--------------------------+
         | Constructors (15)        |  2 KB
0x409350 +--------------------------+
         | attribute.c              |  65 KB
0x419280 | class_decl.c             | 190 KB
         | cmd_line.c               |  58 KB
         | const_ints.c             |  16 KB
         | cp_gen_be.c              | 139 KB
         | debug.c                  |  <1 KB
         | decl_inits.c             |  90 KB
         | decl_spec.c              |  73 KB
         | declarator.c             |  50 KB
         | decls.c                  | 165 KB
         | disambig.c               |  10 KB
         | error.c                  |  46 KB
         | expr.c                   | 381 KB
         | exprutil.c               | 176 KB
         | extasm.c                 |   3 KB
         | fe_init.c                |   2 KB
         | fe_wrapup.c              |  <1 KB
         | float_pt.c               |  44 KB
         | folding.c                |  66 KB
         | func_def.c               |  23 KB
         | host_envir.c             |  19 KB
         | il.c                     | 185 KB
         | il_alloc.c               |  31 KB
         | [il display gap]         |  87 KB  (unmapped)
         | il_to_str.c              |  48 KB
         | il_walk.c                | 115 KB
         | interpret.c              | 250 KB
         | layout.c                 |  29 KB
         | lexical.c                | 141 KB
         | literals.c               |  18 KB
         | lookup.c                 |  50 KB
         | lower_name.c             |  60 KB
         | macro.c                  |  42 KB
         | mem_manage.c             |  13 KB
         | nv_transforms.c          |  22 KB
         | overload.c               | 201 KB
         | pch.c                    |  14 KB
         | pragma.c                 |   9 KB
         | preproc.c                |  12 KB
         | scope_stk.c              |  76 KB
         | src_seq.c                |  31 KB
         | statements.c             |  55 KB
         | symbol_ref.c             |  24 KB
         | symbol_tbl.c             | 123 KB
         | sys_predef.c             |  20 KB
         | target.c                 |   2 KB
         | templates.c              | 286 KB
         | trans_copy.c             |  <1 KB
         | trans_corresp.c          |  50 KB
         | trans_unit.c             |   3 KB
         | types.c                  | 112 KB
         |  --- alphabetical break ---
         | modules.c                |   6 KB
         |  --- gap (59 KB) ---
0x7D0EB0 | floating.c               |  19 KB
         | float_type.h inlines     |  52 KB
0x7DFFF0 +--------------------------+
         | C++ runtime / demangler  | 304 KB
0x82A000 +--------------------------+

Reproduction

To regenerate the source file list from the strings database:

jq '[.[] | select(.value | test("/dvs/p4/.*\\.[ch]$")) |
  {file: (.value | split("/") | last),
   xrefs: (.xrefs | length)}
] | group_by(.file) |
  map({file: .[0].file,
       total_xrefs: (map(.xrefs) | add)}) |
  sort_by(.file)' cudafe++_strings.json

To extract address ranges per file:

import json
from collections import defaultdict

with open('cudafe++_strings.json') as f:
    data = json.load(f)

files = defaultdict(list)
for entry in data:
    val = entry.get('value', '')
    if '/dvs/p4/' not in val:
        continue
    if not (val.endswith('.c') or val.endswith('.h')):
        continue
    fname = val.split('/')[-1]
    for xref in entry.get('xrefs', []):
        files[fname].append(int(xref['from'], 16))

for fname in sorted(files):
    addrs = sorted(files[fname])
    print(f"{fname:25s}  {hex(addrs[0]):>12s} - {hex(addrs[-1]):>12s}"
          f"  ({len(addrs)} xrefs)")

  1. nv_transforms.c has only 1 function with an EDG-style __FILE__ reference, but sweep analysis confirms ~40 functions in the 0x6BAE70--0x6BE4A0 region (~22 KB). Most use NVIDIA's own assertion macros instead of EDG's internal_error path.