PR binutils/55326
* bucomm.c (list_supported_architectures): Free architecture list after use. * windres.c (set_endianess): Likewise. * windmc.c (set_endianess): Likewise.
This commit is contained in:
parent
184d07da89
commit
d25576aadb
4 changed files with 41 additions and 14 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2008-01-09 Jakub Zawadzki <darkjames@darkjames.ath.cx>
|
||||||
|
|
||||||
|
PR binutils/55326
|
||||||
|
* bucomm.c (list_supported_architectures): Free architecture list
|
||||||
|
after use.
|
||||||
|
* windres.c (set_endianess): Likewise.
|
||||||
|
* windmc.c (set_endianess): Likewise.
|
||||||
|
|
||||||
2008-01-08 Kai Tietz <kai.tietz@onevision.com>
|
2008-01-08 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
* binutils/rclex.c: (yylex): Add ':', '_', '\\', and '/' to post
|
* binutils/rclex.c: (yylex): Add ':', '_', '\\', and '/' to post
|
||||||
|
|
|
@ -195,16 +195,18 @@ list_supported_targets (const char *name, FILE *f)
|
||||||
void
|
void
|
||||||
list_supported_architectures (const char *name, FILE *f)
|
list_supported_architectures (const char *name, FILE *f)
|
||||||
{
|
{
|
||||||
const char **arch;
|
const char ** arch;
|
||||||
|
const char ** arches;
|
||||||
|
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
fprintf (f, _("Supported architectures:"));
|
fprintf (f, _("Supported architectures:"));
|
||||||
else
|
else
|
||||||
fprintf (f, _("%s: supported architectures:"), name);
|
fprintf (f, _("%s: supported architectures:"), name);
|
||||||
|
|
||||||
for (arch = bfd_arch_list (); *arch; arch++)
|
for (arch = arches = bfd_arch_list (); *arch; arch++)
|
||||||
fprintf (f, " %s", *arch);
|
fprintf (f, " %s", *arch);
|
||||||
fprintf (f, "\n");
|
fprintf (f, "\n");
|
||||||
|
free (arches);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The length of the longest architecture name + 1. */
|
/* The length of the longest architecture name + 1. */
|
||||||
|
|
|
@ -245,18 +245,23 @@ set_endianess (bfd *abfd, const char *target)
|
||||||
if (! target_vec)
|
if (! target_vec)
|
||||||
fatal ("Can't detect target endianess and architecture.");
|
fatal ("Can't detect target endianess and architecture.");
|
||||||
target_is_bigendian = ((target_vec->byteorder == BFD_ENDIAN_BIG) ? 1 : 0);
|
target_is_bigendian = ((target_vec->byteorder == BFD_ENDIAN_BIG) ? 1 : 0);
|
||||||
{
|
|
||||||
const char *tname = target_vec->name;
|
|
||||||
const char **arch = bfd_arch_list ();
|
|
||||||
|
|
||||||
if (arch && tname)
|
{
|
||||||
|
const char * tname = target_vec->name;
|
||||||
|
const char ** arches = bfd_arch_list ();
|
||||||
|
|
||||||
|
if (arches && tname)
|
||||||
{
|
{
|
||||||
|
const char ** arch = arches;
|
||||||
|
|
||||||
if (strchr (tname, '-') != NULL)
|
if (strchr (tname, '-') != NULL)
|
||||||
tname = strchr (tname, '-') + 1;
|
tname = strchr (tname, '-') + 1;
|
||||||
|
|
||||||
while (*arch != NULL)
|
while (*arch != NULL)
|
||||||
{
|
{
|
||||||
const char *in_a = strstr (*arch, tname);
|
const char *in_a = strstr (*arch, tname);
|
||||||
char end_ch = (in_a ? in_a[strlen (tname)] : 0);
|
char end_ch = (in_a ? in_a[strlen (tname)] : 0);
|
||||||
|
|
||||||
if (in_a && (in_a == *arch || in_a[-1] == ':')
|
if (in_a && (in_a == *arch || in_a[-1] == ':')
|
||||||
&& end_ch == 0)
|
&& end_ch == 0)
|
||||||
{
|
{
|
||||||
|
@ -266,6 +271,9 @@ set_endianess (bfd *abfd, const char *target)
|
||||||
arch++;
|
arch++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free (arches);
|
||||||
|
|
||||||
if (! def_target_arch)
|
if (! def_target_arch)
|
||||||
fatal ("Can't detect architecture.");
|
fatal ("Can't detect architecture.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1062,7 +1062,8 @@ main (int argc, char **argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_endianess (bfd *abfd, const char *target)
|
static void
|
||||||
|
set_endianess (bfd *abfd, const char *target)
|
||||||
{
|
{
|
||||||
const bfd_target *target_vec;
|
const bfd_target *target_vec;
|
||||||
|
|
||||||
|
@ -1071,17 +1072,22 @@ static void set_endianess (bfd *abfd, const char *target)
|
||||||
if (! target_vec)
|
if (! target_vec)
|
||||||
fatal ("Can't detect target endianess and architecture.");
|
fatal ("Can't detect target endianess and architecture.");
|
||||||
target_is_bigendian = ((target_vec->byteorder == BFD_ENDIAN_BIG) ? 1 : 0);
|
target_is_bigendian = ((target_vec->byteorder == BFD_ENDIAN_BIG) ? 1 : 0);
|
||||||
|
|
||||||
{
|
{
|
||||||
const char *tname = target_vec->name;
|
const char * tname = target_vec->name;
|
||||||
const char **arch = bfd_arch_list();
|
const char ** arches = bfd_arch_list();
|
||||||
if (arch && tname)
|
|
||||||
|
if (arches && tname)
|
||||||
{
|
{
|
||||||
|
const char ** arch = arches;
|
||||||
|
|
||||||
if (strchr (tname, '-') != NULL)
|
if (strchr (tname, '-') != NULL)
|
||||||
tname = strchr (tname, '-') + 1;
|
tname = strchr (tname, '-') + 1;
|
||||||
while (*arch != NULL)
|
while (*arch != NULL)
|
||||||
{
|
{
|
||||||
const char *in_a = strstr (*arch, tname);
|
const char *in_a = strstr (*arch, tname);
|
||||||
char end_ch = (in_a ? in_a[strlen(tname)] : 0);
|
char end_ch = (in_a ? in_a[strlen(tname)] : 0);
|
||||||
|
|
||||||
if (in_a && (in_a == *arch || in_a[-1] == ':')
|
if (in_a && (in_a == *arch || in_a[-1] == ':')
|
||||||
&& end_ch == 0)
|
&& end_ch == 0)
|
||||||
{
|
{
|
||||||
|
@ -1091,6 +1097,9 @@ static void set_endianess (bfd *abfd, const char *target)
|
||||||
arch++;
|
arch++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free (arches);
|
||||||
|
|
||||||
if (! def_target_arch)
|
if (! def_target_arch)
|
||||||
fatal ("Can't detect architecture.");
|
fatal ("Can't detect architecture.");
|
||||||
}
|
}
|
||||||
|
@ -1156,8 +1165,8 @@ set_windres_bfd (windres_bfd *wrbfd, bfd *abfd, asection *sec, rc_uint_type kind
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
set_windres_bfd_content(windres_bfd *wrbfd, const void *data, rc_uint_type off,
|
set_windres_bfd_content (windres_bfd *wrbfd, const void *data, rc_uint_type off,
|
||||||
rc_uint_type length)
|
rc_uint_type length)
|
||||||
{
|
{
|
||||||
if (WR_KIND(wrbfd) != WR_KIND_TARGET)
|
if (WR_KIND(wrbfd) != WR_KIND_TARGET)
|
||||||
{
|
{
|
||||||
|
@ -1169,8 +1178,8 @@ set_windres_bfd_content(windres_bfd *wrbfd, const void *data, rc_uint_type off,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
get_windres_bfd_content(windres_bfd *wrbfd, void *data, rc_uint_type off,
|
get_windres_bfd_content (windres_bfd *wrbfd, void *data, rc_uint_type off,
|
||||||
rc_uint_type length)
|
rc_uint_type length)
|
||||||
{
|
{
|
||||||
if (WR_KIND(wrbfd) != WR_KIND_TARGET)
|
if (WR_KIND(wrbfd) != WR_KIND_TARGET)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue