mirror of https://github.com/yasm/yasm.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.4 KiB
94 lines
3.4 KiB
CV8 structures (for x86 and AMD64) - used by MSVC 8 (2005) |
|
Everything listed in the order MASM seems to output it in. |
|
|
|
.debug$S: symbol and line number information |
|
4 bytes - version (4) |
|
|
|
Each major portion of DEBUG$S starts with 4 byte type, 4 byte length |
|
(in bytes following the length field). Each set is 4-byte aligned with 0s at |
|
the end (not included in length). |
|
|
|
0x000000F3: source filename string table |
|
1 byte - 0 (0th filename) |
|
0-terminated filename strings, 1 for each source file |
|
|
|
0x000000F4: source file info |
|
for each source file: |
|
4 bytes - offset of filename in source filename string table |
|
{2 bytes - checksum type/length? (0x0110) |
|
16 bytes - MD5 checksum of source file} OR |
|
{2 bytes - no checksum (0)} |
|
2 bytes - 0 (padding?) |
|
|
|
0x000000F2: line numbers for section |
|
4 bytes - start offset in section (SECREL to section start) |
|
2 bytes - section index (SECTION to section start) |
|
2 bytes - pad/align (0) |
|
4 bytes - section length covered by line number info |
|
4 bytes - offset of source file in source file info table |
|
4 bytes - number of line number pairs |
|
4 bytes - number of bytes of line number pairs + 12 |
|
|
|
followed by pairs of: |
|
4 bytes - offset in section |
|
4 bytes - line number; if high bit is set, |
|
end of statement/breakpointable (?) - e.g. lines containing |
|
just labels should have line numbers |
|
|
|
0x000000F1: symbol information |
|
enclosed data per below |
|
(each element starts with 2 byte length, 2 byte type) |
|
basically slightly updated versions of CV5 symbol info with 0-terminated |
|
rather than length-prefixed strings |
|
|
|
0x1101 : Name of object file |
|
4 byte signature (0 for asm) |
|
0-terminated object filename |
|
0x1116 : creator signature (compile flag) |
|
4 bytes - language (3=Masm) |
|
4 bytes - target processor (0xD0 = AMD64) |
|
4 bytes - flags |
|
4 bytes - version |
|
2 bytes - ? |
|
0-terminated string containing creator name |
|
pairs of 0-terminated strings - keys/values |
|
from CL: |
|
cwd - current working directory |
|
cl - full path of compiler executable |
|
cmd - full args (one long string, double-quoted args if needed) |
|
src - relative path to source (from cwd) |
|
pdb - full path to pdb file |
|
ML doesn't output any pairs |
|
pairs list terminated with two empty strings |
|
0x1105 : Code Label 16:32/64 |
|
4 bytes SECREL of symbol |
|
2 bytes SECTION of symbol |
|
1 byte - flags |
|
0-terminated string containing symbol name |
|
0x110C : local data 16:32/64 |
|
4 bytes type index of symbol |
|
4 bytes SECREL of symbol |
|
2 bytes SECTION of symbol |
|
0-terminated string containing symbol name |
|
0x110D : global data 16:32/64 |
|
4 bytes type index of symbol |
|
4 bytes SECREL of symbol |
|
2 bytes SECTION of symbol |
|
0-terminated string containing symbol name |
|
0x1110 : local/global (?) procedure start 16:32/64 |
|
4 bytes - parent |
|
4 bytes - pend |
|
4 bytes - pnext |
|
4 bytes - procedure length (bytes) |
|
4 bytes - debug start (offset from procedure start to frame setup) |
|
4 bytes - debug end (offset from procedure start to frame cleanup) |
|
4 bytes - type index of procedure type |
|
4 bytes - offset of procedure (SECREL of symbol) |
|
2 bytes - segment of procedure (SECTION of symbol) |
|
1 byte - flags |
|
0-terminated string containing procedure name |
|
|
|
.debug$T: type information |
|
4 bytes - version (4) |
|
followed by type information per CV5 spec, padded to 4-byte boundaries |
|
|
|
|