Hello, For us who deal with mixed-platform development environment it is common to debug binaries built on a different machine, often different OS. A real-life example: development environment (sdk) is setup on a win32 machine, with headers and all. When compiled, binaries are being debugged on a linux-hosted gdb. Linux machine has the same development environment (sdk) only in different root directories. Where win32 may have C:/foo, linux will have /opt/foo, etc... To properly translate the paths it is useful to be able to tell gdb to translate such paths into new environment. Existing "substitute-path" functionality seems like the most logical choice, and the diff exploits this to add new feature - rewriting source paths at readin time. The difference can be observed if a binary built on a win32 system is loaded in gdb on linux. For example (gdb) maint info symtabs .... { symtab C:/QNX632/target/qnx6/usr/include/sys/compiler_gnu.h ((struct symtab *) 0x8390808) dirname c:/Temp/dirs/debug fullname (null) blockvector ((struct blockvector *) 0x8392f24) linetable ((struct linetable *) (nil)) debugformat unknown } { symtab ../main.c ((struct symtab *) 0x83907b0) dirname c:/Temp/dirs/debug fullname (null) blockvector ((struct blockvector *) 0x8392f24) (primary) linetable ((struct linetable *) 0x8392f9c) debugformat DWARF 2 } ... while with the patch: (gdb) set substitute-path-at-source 1 (gdb) set substitute-path C:/QNX632 /opt/qnx632 (gdb) set substitute-path c:/Temp /tmp (gdb) symbol-file /tmp/dirs/debug/main Load new symbol table from "/tmp/dirs/debug/main"? (y or n) y Reading symbols from /tmp/dirs/debug/main...done. (gdb) maint info symtabs .... { symtab /opt/qnx632/target/qnx6/usr/include/sys/compiler_gnu.h ((struct symtab *) 0x8379c10) dirname /tmp/dirs/debug fullname (null) blockvector ((struct blockvector *) 0x837c32c) linetable ((struct linetable *) (nil)) debugformat unknown } { symtab ../main.c ((struct symtab *) 0x8379bb8) dirname /tmp/dirs/debug fullname (null) blockvector ((struct blockvector *) 0x837c32c) (primary) linetable ((struct linetable *) 0x837c390) debugformat DWARF 2 } ... Thanks, Aleksandar Ristovski QNX Software Systems ChangeLog: 2008-05-13 Aleksandar Ristovski * Makefile.in (buildsym.o): Add new dependency. * buildsym.c (source.h): New include. (start_subfile): Rewrite path is substitute-path-at-source is set. * source.c (substitute_pat_at_source): New variable. (rewrite_source_path): Make external. (_initialize_source): Add new set/show variable 'substitute-path-at-source'. * source.h (rewrite_source_path substitute_pat_at_source): New declarations. * symfile.c (start_psymtab_common): Rewrite file name if substitute-path-at-source is set.