* ldfile.c (ldfile_open_file_search): Use concat.

(try_open): Don't use a fixed size pathname buffer.
	(ldfile_find_command_file): Likewise.
	* emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive): If
	using EXTRA_SHLIB_EXTENSION, don't open twice.
This commit is contained in:
Alan Modra 2008-08-08 08:06:16 +00:00
parent 4dd07732f2
commit a26cc96746
3 changed files with 25 additions and 17 deletions

View File

@ -1,3 +1,11 @@
2008-08-08 Alan Modra <amodra@bigpond.net.au>
* ldfile.c (ldfile_open_file_search): Use concat.
(try_open): Don't use a fixed size pathname buffer.
(ldfile_find_command_file): Likewise.
* emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive): If
using EXTRA_SHLIB_EXTENSION, don't open twice.
2008-08-04 Alan Modra <amodra@bigpond.net.au> 2008-08-04 Alan Modra <amodra@bigpond.net.au>
* Makefile.am (POTFILES.in): Set LC_ALL=C. * Makefile.am (POTFILES.in): Set LC_ALL=C.

View File

@ -1516,8 +1516,9 @@ gld${EMULATION_NAME}_open_dynamic_archive
/* Try the .so extension first. If that fails build a new filename /* Try the .so extension first. If that fails build a new filename
using EXTRA_SHLIB_EXTENSION. */ using EXTRA_SHLIB_EXTENSION. */
if (! ldfile_try_open_bfd (string, entry)) if (! ldfile_try_open_bfd (string, entry))
sprintf (string, "%s/lib%s%s%s", search->name, {
filename, arch, EXTRA_SHLIB_EXTENSION); sprintf (string, "%s/lib%s%s%s", search->name,
filename, arch, EXTRA_SHLIB_EXTENSION);
#endif #endif
if (! ldfile_try_open_bfd (string, entry)) if (! ldfile_try_open_bfd (string, entry))
@ -1525,6 +1526,9 @@ gld${EMULATION_NAME}_open_dynamic_archive
free (string); free (string);
return FALSE; return FALSE;
} }
#ifdef EXTRA_SHLIB_EXTENSION
}
#endif
entry->filename = string; entry->filename = string;

View File

@ -343,19 +343,12 @@ ldfile_open_file_search (const char *arch,
} }
} }
string = xmalloc (strlen (search->name)
+ strlen (slash)
+ strlen (lib)
+ strlen (entry->filename)
+ strlen (arch)
+ strlen (suffix)
+ 1);
if (entry->is_archive) if (entry->is_archive)
sprintf (string, "%s%s%s%s%s%s", search->name, slash, string = concat (search->name, slash, lib, entry->filename,
lib, entry->filename, arch, suffix); arch, suffix, (const char *) NULL);
else else
sprintf (string, "%s%s%s", search->name, slash, entry->filename); string = concat (search->name, slash, entry->filename,
(const char *) 0);
if (ldfile_try_open_bfd (string, entry)) if (ldfile_try_open_bfd (string, entry))
{ {
@ -429,7 +422,6 @@ static FILE *
try_open (const char *name, const char *exten) try_open (const char *name, const char *exten)
{ {
FILE *result; FILE *result;
char buff[1000];
result = fopen (name, "r"); result = fopen (name, "r");
@ -446,7 +438,9 @@ try_open (const char *name, const char *exten)
if (*exten) if (*exten)
{ {
sprintf (buff, "%s%s", name, exten); char *buff;
buff = concat (name, exten, (const char *) NULL);
result = fopen (buff, "r"); result = fopen (buff, "r");
if (trace_file_tries) if (trace_file_tries)
@ -456,6 +450,7 @@ try_open (const char *name, const char *exten)
else else
info_msg (_("opened script file %s\n"), buff); info_msg (_("opened script file %s\n"), buff);
} }
free (buff);
} }
return result; return result;
@ -469,7 +464,6 @@ ldfile_find_command_file (const char *name, const char *extend)
{ {
search_dirs_type *search; search_dirs_type *search;
FILE *result; FILE *result;
char buffer[1000];
/* First try raw name. */ /* First try raw name. */
result = try_open (name, ""); result = try_open (name, "");
@ -478,9 +472,11 @@ ldfile_find_command_file (const char *name, const char *extend)
/* Try now prefixes. */ /* Try now prefixes. */
for (search = search_head; search != NULL; search = search->next) for (search = search_head; search != NULL; search = search->next)
{ {
sprintf (buffer, "%s%s%s", search->name, slash, name); char *buffer;
buffer = concat (search->name, slash, name, (const char *) NULL);
result = try_open (buffer, extend); result = try_open (buffer, extend);
free (buffer);
if (result) if (result)
break; break;
} }