Daniel Jacobowitz wrote: . . . . . . >> + char *subfile_name; >> + if (IS_ABSOLUTE_PATH(name) && !IS_ABSOLUTE_PATH (subfile->name)) >> + { >> + subfile_name = concat (dirname, SLASH_STRING, >> + subfile->name, (char *)NULL); >> > > Isn't that the wrong DIRNAME? That's supposed to be a prefix to NAME, > but SUBFILE might be in a different directory. You need > subfile->dirname (if it's not NULL). > > As for the patch, watch out for your formatting. Spaces around > parentheses and you don't need braces around a single statement. > Also, creating a cleanup in a function that doesn't call do_cleanups > is bad. It would be better to free it immediately when we're done > with it I didn't manage to create a test case when "subfile->dirname" is different from "dirname". But, I think your comment is correct. I followed all your suggestions and attached new patch. Thanks for looking into this. 2007-04-10 Maxim Grigoriev * buildsym.c (start_subfile): Add handling missing case while building symbol table for a compilation unit.