This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: embedspu invocation


On Mon, Jun 18, 2007 at 02:55:40PM +0930, Alan Modra wrote:
> On Sun, Jun 17, 2007 at 10:50:17PM -0400, Daniel Jacobowitz wrote:
> >  I'd just work out the prefix at configure time, in the
> > Makefile.

Definitely a good idea.  Especially since I somehow managed to commit
an old version of the patch that didn't even compile.  :-(

	* Makefile.am: Add eelf32_spu.o rule.
	* Makefile.in: Regenerate.
	* emultempl/spuelf.em: Revert last change.  Instead use EMBEDSPU
	defined in Makefile for embedspu name.

Index: ld/Makefile.am
===================================================================
RCS file: /cvs/src/src/ld/Makefile.am,v
retrieving revision 1.239
diff -u -p -r1.239 Makefile.am
--- ld/Makefile.am	14 Jun 2007 15:31:01 -0000	1.239
+++ ld/Makefile.am	18 Jun 2007 07:45:15 -0000
@@ -468,6 +468,10 @@ ldmain.o: ldmain.c config.status
 	  -DTARGET='"@target@"' @TARGET_SYSTEM_ROOT_DEFINE@ \
 	  $(srcdir)/ldmain.c
 
+eelf32_spu.o: eelf32_spu.c
+	$(COMPILE) -c -DEMBEDSPU="\"`echo embedspu | sed '$(transform)'`\"" \
+	  eelf32_spu.c
+
 ldemul-list.h: Makefile
 	(echo "/* This file is automatically generated.  DO NOT EDIT! */";\
 	for f in `echo " " ${EMULATION_OFILES} "" \
Index: ld/emultempl/spuelf.em
===================================================================
RCS file: /cvs/src/src/ld/emultempl/spuelf.em,v
retrieving revision 1.7
diff -u -p -r1.7 spuelf.em
--- ld/emultempl/spuelf.em	18 Jun 2007 02:23:56 -0000	1.7
+++ ld/emultempl/spuelf.em	18 Jun 2007 07:45:26 -0000
@@ -306,8 +306,6 @@ embedded_spu_file (lang_input_statement_
   union lang_statement_union **old_file_tail;
   union lang_statement_union *new_ent;
   lang_input_statement_type *search;
-  const char *prefix;
-  size_t prefix_len;
 
   if (entry->the_bfd->format != bfd_object
       || strcmp (entry->the_bfd->xvec->name, "elf32-spu") != 0
@@ -362,23 +360,7 @@ embedded_spu_file (lang_input_statement_
 
   /* Use fork() and exec() rather than system() so that we don't
      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[2] = handle;
   cmd[3] = entry->the_bfd->filename;
@@ -397,7 +379,7 @@ embedded_spu_file (lang_input_statement_
   if (pid == 0)
     {
       execvp (cmd[0], (char *const *) cmd);
-      if (prefix_len != 0)
+      if (strcmp ("embedspu", EMBEDSPU) != 0)
 	{
 	  cmd[0] = "embedspu";
 	  execvp (cmd[0], (char *const *) cmd);

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]