Commit 3088ba32 authored by Robert Shearman's avatar Robert Shearman Committed by Alexandre Julliard

Store the current source directory and use it when encountering a

relative include so that the full path to it is stored instead.
parent 383de6ef
...@@ -1086,6 +1086,7 @@ SYM_TYPE stabs_parse(struct module* module, const char* addr, ...@@ -1086,6 +1086,7 @@ SYM_TYPE stabs_parse(struct module* module, const char* addr,
struct symt_block* block = NULL; struct symt_block* block = NULL;
struct symt_compiland* compiland = NULL; struct symt_compiland* compiland = NULL;
char currpath[PATH_MAX]; char currpath[PATH_MAX];
char srcpath[PATH_MAX];
int i, j; int i, j;
int nstab; int nstab;
const char* ptr; const char* ptr;
...@@ -1108,6 +1109,7 @@ SYM_TYPE stabs_parse(struct module* module, const char* addr, ...@@ -1108,6 +1109,7 @@ SYM_TYPE stabs_parse(struct module* module, const char* addr,
strs = (const char*)(addr + strtaboff); strs = (const char*)(addr + strtaboff);
memset(currpath, 0, sizeof(currpath)); memset(currpath, 0, sizeof(currpath));
memset(srcpath, 0, sizeof(srcpath));
memset(stabs_basic, 0, sizeof(stabs_basic)); memset(stabs_basic, 0, sizeof(stabs_basic));
/* /*
...@@ -1385,17 +1387,30 @@ SYM_TYPE stabs_parse(struct module* module, const char* addr, ...@@ -1385,17 +1387,30 @@ SYM_TYPE stabs_parse(struct module* module, const char* addr,
} }
else else
{ {
stabs_reset_includes();
if (*ptr != '/') if (*ptr != '/')
{
strcpy(currpath, srcpath);
strcat(currpath, ptr); strcat(currpath, ptr);
compiland = symt_new_compiland(module, currpath);
source_idx = source_new(module, currpath);
}
else else
strcpy(currpath, ptr); {
stabs_reset_includes(); strcpy(srcpath, ptr);
compiland = symt_new_compiland(module, currpath); compiland = symt_new_compiland(module, srcpath);
source_idx = source_new(module, currpath); source_idx = source_new(module, srcpath);
}
} }
break; break;
case N_SOL: case N_SOL:
strcpy(currpath, ptr); if (*ptr != '/')
{
strcpy(currpath, srcpath);
strcat(currpath, ptr);
}
else
strcpy(currpath, ptr);
source_idx = source_new(module, currpath); source_idx = source_new(module, currpath);
break; break;
case N_UNDF: case N_UNDF:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment