Fix intelmic-mkoffload.c if the temp path contains a '-'
Ilya Verbin
iverbin@gmail.com
Mon Sep 7 14:48:00 GMT 2015
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?
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=")
-- Ilya
More information about the Gcc-patches
mailing list