aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcc.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-11-04 17:24:37 +0000
committerRafael Espindola <espindola@gcc.gnu.org>2009-11-04 17:24:37 +0000
commit7e9dc421e5619c53ef12192450ef03fd4d7f5d63 (patch)
treebbdb30714a65a45ea093d3c41499626e8893a5bb /gcc/gcc.c
parent43a8b705906034ecb3edfb54558a34bd362a7213 (diff)
downloadgcc-7e9dc421e5619c53ef12192450ef03fd4d7f5d63.zip
gcc-7e9dc421e5619c53ef12192450ef03fd4d7f5d63.tar.gz
gcc-7e9dc421e5619c53ef12192450ef03fd4d7f5d63.tar.bz2
gcc.c (process_command): Handle arguments name@offset.
2009-11-04 Richard Guenther <rguenther@suse.de> Rafael Avila de Espindola <espindola@google.com> * gcc.c (process_command): Handle arguments name@offset. 2009-11-04 Richard Guenther <rguenther@suse.de> Rafael Avila de Espindola <espindola@google.com> * lto-elf.c (lto_elf_build_section_table): Add the base offset. (lto_elf_file_open): Handle offsets in arguments name@offest. 2009-11-04 Richard Guenther <rguenther@suse.de> Rafael Avila de Espindola <espindola@google.com> * lto-plugin.c (plugin_file_info): Remove temp field. (cleanup_handler): Don't delete temporary objects. (claim_file_handler): Don't create temporary objects. Co-Authored-By: Rafael Avila de Espindola <espindola@google.com> From-SVN: r153903
Diffstat (limited to 'gcc/gcc.c')
-rw-r--r--gcc/gcc.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 0f74dd0..6bc8e15 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -4568,20 +4568,32 @@ process_command (int argc, const char **argv)
}
else
{
+ const char *p = strchr (argv[i], '@');
+ char *fname;
#ifdef HAVE_TARGET_OBJECT_SUFFIX
argv[i] = convert_filename (argv[i], 0, access (argv[i], F_OK));
#endif
+ if (!p)
+ fname = xstrdup (argv[i]);
+ else
+ {
+ fname = (char *)xmalloc (p - argv[i] + 1);
+ memcpy (fname, argv[i], p - argv[i]);
+ fname[p - argv[i]] = '\0';
+ }
+
+ if (strcmp (fname, "-") != 0 && access (fname, F_OK) < 0)
+ {
+ perror_with_name (fname);
+ error_count++;
+ }
+ else
+ {
+ infiles[n_infiles].language = spec_lang;
+ infiles[n_infiles++].name = argv[i];
+ }
- if (strcmp (argv[i], "-") != 0 && access (argv[i], F_OK) < 0)
- {
- perror_with_name (argv[i]);
- error_count++;
- }
- else
- {
- infiles[n_infiles].language = spec_lang;
- infiles[n_infiles++].name = argv[i];
- }
+ free (fname);
}
}