47#include "wine/mscvpdb.h"
75 const char* coff_strtab)
77 static char namebuff[9];
80 if (coff_sym->
N.
Name.Short)
84 nampnt = &namebuff[0];
88 nampnt = coff_strtab + coff_sym->
N.
Name.Long;
91 if (nampnt[0] ==
'_') nampnt++;
102 if (coff_files->
files)
116 file->startaddr = 0xffffffff;
120 file->linetab_offset = -1;
125 return coff_files->
nfiles++;
154 const char* coff_strtab;
158 int curr_file_idx = -1;
169 TRACE(
"Processing COFF symbols...\n");
187 coff_sym = coff_symbols +
i;
193 (
const char*)(coff_sym + 1));
194 TRACE(
"New file %s\n", (
const char*)(coff_sym + 1));
199 if (curr_file_idx < 0)
203 TRACE(
"New file <none>\n");
217 if (coff_files.
files[curr_file_idx].linetab_offset != -1)
225 coff_files.
files[curr_file_idx].compiland->source);
227 TRACE(
"Duplicating sect from %s: %x %x %x %d %d\n",
228 fn,
aux->Section.Length,
229 aux->Section.NumberOfRelocations,
230 aux->Section.NumberOfLinenumbers,
231 aux->Section.Number,
aux->Section.Selection);
232 TRACE(
"More sect %d %s %08x %d %d %d\n",
246 TRACE(
"New text sect from %s: %x %x %x %d %d\n",
249 aux->Section.NumberOfRelocations,
250 aux->Section.NumberOfLinenumbers,
251 aux->Section.Number,
aux->Section.Selection);
254 if (coff_files.
files[curr_file_idx].startaddr > coff_sym->
Value)
256 coff_files.
files[curr_file_idx].startaddr = coff_sym->
Value;
259 if (coff_files.
files[curr_file_idx].endaddr < coff_sym->
Value +
aux->Section.Length)
261 coff_files.
files[curr_file_idx].endaddr = coff_sym->
Value +
aux->Section.Length;
264 coff_files.
files[curr_file_idx].linetab_offset = linetab_indx;
265 coff_files.
files[curr_file_idx].linecnt =
aux->Section.NumberOfLinenumbers;
266 linetab_indx +=
aux->Section.NumberOfLinenumbers;
282 TRACE(
"\tAdding static symbol %s\n", nampnt);
287 coff_files.
files[curr_file_idx].compiland,
305 TRACE(
"\tAdding global symbol %s (sect=%s)\n",
316 compiland = coff_files.
files[
j].compiland;
352 TRACE(
"\tAdding global data symbol %s\n", nampnt);
375 TRACE(
"Skipping unknown entry '%s' %d %d %d\n",
409 if (coff_files.
files[
j].neps != 0)
411 for (
k = 0;
k < coff_files.
files[
j].linecnt;
k++)
413 linepnt = coff_linetab + coff_files.
files[
j].linetab_offset +
k;
418 for (;
l+1 < coff_files.
files[
j].neps;
l++)
432 coff_files.
files[
j].compiland->source,
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static int coff_add_file(struct CoffFileSet *coff_files, struct module *module, const char *filename)
static void coff_add_symbol(struct CoffFile *coff_file, struct symt *sym)
DECLSPEC_HIDDEN BOOL coff_process_info(const struct msc_debug_info *msc_dbg)
static const char * coff_get_name(const IMAGE_SYMBOL *coff_sym, const char *coff_strtab)
struct symt_function * symt_new_function(struct module *module, struct symt_compiland *parent, const char *name, ULONG_PTR addr, ULONG_PTR size, struct symt *type) DECLSPEC_HIDDEN
int __cdecl symt_cmp_addr(const void *p1, const void *p2) DECLSPEC_HIDDEN
unsigned source_new(struct module *module, const char *basedir, const char *source) DECLSPEC_HIDDEN
struct symt_data * symt_new_global_variable(struct module *module, struct symt_compiland *parent, const char *name, unsigned is_static, struct location loc, ULONG_PTR size, struct symt *type) DECLSPEC_HIDDEN
BOOL symt_get_address(const struct symt *type, ULONG64 *addr) DECLSPEC_HIDDEN
struct symt_compiland * symt_new_compiland(struct module *module, ULONG_PTR address, unsigned src_idx) DECLSPEC_HIDDEN
const char * source_get(const struct module *module, unsigned idx) DECLSPEC_HIDDEN
void symt_add_func_line(struct module *module, struct symt_function *func, unsigned source_idx, int line_num, ULONG_PTR offset) DECLSPEC_HIDDEN
#define IMAGE_SYM_CLASS_EXTERNAL
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
#define HeapFree(x, y, z)
#define IMAGE_SYM_CLASS_FILE
GLenum const GLvoid * addr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define memcpy(s1, s2, n)
void __cdecl qsort(_Inout_updates_bytes_(_NumOfElements *_SizeOfElements) void *_Base, _In_ size_t _NumOfElements, _In_ size_t _SizeOfElements, _In_ int(__cdecl *_PtFuncCompare)(const void *, const void *))
struct symt_compiland * compiland
union _IMAGE_LINENUMBER::@4187 Type
union _IMAGE_SYMBOL::@2295 N
struct _IMAGE_SYMBOL::@2295::@2296 Name
const IMAGE_SECTION_HEADER * sectp
static GLenum _GLUfuncptr fn
#define IMAGE_SIZEOF_SYMBOL
#define IMAGE_SIZEOF_LINENUMBER
#define IMAGE_SYM_CLASS_STATIC