aboutsummaryrefslogtreecommitdiff
path: root/src/pdb/namesStream.odin
blob: 9ff61f432096b8cb0626135c80e48b8f2bc05a93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//! the pdb string name table. reference: https://github.com/willglynn/pdb/blob/master/src/strings.rs
package pdb
import "core:log"

NamesStreamHeader :: struct #packed {
    magic       : u32le, // == NamesStream_HeaderMagic
    hashVersion : NamesStreamHashVersion,
    size        : u32le, // size of all names in bytes
}
NamesStreamHashVersion :: enum u32le {LongHash = 1, LongHashV2 = 2,}
NamesStream_HeaderMagic :u32le: 0xeffe_effe
NamesStream_StartOffset :: size_of(NamesStreamHeader)

parse_names_stream :: proc(this: ^BlocksReader) -> (header: NamesStreamHeader) {
    header = readv(this, NamesStreamHeader)
    if header.magic != NamesStream_HeaderMagic {
        log.warnf("Unrecognized magic 0x%x for pdbNaming table..", header.magic)
    }
    if NamesStream_StartOffset + uint(header.size) > this.size {
        log.warnf("data buffer not big enough, should be %v but was %v", NamesStream_StartOffset + uint(header.size), this.size)
    }
    return
}

// TODO: reverse has stuff