mirror of git://gcc.gnu.org/git/gcc.git
re PR debug/28047 (DWARF output_file_names should really understand DOS pathnames)
2011-02-28 Kai Tietz <kai.tietz@onevision.com> PR debug/28047 * dwarf2out.c (file_table_eq): Use filename_cmp instead of strcmp. (lookup_filename): Likewise. * final.c (remap_debug_filename): Use filename_ncmp instead of strncmp. 2011-02-28 Kai Tietz <kai.tietz@onevision.com> * filename_cmp.c (filename_ncmp): New function. * functions.texi: Regenerated. 2011-02-28 Kai Tietz <kai.tietz@onevision.com> * filenames.h (filename_ncmp): New prototype. From-SVN: r170570
This commit is contained in:
parent
80a832cd25
commit
9436925165
|
@ -1,3 +1,11 @@
|
||||||
|
2011-02-28 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
|
PR debug/28047
|
||||||
|
* dwarf2out.c (file_table_eq): Use filename_cmp instead of strcmp.
|
||||||
|
(lookup_filename): Likewise.
|
||||||
|
* final.c (remap_debug_filename): Use filename_ncmp instead of
|
||||||
|
strncmp.
|
||||||
|
|
||||||
2011-02-28 Bernd Schmidt <bernds@codesourcery.com>
|
2011-02-28 Bernd Schmidt <bernds@codesourcery.com>
|
||||||
Jakub Jelinek <jakub@redhat.com>
|
Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
|
|
@ -21560,7 +21560,7 @@ file_table_eq (const void *p1_p, const void *p2_p)
|
||||||
const struct dwarf_file_data *const p1 =
|
const struct dwarf_file_data *const p1 =
|
||||||
(const struct dwarf_file_data *) p1_p;
|
(const struct dwarf_file_data *) p1_p;
|
||||||
const char *const p2 = (const char *) p2_p;
|
const char *const p2 = (const char *) p2_p;
|
||||||
return strcmp (p1->filename, p2) == 0;
|
return filename_cmp (p1->filename, p2) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static hashval_t
|
static hashval_t
|
||||||
|
@ -21591,7 +21591,7 @@ lookup_filename (const char *file_name)
|
||||||
call matches this file name. If so, return the index. */
|
call matches this file name. If so, return the index. */
|
||||||
if (file_table_last_lookup
|
if (file_table_last_lookup
|
||||||
&& (file_name == file_table_last_lookup->filename
|
&& (file_name == file_table_last_lookup->filename
|
||||||
|| strcmp (file_table_last_lookup->filename, file_name) == 0))
|
|| filename_cmp (file_table_last_lookup->filename, file_name) == 0))
|
||||||
return file_table_last_lookup;
|
return file_table_last_lookup;
|
||||||
|
|
||||||
/* Didn't match the previous lookup, search the table. */
|
/* Didn't match the previous lookup, search the table. */
|
||||||
|
|
|
@ -1492,7 +1492,7 @@ remap_debug_filename (const char *filename)
|
||||||
size_t name_len;
|
size_t name_len;
|
||||||
|
|
||||||
for (map = debug_prefix_maps; map; map = map->next)
|
for (map = debug_prefix_maps; map; map = map->next)
|
||||||
if (strncmp (filename, map->old_prefix, map->old_len) == 0)
|
if (filename_ncmp (filename, map->old_prefix, map->old_len) == 0)
|
||||||
break;
|
break;
|
||||||
if (!map)
|
if (!map)
|
||||||
return filename;
|
return filename;
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2011-02-28 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
|
* filenames.h (filename_ncmp): New prototype.
|
||||||
|
|
||||||
2011-02-23 Kai Tietz <kai.tietz@onevision.com>
|
2011-02-23 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
* dwarf2.h (_ELF_DWARF2_H): Renamed to
|
* dwarf2.h (_ELF_DWARF2_H): Renamed to
|
||||||
|
|
|
@ -73,6 +73,9 @@ extern "C" {
|
||||||
extern int filename_cmp (const char *s1, const char *s2);
|
extern int filename_cmp (const char *s1, const char *s2);
|
||||||
#define FILENAME_CMP(s1, s2) filename_cmp(s1, s2)
|
#define FILENAME_CMP(s1, s2) filename_cmp(s1, s2)
|
||||||
|
|
||||||
|
extern int filename_ncmp (const char *s1, const char *s2,
|
||||||
|
size_t n);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-02-28 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
|
* filename_cmp.c (filename_ncmp): New function.
|
||||||
|
* functions.texi: Regenerated.
|
||||||
|
|
||||||
2011-02-03 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
2011-02-03 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||||
|
|
||||||
* splay-tree.c: Escape wrapping newlines in texinfo markup
|
* splay-tree.c: Escape wrapping newlines in texinfo markup
|
||||||
|
|
|
@ -76,3 +76,52 @@ filename_cmp (const char *s1, const char *s2)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
@deftypefn Extension int filename_ncmp (const char *@var{s1}, const char *@var{s2}, size_t @var{n})
|
||||||
|
|
||||||
|
Return zero if the two file names @var{s1} and @var{s2} are equivalent
|
||||||
|
in range @var{n}.
|
||||||
|
If not equivalent, the returned value is similar to what @code{strncmp}
|
||||||
|
would return. In other words, it returns a negative value if @var{s1}
|
||||||
|
is less than @var{s2}, or a positive value if @var{s2} is greater than
|
||||||
|
@var{s2}.
|
||||||
|
|
||||||
|
This function does not normalize file names. As a result, this function
|
||||||
|
will treat filenames that are spelled differently as different even in
|
||||||
|
the case when the two filenames point to the same underlying file.
|
||||||
|
However, it does handle the fact that on DOS-like file systems, forward
|
||||||
|
and backward slashes are equal.
|
||||||
|
|
||||||
|
@end deftypefn
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
filename_ncmp (const char *s1, const char *s2, size_t n)
|
||||||
|
{
|
||||||
|
#ifndef HAVE_DOS_BASED_FILE_SYSTEM
|
||||||
|
return strncmp(s1, s2, n);
|
||||||
|
#else
|
||||||
|
if (!n)
|
||||||
|
return 0;
|
||||||
|
for (; n > 0; --n)
|
||||||
|
{
|
||||||
|
int c1 = TOLOWER (*s1);
|
||||||
|
int c2 = TOLOWER (*s2);
|
||||||
|
|
||||||
|
/* On DOS-based file systems, the '/' and the '\' are equivalent. */
|
||||||
|
if (c1 == '/')
|
||||||
|
c1 = '\\';
|
||||||
|
if (c2 == '/')
|
||||||
|
c2 = '\\';
|
||||||
|
|
||||||
|
if (c1 == '\0' || c1 != c2)
|
||||||
|
return (c1 - c2);
|
||||||
|
|
||||||
|
s1++;
|
||||||
|
s2++;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
|
@ -296,6 +296,24 @@ and backward slashes are equal.
|
||||||
|
|
||||||
@end deftypefn
|
@end deftypefn
|
||||||
|
|
||||||
|
@c filename_cmp.c:81
|
||||||
|
@deftypefn Extension int filename_ncmp (const char *@var{s1}, const char *@var{s2}, size_t @var{n})
|
||||||
|
|
||||||
|
Return zero if the two file names @var{s1} and @var{s2} are equivalent
|
||||||
|
in range @var{n}.
|
||||||
|
If not equivalent, the returned value is similar to what @code{strncmp}
|
||||||
|
would return. In other words, it returns a negative value if @var{s1}
|
||||||
|
is less than @var{s2}, or a positive value if @var{s2} is greater than
|
||||||
|
@var{s2}.
|
||||||
|
|
||||||
|
This function does not normalize file names. As a result, this function
|
||||||
|
will treat filenames that are spelled differently as different even in
|
||||||
|
the case when the two filenames point to the same underlying file.
|
||||||
|
However, it does handle the fact that on DOS-like file systems, forward
|
||||||
|
and backward slashes are equal.
|
||||||
|
|
||||||
|
@end deftypefn
|
||||||
|
|
||||||
@c fnmatch.txh:1
|
@c fnmatch.txh:1
|
||||||
@deftypefn Replacement int fnmatch (const char *@var{pattern}, @
|
@deftypefn Replacement int fnmatch (const char *@var{pattern}, @
|
||||||
const char *@var{string}, int @var{flags})
|
const char *@var{string}, int @var{flags})
|
||||||
|
|
Loading…
Reference in New Issue