Commit 343f59d9 by Alan Modra Committed by Alan Modra

configure.in (CROSS): Define NATIVE_CROSS.

	* configure.in (CROSS): Define NATIVE_CROSS.
	* configure: Regenerate.
	* gcc.c (STARTFILE_PREFIX_SPEC): Define.
	(startfile_prefix_spec): New var.
	(static_specs): Add startfile_prefix_spec.
	(do_spec_2): Split out from..
	(do_spec): ..here.
	(main): Process startfile_prefix_spec.
	* config/rs6000/linux64.h (LINK_OS_LINUX_SPEC) Change name of
	dynamic linker.
	(STARTFILE_PREFIX_SPEC): Define.
	(STARTFILE_LINUX_SPEC, ENDFILE_LINUX_SPEC): Rewrite without
        absolute paths.

From-SVN: r53752
parent df383483
2002-05-23 Alan Modra <amodra@bigpond.net.au>
* configure.in (CROSS): Define NATIVE_CROSS.
* configure: Regenerate.
* gcc.c (STARTFILE_PREFIX_SPEC): Define.
(startfile_prefix_spec): New var.
(static_specs): Add startfile_prefix_spec.
(do_spec_2): Split out from..
(do_spec): ..here.
(main): Process startfile_prefix_spec.
* config/rs6000/linux64.h (LINK_OS_LINUX_SPEC) Change name of
dynamic linker.
(STARTFILE_PREFIX_SPEC): Define.
(STARTFILE_LINUX_SPEC, ENDFILE_LINUX_SPEC): Rewrite without
absolute paths.
2002-05-22 Kazu Hirata <kazu@cs.umass.edu> 2002-05-22 Kazu Hirata <kazu@cs.umass.edu>
* cpperror.c: Fix formatting. * cpperror.c: Fix formatting.
......
...@@ -100,6 +100,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -100,6 +100,7 @@ Boston, MA 02111-1307, USA. */
/* Don't assume anything about the header files. */ /* Don't assume anything about the header files. */
#define NO_IMPLICIT_EXTERN_C #define NO_IMPLICIT_EXTERN_C
/* Override svr4.h */
#undef MD_EXEC_PREFIX #undef MD_EXEC_PREFIX
#undef MD_STARTFILE_PREFIX #undef MD_STARTFILE_PREFIX
...@@ -138,29 +139,23 @@ Boston, MA 02111-1307, USA. */ ...@@ -138,29 +139,23 @@ Boston, MA 02111-1307, USA. */
#define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
#undef LINK_OS_LINUX_SPEC #undef LINK_OS_LINUX_SPEC
#ifndef CROSS_COMPILE
#define LINK_OS_LINUX_SPEC "-m elf64ppc %{!shared: %{!static: \ #define LINK_OS_LINUX_SPEC "-m elf64ppc %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \ %{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib64/ld.so.1}}}" %{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}"
#else
#define LINK_OS_LINUX_SPEC "-m elf64ppc %{!shared: %{!static: \ #ifdef NATIVE_CROSS
%{rdynamic:-export-dynamic} \ #define STARTFILE_PREFIX_SPEC "/usr/local/lib64/ /lib64/ /usr/lib64/"
%{!dynamic-linker:-dynamic-linker ld.so.1}}}"
#endif #endif
#ifndef CROSS_COMPILE
#undef STARTFILE_LINUX_SPEC #undef STARTFILE_LINUX_SPEC
#define STARTFILE_LINUX_SPEC "\ #define STARTFILE_LINUX_SPEC "\
%{!shared: %{pg:/usr/lib64/gcrt1.o%s} %{!pg:%{p:/usr/lib64/gcrt1.o%s} \ %{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}} crti.o%s \
%{!p:/usr/lib64/crt1.o%s}}} /usr/lib64/crti.o%s \ %{static:crtbeginT.o%s} \
%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}"
#endif
#ifndef CROSS_COMPILE
#undef ENDFILE_LINUX_SPEC #undef ENDFILE_LINUX_SPEC
#define ENDFILE_LINUX_SPEC "\ #define ENDFILE_LINUX_SPEC "\
%{!shared:crtend.o%s} %{shared:crtendS.o%s} /usr/lib64/crtn.o%s" %{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
#endif
#undef TOC_SECTION_ASM_OP #undef TOC_SECTION_ASM_OP
#define TOC_SECTION_ASM_OP "\t.section\t\".toc\",\"aw\"" #define TOC_SECTION_ASM_OP "\t.section\t\".toc\",\"aw\""
......
...@@ -1115,6 +1115,11 @@ then ...@@ -1115,6 +1115,11 @@ then
CROSS="-DCROSS_COMPILE" CROSS="-DCROSS_COMPILE"
ALL=all.cross ALL=all.cross
SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)' SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
case "$host","$target" in
i?86-*-*,x86_64-*-* \
| powerpc*-*-*,powerpc64*-*-*)
CROSS="$CROSS -DNATIVE_CROSS" ;;
esac
fi fi
# If this is a cross-compiler that does not # If this is a cross-compiler that does not
......
...@@ -299,6 +299,7 @@ static const char *handle_braces PARAMS ((const char *)); ...@@ -299,6 +299,7 @@ static const char *handle_braces PARAMS ((const char *));
static char *save_string PARAMS ((const char *, int)); static char *save_string PARAMS ((const char *, int));
static void set_collect_gcc_options PARAMS ((void)); static void set_collect_gcc_options PARAMS ((void));
static int do_spec_1 PARAMS ((const char *, int, const char *)); static int do_spec_1 PARAMS ((const char *, int, const char *));
static int do_spec_2 PARAMS ((const char *));
static const char *find_file PARAMS ((const char *)); static const char *find_file PARAMS ((const char *));
static int is_directory PARAMS ((const char *, const char *, int)); static int is_directory PARAMS ((const char *, const char *, int));
static void validate_switches PARAMS ((const char *)); static void validate_switches PARAMS ((const char *));
...@@ -641,6 +642,10 @@ proper position among the other output files. */ ...@@ -641,6 +642,10 @@ proper position among the other output files. */
# endif # endif
#endif #endif
#ifndef STARTFILE_PREFIX_SPEC
# define STARTFILE_PREFIX_SPEC ""
#endif
static const char *asm_debug = ASM_DEBUG_SPEC; static const char *asm_debug = ASM_DEBUG_SPEC;
static const char *cpp_spec = CPP_SPEC; static const char *cpp_spec = CPP_SPEC;
static const char *cpp_predefines = CPP_PREDEFINES; static const char *cpp_predefines = CPP_PREDEFINES;
...@@ -658,6 +663,7 @@ static const char *switches_need_spaces = SWITCHES_NEED_SPACES; ...@@ -658,6 +663,7 @@ static const char *switches_need_spaces = SWITCHES_NEED_SPACES;
static const char *linker_name_spec = LINKER_NAME; static const char *linker_name_spec = LINKER_NAME;
static const char *link_command_spec = LINK_COMMAND_SPEC; static const char *link_command_spec = LINK_COMMAND_SPEC;
static const char *link_libgcc_spec = LINK_LIBGCC_SPEC; static const char *link_libgcc_spec = LINK_LIBGCC_SPEC;
static const char *startfile_prefix_spec = STARTFILE_PREFIX_SPEC;
/* Standard options to cpp, cc1, and as, to reduce duplication in specs. /* Standard options to cpp, cc1, and as, to reduce duplication in specs.
There should be no need to override these in target dependent files, There should be no need to override these in target dependent files,
...@@ -1388,6 +1394,7 @@ static struct spec_list static_specs[] = ...@@ -1388,6 +1394,7 @@ static struct spec_list static_specs[] =
INIT_STATIC_SPEC ("md_exec_prefix", &md_exec_prefix), INIT_STATIC_SPEC ("md_exec_prefix", &md_exec_prefix),
INIT_STATIC_SPEC ("md_startfile_prefix", &md_startfile_prefix), INIT_STATIC_SPEC ("md_startfile_prefix", &md_startfile_prefix),
INIT_STATIC_SPEC ("md_startfile_prefix_1", &md_startfile_prefix_1), INIT_STATIC_SPEC ("md_startfile_prefix_1", &md_startfile_prefix_1),
INIT_STATIC_SPEC ("startfile_prefix_spec", &startfile_prefix_spec),
}; };
#ifdef EXTRA_SPECS /* additional specs needed */ #ifdef EXTRA_SPECS /* additional specs needed */
...@@ -4133,15 +4140,7 @@ do_spec (spec) ...@@ -4133,15 +4140,7 @@ do_spec (spec)
{ {
int value; int value;
clear_args (); value = do_spec_2 (spec);
arg_going = 0;
delete_this_arg = 0;
this_is_output_file = 0;
this_is_library_file = 0;
input_from_pipe = 0;
suffix_subst = NULL;
value = do_spec_1 (spec, 0, NULL);
/* Force out any unfinished command. /* Force out any unfinished command.
If -pipe, this forces out the last command if it ended in `|'. */ If -pipe, this forces out the last command if it ended in `|'. */
...@@ -4159,6 +4158,21 @@ do_spec (spec) ...@@ -4159,6 +4158,21 @@ do_spec (spec)
return value; return value;
} }
static int
do_spec_2 (spec)
const char *spec;
{
clear_args ();
arg_going = 0;
delete_this_arg = 0;
this_is_output_file = 0;
this_is_library_file = 0;
input_from_pipe = 0;
suffix_subst = NULL;
return do_spec_1 (spec, 0, NULL);
}
/* Process the sub-spec SPEC as a portion of a larger spec. /* Process the sub-spec SPEC as a portion of a larger spec.
This is like processing a whole spec except that we do This is like processing a whole spec except that we do
not initialize at the beginning and we do not supply a not initialize at the beginning and we do not supply a
...@@ -5838,8 +5852,10 @@ main (argc, argv) ...@@ -5838,8 +5852,10 @@ main (argc, argv)
if (access (specs_file, R_OK) == 0) if (access (specs_file, R_OK) == 0)
read_specs (specs_file, TRUE); read_specs (specs_file, TRUE);
/* If not cross-compiling, look for startfiles in the standard places. */ /* If not cross-compiling, look for startfiles in the standard places.
if (*cross_compile == '0') Similarly, don't add the standard prefixes if startfile handling
will be under control of startfile_prefix_spec. */
if (*cross_compile == '0' || *startfile_prefix_spec == 0)
{ {
if (*md_exec_prefix) if (*md_exec_prefix)
{ {
...@@ -5897,6 +5913,16 @@ main (argc, argv) ...@@ -5897,6 +5913,16 @@ main (argc, argv)
"BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL); "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL);
} }
if (*startfile_prefix_spec != 0
&& do_spec_2 (startfile_prefix_spec) == 0
&& do_spec_1 (" ", 0, NULL) == 0)
{
int ndx;
for (ndx = 0; ndx < argbuf_index; ndx++)
add_prefix (&startfile_prefixes, argbuf[ndx], "BINUTILS",
PREFIX_PRIORITY_LAST, 0, NULL);
}
/* Process any user specified specs in the order given on the command /* Process any user specified specs in the order given on the command
line. */ line. */
for (uptr = user_specs_head; uptr; uptr = uptr->next) for (uptr = user_specs_head; uptr; uptr = uptr->next)
......
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