mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-25 21:41:47 +08:00
* emultempl/spuelf.em (embedded_spu_file): Deduce embedspu program
name prefix from that of ld.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2007-06-18 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* emultempl/spuelf.em (embedded_spu_file): Deduce embedspu program
|
||||||
|
name prefix from that of ld.
|
||||||
|
|
||||||
2007-06-14 H.J. Lu <hongjiu.lu@intel.com>
|
2007-06-14 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* Makefile.am (ACLOCAL_AMFLAGS): Add -I ../config -I ../bfd.
|
* Makefile.am (ACLOCAL_AMFLAGS): Add -I ../config -I ../bfd.
|
||||||
|
@ -306,6 +306,8 @@ embedded_spu_file (lang_input_statement_type *entry, const char *flags)
|
|||||||
union lang_statement_union **old_file_tail;
|
union lang_statement_union **old_file_tail;
|
||||||
union lang_statement_union *new_ent;
|
union lang_statement_union *new_ent;
|
||||||
lang_input_statement_type *search;
|
lang_input_statement_type *search;
|
||||||
|
const char *prefix;
|
||||||
|
size_t prefix_len;
|
||||||
|
|
||||||
if (entry->the_bfd->format != bfd_object
|
if (entry->the_bfd->format != bfd_object
|
||||||
|| strcmp (entry->the_bfd->xvec->name, "elf32-spu") != 0
|
|| strcmp (entry->the_bfd->xvec->name, "elf32-spu") != 0
|
||||||
@ -360,7 +362,23 @@ embedded_spu_file (lang_input_statement_type *entry, const char *flags)
|
|||||||
|
|
||||||
/* Use fork() and exec() rather than system() so that we don't
|
/* Use fork() and exec() rather than system() so that we don't
|
||||||
need to worry about quoting args. */
|
need to worry about quoting args. */
|
||||||
|
prefix = base_name (program_name);
|
||||||
|
prefix_len = strlen (prefix);
|
||||||
|
if (prefix_len > 2
|
||||||
|
&& (prefix[prefix_len - 2] == 'l'
|
||||||
|
|| prefix[prefix_len - 2] == 'L')
|
||||||
|
&& (prefix[prefix_len - 1] == 'd'
|
||||||
|
|| prefix[prefix_len - 1] == 'D'))
|
||||||
|
{
|
||||||
|
cmd[0] = xmalloc (prefix_len + 7);
|
||||||
|
memcpy (cmd[0], prefix, prefix_len - 2);
|
||||||
|
memcpy (cmd[0] + prefix_len - 2, "embedspu", 9);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
prefix_len = 0;
|
||||||
cmd[0] = "embedspu";
|
cmd[0] = "embedspu";
|
||||||
|
}
|
||||||
cmd[1] = flags;
|
cmd[1] = flags;
|
||||||
cmd[2] = handle;
|
cmd[2] = handle;
|
||||||
cmd[3] = entry->the_bfd->filename;
|
cmd[3] = entry->the_bfd->filename;
|
||||||
@ -379,6 +397,11 @@ embedded_spu_file (lang_input_statement_type *entry, const char *flags)
|
|||||||
if (pid == 0)
|
if (pid == 0)
|
||||||
{
|
{
|
||||||
execvp (cmd[0], (char *const *) cmd);
|
execvp (cmd[0], (char *const *) cmd);
|
||||||
|
if (prefix_len != 0)
|
||||||
|
{
|
||||||
|
cmd[0] = "embedspu";
|
||||||
|
execvp (cmd[0], (char *const *) cmd);
|
||||||
|
}
|
||||||
perror (cmd[0]);
|
perror (cmd[0]);
|
||||||
_exit (127);
|
_exit (127);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user