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:
parent
92e961922a
commit
007d618909
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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})
|
||||
|
Loading…
x
Reference in New Issue
Block a user