Hi ! I am used arm-elf-gdb & keil toolchain & have more problems in sets breakpoints in Eclipse IDE on Windows platform. After modify file filename_cmp.c, it's been absent (sorry for my english). Source code, written by me:
filename_cmp.c: #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_STRING_H #include <string.h> #endif #include "filenames.h" #include "safe-ctype.h" #include <alloca-conf.h> /* #define LOC_DEBUG */ void correct_name(char * s, int len) { char * p = s, * plast = s; for (;;) { if (p[2] == '\\') p[2] = '/'; if (memcmp(p, "../", 3) == 0) memcpy(p, &p[3], len -= 3); else break; } for (; len > 0 ;) { if (p[0] == '\\') p[0] = '/'; if (p[0] == '/') { for (;;) { if (p[1] == '\\') p[1] = '/'; if (p[1] == '/') memcpy(&p[1], &p[2], len -= 1); else break; } if (p[3] == '\\') p[3] = '/'; if (memcmp(p, "/../", 4) == 0) { memcpy(plast, &p[3], len -= 3); p = plast; if (plast != s) plast--; while ((plast != s) && (*plast != '/')) plast--; continue; } } if (*p == '/') plast = p; else *p = TOUPPER(*p); p++; len--; } } int filename_cmp (const char *s1, const char *s2) { #ifdef LOC_DEBUG struct ui_file; extern struct ui_file *gdb_stdout; extern void fputs_filtered (const char *linebuffer, struct ui_file *stream); #endif int s1_len = strlen(s1) + 1; char * cs1 = (char *) alloca(s1_len); int s2_len = strlen(s2) + 1; char * cs2 = (char *) alloca(s2_len); memcpy(cs1, s1, s1_len); correct_name(cs1, s1_len); memcpy(cs2, s2, s2_len); correct_name(cs2, s2_len); s1_len = strlen(cs1) + 1; s2_len = strlen(cs2) + 1; if (s1_len > s2_len) memcpy(cs1, &cs1[s1_len - s2_len], s2_len); else if (s1_len < s2_len) memcpy(cs2, &cs2[s2_len - s1_len], s1_len); #ifdef LOC_DEBUG fputs_filtered ("!Check file:", gdb_stdout); fputs_filtered (cs2, gdb_stdout); fputs_filtered (": compare :", gdb_stdout); fputs_filtered (cs1, gdb_stdout); fputs_filtered (":\n", gdb_stdout); #endif return strcmp(cs1, cs2); }