aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.6/gcc/go/gospec.c
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2015-06-17 11:09:54 -0700
committerDan Albert <danalbert@google.com>2015-06-17 14:15:22 -0700
commitf378ebf14df0952eae870c9865bab8326aa8f137 (patch)
tree31794503eb2a8c64ea5f313b93100f1163afcffb /gcc-4.6/gcc/go/gospec.c
parent2c58169824949d3a597d9fa81931e001ef9b1bd0 (diff)
downloadtoolchain_gcc-f378ebf14df0952eae870c9865bab8326aa8f137.tar.gz
toolchain_gcc-f378ebf14df0952eae870c9865bab8326aa8f137.tar.bz2
toolchain_gcc-f378ebf14df0952eae870c9865bab8326aa8f137.zip
Delete old versions of GCC.
Change-Id: I710f125d905290e1024cbd67f48299861790c66c
Diffstat (limited to 'gcc-4.6/gcc/go/gospec.c')
-rw-r--r--gcc-4.6/gcc/go/gospec.c372
1 files changed, 0 insertions, 372 deletions
diff --git a/gcc-4.6/gcc/go/gospec.c b/gcc-4.6/gcc/go/gospec.c
deleted file mode 100644
index 55a3bcd5b..000000000
--- a/gcc-4.6/gcc/go/gospec.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* gospec.c -- Specific flags and argument handling of the gcc Go front end.
- Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "tm.h"
-#include "gcc.h"
-#include "opts.h"
-
-/* This bit is set if we saw a `-xfoo' language specification. */
-#define LANGSPEC (1<<1)
-/* This bit is set if they did `-lm' or `-lmath'. */
-#define MATHLIB (1<<2)
-/* This bit is set if they did `-lpthread'. */
-#define THREADLIB (1<<3)
-/* This bit is set if they did `-lc'. */
-#define WITHLIBC (1<<4)
-/* Skip this option. */
-#define SKIPOPT (1<<5)
-
-#ifndef MATH_LIBRARY
-#define MATH_LIBRARY "m"
-#endif
-#ifndef MATH_LIBRARY_PROFILE
-#define MATH_LIBRARY_PROFILE MATH_LIBRARY
-#endif
-
-#define THREAD_LIBRARY "pthread"
-#define THREAD_LIBRARY_PROFILE THREAD_LIBRARY
-
-#define LIBGO "go"
-#define LIBGO_PROFILE LIBGO
-#define LIBGOBEGIN "gobegin"
-
-void
-lang_specific_driver (struct cl_decoded_option **in_decoded_options,
- unsigned int *in_decoded_options_count,
- int *in_added_libraries)
-{
- unsigned int i, j;
-
- /* If true, the user gave us the `-p' or `-pg' flag. */
- bool saw_profile_flag = false;
-
- /* This is a tristate:
- -1 means we should not link in libgo
- 0 means we should link in libgo if it is needed
- 1 means libgo is needed and should be linked in.
- 2 means libgo is needed and should be linked statically. */
- int library = 0;
-
- /* The new argument list will be contained in this. */
- struct cl_decoded_option *new_decoded_options;
-
- /* "-lm" or "-lmath" if it appears on the command line. */
- const struct cl_decoded_option *saw_math = 0;
-
- /* "-lpthread" if it appears on the command line. */
- const struct cl_decoded_option *saw_thread = 0;
-
- /* "-lc" if it appears on the command line. */
- const struct cl_decoded_option *saw_libc = 0;
-
- /* An array used to flag each argument that needs a bit set for
- LANGSPEC, MATHLIB, or WITHLIBC. */
- int *args;
-
- /* Whether we need the thread library. */
- int need_thread = 0;
-
- /* By default, we throw on the math library if we have one. */
- int need_math = (MATH_LIBRARY[0] != '\0');
-
- /* True if we saw -static. */
- int static_link = 0;
-
- /* True if we should add -shared-libgcc to the command-line. */
- int shared_libgcc = 1;
-
- /* The total number of arguments with the new stuff. */
- unsigned int argc;
-
- /* The argument list. */
- struct cl_decoded_option *decoded_options;
-
- /* The number of libraries added in. */
- int added_libraries;
-
- /* The total number of arguments with the new stuff. */
- int num_args = 1;
-
- /* Whether the -o option was used. */
- bool saw_opt_o = false;
-
- /* The first input file with an extension of .go. */
- const char *first_go_file = NULL;
-
- argc = *in_decoded_options_count;
- decoded_options = *in_decoded_options;
- added_libraries = *in_added_libraries;
-
- args = XCNEWVEC (int, argc);
-
- for (i = 1; i < argc; i++)
- {
- const char *arg = decoded_options[i].arg;
-
- switch (decoded_options[i].opt_index)
- {
- case OPT_nostdlib:
- case OPT_nodefaultlibs:
- library = -1;
- break;
-
- case OPT_l:
- if (strcmp (arg, MATH_LIBRARY) == 0)
- {
- args[i] |= MATHLIB;
- need_math = 0;
- }
- else if (strcmp (arg, THREAD_LIBRARY) == 0)
- args[i] |= THREADLIB;
- else if (strcmp (arg, "c") == 0)
- args[i] |= WITHLIBC;
- else
- /* Unrecognized libraries (e.g. -lfoo) may require libgo. */
- library = (library == 0) ? 1 : library;
- break;
-
- case OPT_pg:
- case OPT_p:
- saw_profile_flag = true;
- break;
-
- case OPT_x:
- if (library == 0 && strcmp (arg, "go") == 0)
- library = 1;
- break;
-
- case OPT_Xlinker:
- case OPT_Wl_:
- /* Arguments that go directly to the linker might be .o files,
- or something, and so might cause libgo to be needed. */
- if (library == 0)
- library = 1;
- break;
-
- case OPT_c:
- case OPT_S:
- case OPT_E:
- case OPT_M:
- case OPT_MM:
- case OPT_fsyntax_only:
- /* Don't specify libraries if we won't link, since that would
- cause a warning. */
- library = -1;
- break;
-
- case OPT_o:
- saw_opt_o = true;
- break;
-
- case OPT_static:
- static_link = 1;
- break;
-
- case OPT_static_libgcc:
- shared_libgcc = 0;
- break;
-
- case OPT_static_libgo:
- library = library >= 0 ? 2 : library;
- args[i] |= SKIPOPT;
- break;
-
- case OPT_SPECIAL_input_file:
- if (library == 0)
- library = 1;
-
- if (first_go_file == NULL)
- {
- int len;
-
- len = strlen (arg);
- if (len > 3 && strcmp (arg + len - 3, ".go") == 0)
- first_go_file = arg;
- }
-
- break;
- }
- }
-
- /* There's no point adding -shared-libgcc if we don't have a shared
- libgcc. */
-#ifndef ENABLE_SHARED_LIBGCC
- shared_libgcc = 0;
-#endif
-
- /* Make sure to have room for the trailing NULL argument. */
- num_args = argc + need_math + shared_libgcc + (library > 0) * 5 + 5;
- new_decoded_options = XNEWVEC (struct cl_decoded_option, num_args);
-
- i = 0;
- j = 0;
-
- /* Copy the 0th argument, i.e., the name of the program itself. */
- new_decoded_options[j++] = decoded_options[i++];
-
- /* If we are linking, pass -fsplit-stack if it is supported. */
-#ifdef TARGET_CAN_SPLIT_STACK
- if (library >= 0)
- {
- generate_option (OPT_fsplit_stack, NULL, 1, CL_DRIVER,
- &new_decoded_options[j]);
- j++;
- }
-#endif
-
- /* NOTE: We start at 1 now, not 0. */
- while (i < argc)
- {
- new_decoded_options[j] = decoded_options[i];
-
- /* Make sure -lgo is before the math library, since libgo itself
- uses those math routines. */
- if (!saw_math && (args[i] & MATHLIB) && library > 0)
- {
- --j;
- saw_math = &decoded_options[i];
- }
-
- if (!saw_thread && (args[i] & THREADLIB) && library > 0)
- {
- --j;
- saw_thread = &decoded_options[i];
- }
-
- if (!saw_libc && (args[i] & WITHLIBC) && library > 0)
- {
- --j;
- saw_libc = &decoded_options[i];
- }
-
- if ((args[i] & SKIPOPT) != 0)
- --j;
-
- i++;
- j++;
- }
-
- /* If we are not linking, add a -o option. This is because we need
- the driver to pass all .go files to go1. Without a -o option the
- driver will invoke go1 separately for each input file. */
- if (library < 0 && first_go_file != NULL && !saw_opt_o)
- {
- const char *base;
- int baselen;
- int alen;
- char *out;
-
- base = lbasename (first_go_file);
- baselen = strlen (base) - 3;
- alen = baselen + 3;
- out = XNEWVEC (char, alen);
- memcpy (out, base, baselen);
- /* The driver will convert .o to some other suffix if
- appropriate. */
- out[baselen] = '.';
- out[baselen + 1] = 'o';
- out[baselen + 2] = '\0';
- generate_option (OPT_o, out, 1, CL_DRIVER,
- &new_decoded_options[j]);
- j++;
- }
-
- /* Add `-lgo' if we haven't already done so. */
- if (library > 0)
- {
- generate_option (OPT_l, LIBGOBEGIN, 1, CL_DRIVER,
- &new_decoded_options[j]);
- added_libraries++;
- j++;
-
-#ifdef HAVE_LD_STATIC_DYNAMIC
- if (library > 1 && !static_link)
- {
- generate_option (OPT_Wl_, LD_STATIC_OPTION, 1, CL_DRIVER,
- &new_decoded_options[j]);
- j++;
- }
-#endif
-
- generate_option (OPT_l, saw_profile_flag ? LIBGO_PROFILE : LIBGO, 1,
- CL_DRIVER, &new_decoded_options[j]);
- added_libraries++;
- j++;
-
-#ifdef HAVE_LD_STATIC_DYNAMIC
- if (library > 1 && !static_link)
- {
- generate_option (OPT_Wl_, LD_DYNAMIC_OPTION, 1, CL_DRIVER,
- &new_decoded_options[j]);
- j++;
- }
-#endif
-
- /* When linking libgo statically we also need to link with the
- pthread library. */
- if (library > 1 || static_link)
- need_thread = 1;
- }
-
- if (saw_thread)
- new_decoded_options[j++] = *saw_thread;
- else if (library > 0 && need_thread)
- {
- generate_option (OPT_l,
- (saw_profile_flag
- ? THREAD_LIBRARY_PROFILE
- : THREAD_LIBRARY),
- 1, CL_DRIVER, &new_decoded_options[j]);
- added_libraries++;
- j++;
- }
-
- if (saw_math)
- new_decoded_options[j++] = *saw_math;
- else if (library > 0 && need_math)
- {
- generate_option (OPT_l,
- saw_profile_flag ? MATH_LIBRARY_PROFILE : MATH_LIBRARY,
- 1, CL_DRIVER, &new_decoded_options[j]);
- added_libraries++;
- j++;
- }
-
- if (saw_libc)
- new_decoded_options[j++] = *saw_libc;
- if (shared_libgcc && !static_link)
- generate_option (OPT_shared_libgcc, NULL, 1, CL_DRIVER,
- &new_decoded_options[j++]);
-
- *in_decoded_options_count = j;
- *in_decoded_options = new_decoded_options;
- *in_added_libraries = added_libraries;
-}
-
-/* Called before linking. Returns 0 on success and -1 on failure. */
-int lang_specific_pre_link (void) /* Not used for Go. */
-{
- return 0;
-}
-
-/* Number of extra output files that lang_specific_pre_link may generate. */
-int lang_specific_extra_outfiles = 0; /* Not used for Go. */