ChangeLog libiberty/

2011-02-28  Kai Tietz  <kai.tietz@onevision.com>

	* filename_cmp.c (filename_ncmp): New function.
	* functions.texi: Regenerated.

ChangeLog include/
2011-02-28  Kai Tietz  <kai.tietz@onevision.com>

	* filenames.h (filename_ncmp): New prototype.

ChangeLog bfd/
2011-02-28  Kai Tietz  <kai.tietz@onevision.com>

	* archive.c (_bfd_find_nested_archive): Use filename_(n)cmp.
	(adjust_relative_path): Likewise.
	(_bfd_construct_extended_name_table): Likewise.
	* corefile.c (generic_core_file_matches_executable_p): Likewise.
	* elf32-bfin.c (bfinfdpic_relocate_section): Likewise.
	* elf32-frv.c (elf32_frv_relocate_section): Likewise.
	* elf32-spu.c (sort_bfds): Likewise.
	(spu_elf_auto_overlay): Likewise.
	* syms.c (_bfd_stab_section_find_nearest_line): Likewise.
	* xcofflink.c (xcoff_set_import_path): Likewise.
	* xtensa-isa.c (xtensa_regfile_lookup): Likewise.
	(xtensa_regfile_lookup_shortname): Likewise.
This commit is contained in:
Kai Tietz 2011-02-28 18:30:16 +00:00
parent 92e961922a
commit 007d618909
14 changed files with 115 additions and 21 deletions

View File

@ -1,3 +1,18 @@
2011-02-28 Kai Tietz <kai.tietz@onevision.com>
* archive.c (_bfd_find_nested_archive): Use filename_(n)cmp.
(adjust_relative_path): Likewise.
(_bfd_construct_extended_name_table): Likewise.
* corefile.c (generic_core_file_matches_executable_p): Likewise.
* elf32-bfin.c (bfinfdpic_relocate_section): Likewise.
* elf32-frv.c (elf32_frv_relocate_section): Likewise.
* elf32-spu.c (sort_bfds): Likewise.
(spu_elf_auto_overlay): Likewise.
* syms.c (_bfd_stab_section_find_nearest_line): Likewise.
* xcofflink.c (xcoff_set_import_path): Likewise.
* xtensa-isa.c (xtensa_regfile_lookup): Likewise.
(xtensa_regfile_lookup_shortname): Likewise.
2011-02-28 Alan Modra <amodra@gmail.com>
PR 12513

View File

@ -348,7 +348,7 @@ _bfd_find_nested_archive (bfd *arch_bfd, const char *filename)
abfd != NULL;
abfd = abfd->archive_next)
{
if (strcmp (filename, abfd->filename) == 0)
if (filename_cmp (filename, abfd->filename) == 0)
return abfd;
}
abfd = bfd_openr (filename, NULL);
@ -1359,7 +1359,7 @@ adjust_relative_path (const char * path, const char * ref_path)
while (*e2 && ! IS_DIR_SEPARATOR (*e2))
++e2;
if (*e1 == '\0' || *e2 == '\0' || e1 - pathp != e2 - refp
|| strncmp (pathp, refp, e1 - pathp) != 0)
|| filename_ncmp (pathp, refp, e1 - pathp) != 0)
break;
pathp = e1 + 1;
refp = e2 + 1;
@ -1464,7 +1464,7 @@ _bfd_construct_extended_name_table (bfd *abfd,
/* If the path is the same as the previous path seen,
reuse it. This can happen when flattening a thin
archive that contains other archives. */
if (last_filename && strcmp (last_filename, filename) == 0)
if (last_filename && filename_cmp (last_filename, filename) == 0)
continue;
last_filename = filename;
@ -1510,7 +1510,7 @@ _bfd_construct_extended_name_table (bfd *abfd,
else
{
struct ar_hdr *hdr = arch_hdr (current);
if (strncmp (normal, hdr->ar_name, thislen) != 0
if (filename_ncmp (normal, hdr->ar_name, thislen) != 0
|| (thislen < sizeof hdr->ar_name
&& hdr->ar_name[thislen] != ar_padchar (current)))
{
@ -1558,7 +1558,7 @@ _bfd_construct_extended_name_table (bfd *abfd,
archive that contains other archives.
If the path is relative, adjust it relative to
the containing archive. */
if (last_filename && strcmp (last_filename, filename) == 0)
if (last_filename && filename_cmp (last_filename, filename) == 0)
normal = last_filename;
else if (! IS_ABSOLUTE_PATH (filename)
&& ! IS_ABSOLUTE_PATH (abfd->filename))

View File

@ -186,6 +186,6 @@ generic_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
if (last_slash != NULL)
exec = last_slash + 1;
return strcmp (exec, core) == 0;
return filename_cmp (exec, core) == 0;
}

View File

@ -3103,10 +3103,10 @@ bfinfdpic_relocate_section (bfd * output_bfd,
if (silence_segment_error == 1)
silence_segment_error =
(strlen (input_bfd->filename) == 6
&& strcmp (input_bfd->filename, "crt0.o") == 0)
&& filename_cmp (input_bfd->filename, "crt0.o") == 0)
|| (strlen (input_bfd->filename) > 6
&& strcmp (input_bfd->filename
+ strlen (input_bfd->filename) - 7,
&& filename_cmp (input_bfd->filename
+ strlen (input_bfd->filename) - 7,
"/crt0.o") == 0)
? -1 : 0;
#endif

View File

@ -3957,10 +3957,10 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
if (silence_segment_error == 1)
silence_segment_error =
(strlen (input_bfd->filename) == 6
&& strcmp (input_bfd->filename, "crt0.o") == 0)
&& filename_cmp (input_bfd->filename, "crt0.o") == 0)
|| (strlen (input_bfd->filename) > 6
&& strcmp (input_bfd->filename
+ strlen (input_bfd->filename) - 7,
&& filename_cmp (input_bfd->filename
+ strlen (input_bfd->filename) - 7,
"/crt0.o") == 0)
? -1 : 0;
if (!silence_segment_error

View File

@ -4067,7 +4067,7 @@ sort_bfds (const void *a, const void *b)
bfd *const *abfd1 = a;
bfd *const *abfd2 = b;
return strcmp ((*abfd1)->filename, (*abfd2)->filename);
return filename_cmp ((*abfd1)->filename, (*abfd2)->filename);
}
static unsigned int
@ -4299,7 +4299,7 @@ spu_elf_auto_overlay (struct bfd_link_info *info)
qsort (bfd_arr, bfd_count, sizeof (*bfd_arr), sort_bfds);
for (i = 1; i < bfd_count; ++i)
if (strcmp (bfd_arr[i - 1]->filename, bfd_arr[i]->filename) == 0)
if (filename_cmp (bfd_arr[i - 1]->filename, bfd_arr[i]->filename) == 0)
{
if (bfd_arr[i - 1]->my_archive == bfd_arr[i]->my_archive)
{

View File

@ -1386,8 +1386,8 @@ _bfd_stab_section_find_nearest_line (bfd *abfd,
dirlen = strlen (directory_name);
if (info->filename == NULL
|| strncmp (info->filename, directory_name, dirlen) != 0
|| strcmp (info->filename + dirlen, file_name) != 0)
|| filename_ncmp (info->filename, directory_name, dirlen) != 0
|| filename_cmp (info->filename + dirlen, file_name) != 0)
{
size_t len;

View File

@ -758,9 +758,9 @@ xcoff_set_import_path (struct bfd_link_info *info,
*pp != NULL;
pp = &(*pp)->next, ++c)
{
if (strcmp ((*pp)->path, imppath) == 0
&& strcmp ((*pp)->file, impfile) == 0
&& strcmp ((*pp)->member, impmember) == 0)
if (filename_cmp ((*pp)->path, imppath) == 0
&& filename_cmp ((*pp)->file, impfile) == 0
&& filename_cmp ((*pp)->member, impmember) == 0)
break;
}

View File

@ -1364,7 +1364,7 @@ xtensa_regfile_lookup (xtensa_isa isa, const char *name)
/* The expected number of regfiles is small; use a linear search. */
for (n = 0; n < intisa->num_regfiles; n++)
{
if (!strcmp (intisa->regfiles[n].name, name))
if (!filename_cmp (intisa->regfiles[n].name, name))
return n;
}
@ -1394,7 +1394,7 @@ xtensa_regfile_lookup_shortname (xtensa_isa isa, const char *shortname)
as their parents. */
if (intisa->regfiles[n].parent != n)
continue;
if (!strcmp (intisa->regfiles[n].shortname, shortname))
if (!filename_cmp (intisa->regfiles[n].shortname, shortname))
return n;
}

View File

@ -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>
* dwarf2.h (_ELF_DWARF2_H): Renamed to

View File

@ -73,6 +73,9 @@ extern "C" {
extern int filename_cmp (const char *s1, const char *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
}
#endif

View File

@ -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>
* splay-tree.c: Escape wrapping newlines in texinfo markup

View File

@ -76,3 +76,52 @@ filename_cmp (const char *s1, const char *s2)
#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
}

View File

@ -296,6 +296,24 @@ and backward slashes are equal.
@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
@deftypefn Replacement int fnmatch (const char *@var{pattern}, @
const char *@var{string}, int @var{flags})