Commit 2642f659 by Jack Howarth Committed by Iain Sandoe

gcc.c (spec_function): Add remove-outfile.


2010-08-17  Jack Howarth <howarth@bromo.med.uc.edu>

	* gcc.c (spec_function): Add remove-outfile.
	(remove_outfile_spec_function): New function.
	* config/darwin.h (LINK_SPEC): Add removal of
	-ldl, -lm and -lpthread.
	* invoke.texi (replace-outfile): Document.

From-SVN: r163305
parent a85615d2
2010-08-17 Jack Howarth <howarth@bromo.med.uc.edu>
* gcc.c (spec_function): Add remove-outfile.
(remove_outfile_spec_function): New function.
* config/darwin.h (LINK_SPEC): Add removal of
-ldl, -lm and -lpthread.
* invoke.texi (replace-outfile): Document.
2010-08-17 Uros Bizjak <ubizjak@gmail.com>
PR target/45296
......
......@@ -303,6 +303,9 @@ extern GTY(()) int darwin_ms_struct;
so put a * after their names so all of them get passed. */
#define LINK_SPEC \
"%{static}%{!static:-dynamic} \
%:remove-outfile(-ldl) \
%:remove-outfile(-lm) \
%:remove-outfile(-lpthread) \
%{fgnu-runtime: %{static|static-libgcc: \
%:replace-outfile(-lobjc libobjc-gnu.a%s); \
:%:replace-outfile(-lobjc -lobjc-gnu ) } }\
......
......@@ -9629,6 +9629,15 @@ is a small example of its usage:
%@{fgnu-runtime:%:replace-outfile(-lobjc -lobjc-gnu)@}
@end smallexample
@item @code{remove-outfile}
The @code{remove-outfile} spec function takes one argument. It looks for the
first argument in the outfiles array and removes it. Here is a small example
its usage:
@smallexample
%:remove-outfile(-lm)
@end smallexample
@item @code{print-asm-header}
The @code{print-asm-header} function takes no arguments and simply
prints a banner like:
......
......@@ -317,6 +317,7 @@ static const char *getenv_spec_function (int, const char **);
static const char *if_exists_spec_function (int, const char **);
static const char *if_exists_else_spec_function (int, const char **);
static const char *replace_outfile_spec_function (int, const char **);
static const char *remove_outfile_spec_function (int, const char **);
static const char *version_compare_spec_function (int, const char **);
static const char *include_spec_function (int, const char **);
static const char *find_file_spec_function (int, const char **);
......@@ -1615,6 +1616,7 @@ static const struct spec_function static_spec_functions[] =
{ "if-exists", if_exists_spec_function },
{ "if-exists-else", if_exists_else_spec_function },
{ "replace-outfile", replace_outfile_spec_function },
{ "remove-outfile", remove_outfile_spec_function },
{ "version-compare", version_compare_spec_function },
{ "include", include_spec_function },
{ "find-file", find_file_spec_function },
......@@ -8274,6 +8276,27 @@ replace_outfile_spec_function (int argc, const char **argv)
return NULL;
}
/* remove-outfile built-in spec function.
*
* This looks for the first argument in the outfiles array's name and
* removes it. */
static const char *
remove_outfile_spec_function (int argc, const char **argv)
{
int i;
/* Must have exactly one argument. */
if (argc != 1)
abort ();
for (i = 0; i < n_infiles; i++)
{
if (outfiles[i] && !strcmp (outfiles[i], argv[0]))
outfiles[i] = NULL;
}
return NULL;
}
/* Given two version numbers, compares the two numbers.
A version number must match the regular expression
([1-9][0-9]*|0)(\.([1-9][0-9]*|0))*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment