diff mbox

Fix intelmic-mkoffload.c if the temp path contains a '-'

Message ID 20150907144612.GA5256@msticlxl57.ims.intel.com
State New
Headers show

Commit Message

Ilya Verbin Sept. 7, 2015, 2:46 p.m. UTC
On Sat, Sep 05, 2015 at 00:45:36 +0300, Ilya Verbin wrote:
> 2015-09-04 22:27 GMT+03:00 Mike Stump <mikestump@comcast.net>:
> > On Sep 4, 2015, at 4:10 AM, Hahnfeld, Jonas <Hahnfeld@itc.rwth-aachen.de> wrote:
> >>>>>    * intelmic-mkoffload.c (prepare_target_image): Fix if the temp path
> >>>>>    contains a '-‘.
> >
> > So, out of curiosity, did you test all characters other than null?  If - doesn’t work, there is a good chance that no such test has been done, and there is a small hoard of bugs, all the same in there.
> 
> Good point.  Objcopy in bfd/binary.c creates symbol names this way:
> 
>   for (p = buf; *p; p++)
>     if (! ISALNUM (*p))
>       *p = '_';
> 
> We should do the same in intelmic-mkoffload.c.  I will prepare a patch.

gcc/
	* config/i386/intelmic-mkoffload.c (prepare_target_image): Handle all
	non-alphanumeric characters in the symbol name.

Regtested on x86_64-linux.  OK for trunk?  OK for gcc-5-branch?




  -- Ilya

Comments

Jakub Jelinek Sept. 7, 2015, 2:48 p.m. UTC | #1
On Mon, Sep 07, 2015 at 05:46:12PM +0300, Ilya Verbin wrote:
> On Sat, Sep 05, 2015 at 00:45:36 +0300, Ilya Verbin wrote:
> > 2015-09-04 22:27 GMT+03:00 Mike Stump <mikestump@comcast.net>:
> > > On Sep 4, 2015, at 4:10 AM, Hahnfeld, Jonas <Hahnfeld@itc.rwth-aachen.de> wrote:
> > >>>>>    * intelmic-mkoffload.c (prepare_target_image): Fix if the temp path
> > >>>>>    contains a '-‘.
> > >
> > > So, out of curiosity, did you test all characters other than null?  If - doesn’t work, there is a good chance that no such test has been done, and there is a small hoard of bugs, all the same in there.
> > 
> > Good point.  Objcopy in bfd/binary.c creates symbol names this way:
> > 
> >   for (p = buf; *p; p++)
> >     if (! ISALNUM (*p))
> >       *p = '_';
> > 
> > We should do the same in intelmic-mkoffload.c.  I will prepare a patch.
> 
> gcc/
> 	* config/i386/intelmic-mkoffload.c (prepare_target_image): Handle all
> 	non-alphanumeric characters in the symbol name.
> 
> Regtested on x86_64-linux.  OK for trunk?  OK for gcc-5-branch?

Ok for both.

	Jakub
diff mbox

Patch

diff --git a/gcc/config/i386/intelmic-mkoffload.c b/gcc/config/i386/intelmic-mkoffload.c
index 49e99e8..4a7812c 100644
--- a/gcc/config/i386/intelmic-mkoffload.c
+++ b/gcc/config/i386/intelmic-mkoffload.c
@@ -453,17 +453,18 @@  prepare_target_image (const char *target_compiler, int argc, char **argv)
   fork_execute (objcopy_argv[0], CONST_CAST (char **, objcopy_argv), false);
 
   /* Objcopy has created symbols, containing the input file name with
-     special characters replaced with '_'.  We are going to rename these
-     new symbols.  */
+     non-alphanumeric characters replaced by underscores.
+     We are going to rename these new symbols.  */
   size_t symbol_name_len = strlen (target_so_filename);
   char *symbol_name = XALLOCAVEC (char, symbol_name_len + 1);
-  for (size_t i = 0; i <= symbol_name_len; i++)
+  for (size_t i = 0; i < symbol_name_len; i++)
     {
       char c = target_so_filename[i];
-      if (c == '/' || c == '.' || c == '-')
+      if (!ISALNUM (c))
 	c = '_';
       symbol_name[i] = c;
     }
+  symbol_name[symbol_name_len] = '\0';
 
   char *opt_for_objcopy[3];
   opt_for_objcopy[0] = XALLOCAVEC (char, sizeof ("_binary__start=")