Commit ae15100c by Thomas Schwinge Committed by Thomas Schwinge

Use gcc/coretypes.h:enum offload_abi in mkoffloads

	gcc/
	* config/i386/intelmic-mkoffload.c (target_ilp32): Remove
	variable, replacing it with...
	(offload_abi): ... this new variable.  Adjust all users.
	* config/nvptx/mkoffload.c (target_ilp32, offload_abi): Likewise.

From-SVN: r228283
parent 4e2a5450
2015-09-30 Thomas Schwinge <thomas@codesourcery.com>
* config/i386/intelmic-mkoffload.c (target_ilp32): Remove
variable, replacing it with...
(offload_abi): ... this new variable. Adjust all users.
* config/nvptx/mkoffload.c (target_ilp32, offload_abi): Likewise.
2015-09-30 Matthias Klose <doko@ubuntu.com> 2015-09-30 Matthias Klose <doko@ubuntu.com>
* configure.ac: Remove extraneous ;;. * configure.ac: Remove extraneous ;;.
...@@ -42,8 +42,7 @@ int num_temps = 0; ...@@ -42,8 +42,7 @@ int num_temps = 0;
const int MAX_NUM_TEMPS = 10; const int MAX_NUM_TEMPS = 10;
const char *temp_files[MAX_NUM_TEMPS]; const char *temp_files[MAX_NUM_TEMPS];
/* Shows if we should compile binaries for i386 instead of x86-64. */ enum offload_abi offload_abi = OFFLOAD_ABI_UNSET;
bool target_ilp32 = false;
/* Delete tempfiles and exit function. */ /* Delete tempfiles and exit function. */
void void
...@@ -200,10 +199,17 @@ out: ...@@ -200,10 +199,17 @@ out:
static void static void
compile_for_target (struct obstack *argv_obstack) compile_for_target (struct obstack *argv_obstack)
{ {
if (target_ilp32) switch (offload_abi)
obstack_ptr_grow (argv_obstack, "-m32"); {
else case OFFLOAD_ABI_LP64:
obstack_ptr_grow (argv_obstack, "-m64"); obstack_ptr_grow (argv_obstack, "-m64");
break;
case OFFLOAD_ABI_ILP32:
obstack_ptr_grow (argv_obstack, "-m32");
break;
default:
gcc_unreachable ();
}
obstack_ptr_grow (argv_obstack, NULL); obstack_ptr_grow (argv_obstack, NULL);
char **argv = XOBFINISH (argv_obstack, char **); char **argv = XOBFINISH (argv_obstack, char **);
...@@ -379,10 +385,17 @@ generate_host_descr_file (const char *host_compiler) ...@@ -379,10 +385,17 @@ generate_host_descr_file (const char *host_compiler)
new_argv[new_argc++] = "-c"; new_argv[new_argc++] = "-c";
new_argv[new_argc++] = "-fPIC"; new_argv[new_argc++] = "-fPIC";
new_argv[new_argc++] = "-shared"; new_argv[new_argc++] = "-shared";
if (target_ilp32) switch (offload_abi)
new_argv[new_argc++] = "-m32"; {
else case OFFLOAD_ABI_LP64:
new_argv[new_argc++] = "-m64"; new_argv[new_argc++] = "-m64";
break;
case OFFLOAD_ABI_ILP32:
new_argv[new_argc++] = "-m32";
break;
default:
gcc_unreachable ();
}
new_argv[new_argc++] = src_filename; new_argv[new_argc++] = src_filename;
new_argv[new_argc++] = "-o"; new_argv[new_argc++] = "-o";
new_argv[new_argc++] = obj_filename; new_argv[new_argc++] = obj_filename;
...@@ -442,10 +455,17 @@ prepare_target_image (const char *target_compiler, int argc, char **argv) ...@@ -442,10 +455,17 @@ prepare_target_image (const char *target_compiler, int argc, char **argv)
objcopy_argv[3] = "-I"; objcopy_argv[3] = "-I";
objcopy_argv[4] = "binary"; objcopy_argv[4] = "binary";
objcopy_argv[5] = "-O"; objcopy_argv[5] = "-O";
if (target_ilp32) switch (offload_abi)
objcopy_argv[6] = "elf32-i386"; {
else case OFFLOAD_ABI_LP64:
objcopy_argv[6] = "elf64-x86-64"; objcopy_argv[6] = "elf64-x86-64";
break;
case OFFLOAD_ABI_ILP32:
objcopy_argv[6] = "elf32-i386";
break;
default:
gcc_unreachable ();
}
objcopy_argv[7] = target_so_filename; objcopy_argv[7] = target_so_filename;
objcopy_argv[8] = "--rename-section"; objcopy_argv[8] = "--rename-section";
objcopy_argv[9] = rename_section_opt; objcopy_argv[9] = rename_section_opt;
...@@ -518,17 +538,22 @@ main (int argc, char **argv) ...@@ -518,17 +538,22 @@ main (int argc, char **argv)
passed with @file. Expand them into argv before processing. */ passed with @file. Expand them into argv before processing. */
expandargv (&argc, &argv); expandargv (&argc, &argv);
/* Find out whether we should compile binaries for i386 or x86-64. */ /* Scan the argument vector. */
for (int i = argc - 1; i > 0; i--) for (int i = 1; i < argc; i++)
if (strncmp (argv[i], "-foffload-abi=", sizeof ("-foffload-abi=") - 1) == 0) {
{ #define STR "-foffload-abi="
if (strstr (argv[i], "ilp32")) if (strncmp (argv[i], STR, strlen (STR)) == 0)
target_ilp32 = true; {
else if (!strstr (argv[i], "lp64")) if (strcmp (argv[i] + strlen (STR), "lp64") == 0)
fatal_error (input_location, offload_abi = OFFLOAD_ABI_LP64;
"unrecognizable argument of option -foffload-abi"); else if (strcmp (argv[i] + strlen (STR), "ilp32") == 0)
break; offload_abi = OFFLOAD_ABI_ILP32;
} else
fatal_error (input_location,
"unrecognizable argument of option " STR);
}
#undef STR
}
const char *target_so_filename const char *target_so_filename
= prepare_target_image (target_compiler, argc, argv); = prepare_target_image (target_compiler, argc, argv);
...@@ -541,10 +566,17 @@ main (int argc, char **argv) ...@@ -541,10 +566,17 @@ main (int argc, char **argv)
const char *new_argv[9]; const char *new_argv[9];
new_argv[new_argc++] = "ld"; new_argv[new_argc++] = "ld";
new_argv[new_argc++] = "-m"; new_argv[new_argc++] = "-m";
if (target_ilp32) switch (offload_abi)
new_argv[new_argc++] = "elf_i386"; {
else case OFFLOAD_ABI_LP64:
new_argv[new_argc++] = "elf_x86_64"; new_argv[new_argc++] = "elf_x86_64";
break;
case OFFLOAD_ABI_ILP32:
new_argv[new_argc++] = "elf_i386";
break;
default:
gcc_unreachable ();
}
new_argv[new_argc++] = "--relocatable"; new_argv[new_argc++] = "--relocatable";
new_argv[new_argc++] = host_descr_filename; new_argv[new_argc++] = host_descr_filename;
new_argv[new_argc++] = target_so_filename; new_argv[new_argc++] = target_so_filename;
......
...@@ -126,8 +126,7 @@ static id_map *var_ids, **vars_tail = &var_ids; ...@@ -126,8 +126,7 @@ static id_map *var_ids, **vars_tail = &var_ids;
static const char *ptx_name; static const char *ptx_name;
static const char *ptx_cfile_name; static const char *ptx_cfile_name;
/* Shows if we should compile binaries for i386 instead of x86-64. */ enum offload_abi offload_abi = OFFLOAD_ABI_UNSET;
bool target_ilp32 = false;
/* Delete tempfiles. */ /* Delete tempfiles. */
...@@ -926,7 +925,17 @@ compile_native (const char *infile, const char *outfile, const char *compiler) ...@@ -926,7 +925,17 @@ compile_native (const char *infile, const char *outfile, const char *compiler)
struct obstack argv_obstack; struct obstack argv_obstack;
obstack_init (&argv_obstack); obstack_init (&argv_obstack);
obstack_ptr_grow (&argv_obstack, compiler); obstack_ptr_grow (&argv_obstack, compiler);
obstack_ptr_grow (&argv_obstack, target_ilp32 ? "-m32" : "-m64"); switch (offload_abi)
{
case OFFLOAD_ABI_LP64:
obstack_ptr_grow (&argv_obstack, "-m64");
break;
case OFFLOAD_ABI_ILP32:
obstack_ptr_grow (&argv_obstack, "-m32");
break;
default:
gcc_unreachable ();
}
obstack_ptr_grow (&argv_obstack, infile); obstack_ptr_grow (&argv_obstack, infile);
obstack_ptr_grow (&argv_obstack, "-c"); obstack_ptr_grow (&argv_obstack, "-c");
obstack_ptr_grow (&argv_obstack, "-o"); obstack_ptr_grow (&argv_obstack, "-o");
...@@ -1004,23 +1013,38 @@ main (int argc, char **argv) ...@@ -1004,23 +1013,38 @@ main (int argc, char **argv)
passed with @file. Expand them into argv before processing. */ passed with @file. Expand them into argv before processing. */
expandargv (&argc, &argv); expandargv (&argc, &argv);
/* Find out whether we should compile binaries for i386 or x86-64. */ /* Scan the argument vector. */
for (int i = argc - 1; i > 0; i--) for (int i = 1; i < argc; i++)
if (strncmp (argv[i], "-foffload-abi=", sizeof ("-foffload-abi=") - 1) == 0) {
{ #define STR "-foffload-abi="
if (strstr (argv[i], "ilp32")) if (strncmp (argv[i], STR, strlen (STR)) == 0)
target_ilp32 = true; {
else if (!strstr (argv[i], "lp64")) if (strcmp (argv[i] + strlen (STR), "lp64") == 0)
fatal_error (input_location, offload_abi = OFFLOAD_ABI_LP64;
"unrecognizable argument of option -foffload-abi"); else if (strcmp (argv[i] + strlen (STR), "ilp32") == 0)
break; offload_abi = OFFLOAD_ABI_ILP32;
} else
fatal_error (input_location,
"unrecognizable argument of option " STR);
}
#undef STR
}
struct obstack argv_obstack; struct obstack argv_obstack;
obstack_init (&argv_obstack); obstack_init (&argv_obstack);
obstack_ptr_grow (&argv_obstack, driver); obstack_ptr_grow (&argv_obstack, driver);
obstack_ptr_grow (&argv_obstack, "-xlto"); obstack_ptr_grow (&argv_obstack, "-xlto");
obstack_ptr_grow (&argv_obstack, target_ilp32 ? "-m32" : "-m64"); switch (offload_abi)
{
case OFFLOAD_ABI_LP64:
obstack_ptr_grow (&argv_obstack, "-m64");
break;
case OFFLOAD_ABI_ILP32:
obstack_ptr_grow (&argv_obstack, "-m32");
break;
default:
gcc_unreachable ();
}
obstack_ptr_grow (&argv_obstack, "-S"); obstack_ptr_grow (&argv_obstack, "-S");
for (int ix = 1; ix != argc; ix++) for (int ix = 1; ix != argc; ix++)
...@@ -1039,7 +1063,7 @@ main (int argc, char **argv) ...@@ -1039,7 +1063,7 @@ main (int argc, char **argv)
/* PR libgomp/65099: Currently, we only support offloading in 64-bit /* PR libgomp/65099: Currently, we only support offloading in 64-bit
configurations. */ configurations. */
if (!target_ilp32) if (offload_abi == OFFLOAD_ABI_LP64)
{ {
ptx_name = make_temp_file (".mkoffload"); ptx_name = make_temp_file (".mkoffload");
obstack_ptr_grow (&argv_obstack, "-o"); obstack_ptr_grow (&argv_obstack, "-o");
......
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