Refactor mjit_worker command line with C99

Mostly non-constatnt array initializer, and mixed declarations and code.
This commit is contained in:
Takashi Kokubun 2019-07-14 12:53:39 +09:00
Родитель 369ff79394
Коммит 4402c66978
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 6FFC433B12EE23DD
1 изменённых файлов: 17 добавлений и 35 удалений

Просмотреть файл

@ -609,7 +609,6 @@ static int
exec_process(const char *path, char *const argv[])
{
int stat, exit_code = -2;
pid_t pid;
rb_vm_t *vm = WAITPID_USE_SIGCHLD ? GET_VM() : 0;
rb_nativethread_cond_t cond;
@ -618,7 +617,7 @@ exec_process(const char *path, char *const argv[])
rb_native_mutex_lock(&vm->waitpid_lock);
}
pid = start_process(path, argv);
pid_t pid = start_process(path, argv);
for (;pid > 0;) {
pid_t r = vm ? ruby_waitpid_locked(vm, pid, &stat, 0, &cond)
: waitpid(pid, &stat, 0);
@ -670,10 +669,8 @@ remove_so_file(const char *so_file, struct rb_mjit_unit *unit)
static bool
compile_c_to_so(const char *c_file, const char *so_file)
{
int exit_code;
const char *files[] = { NULL, NULL, NULL, NULL, NULL, NULL, "-link", libruby_pathflag, NULL };
char **args;
char *p, *obj_file;
char *p;
// files[0] = "-Fe*.dll"
files[0] = p = alloca(sizeof(char) * (rb_strlen_lit("-Fe") + strlen(so_file) + 1));
@ -684,7 +681,7 @@ compile_c_to_so(const char *c_file, const char *so_file)
// files[1] = "-Fo*.obj"
// We don't need .obj file, but it's somehow created to cwd without -Fo and we want to control the output directory.
files[1] = p = alloca(sizeof(char) * (rb_strlen_lit("-Fo") + strlen(so_file) - rb_strlen_lit(DLEXT) + rb_strlen_lit(".obj") + 1));
obj_file = p = append_lit(p, "-Fo");
char *obj_file = p = append_lit(p, "-Fo");
p = append_str2(p, so_file, strlen(so_file) - rb_strlen_lit(DLEXT));
p = append_lit(p, ".obj");
*p = '\0';
@ -714,12 +711,12 @@ compile_c_to_so(const char *c_file, const char *so_file)
p = append_lit(p, ".pdb");
*p = '\0';
args = form_args(5, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS,
files, CC_LIBS, CC_DLDFLAGS_ARGS);
char **args = form_args(5, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS,
files, CC_LIBS, CC_DLDFLAGS_ARGS);
if (args == NULL)
return false;
exit_code = exec_process(cc_path, args);
int exit_code = exec_process(cc_path, args);
free(args);
if (exit_code == 0) {
@ -745,7 +742,6 @@ compile_c_to_so(const char *c_file, const char *so_file)
static void
make_pch(void)
{
int exit_code;
const char *rest_args[] = {
# ifdef __clang__
"-emit-pch",
@ -753,16 +749,12 @@ make_pch(void)
// -nodefaultlibs is a linker flag, but it may affect cc1 behavior on Gentoo, which should NOT be changed on pch:
// https://gitweb.gentoo.org/proj/gcc-patches.git/tree/7.3.0/gentoo/13_all_default-ssp-fix.patch
GCC_NOSTDLIB_FLAGS
"-o", NULL, NULL,
"-o", pch_file, header_file,
NULL,
};
char **args;
int len = sizeof(rest_args) / sizeof(const char *);
rest_args[len - 2] = header_file;
rest_args[len - 3] = pch_file;
verbose(2, "Creating precompiled header");
args = form_args(3, cc_common_args, CC_CODEFLAG_ARGS, rest_args);
char **args = form_args(3, cc_common_args, CC_CODEFLAG_ARGS, rest_args);
if (args == NULL) {
mjit_warning("making precompiled header failed on forming args");
CRITICAL_SECTION_START(3, "in make_pch");
@ -771,7 +763,7 @@ make_pch(void)
return;
}
exit_code = exec_process(cc_path, args);
int exit_code = exec_process(cc_path, args);
free(args);
CRITICAL_SECTION_START(3, "in make_pch");
@ -791,26 +783,19 @@ make_pch(void)
static bool
compile_c_to_o(const char *c_file, const char *o_file)
{
int exit_code;
const char *files[] = {
"-o", NULL, NULL,
"-o", o_file, c_file,
# ifdef __clang__
"-include-pch", NULL,
"-include-pch", pch_file,
# endif
"-c", NULL
};
char **args;
files[1] = o_file;
files[2] = c_file;
# ifdef __clang__
files[4] = pch_file;
# endif
args = form_args(5, cc_common_args, CC_CODEFLAG_ARGS, files, CC_LIBS, CC_DLDFLAGS_ARGS);
char **args = form_args(5, cc_common_args, CC_CODEFLAG_ARGS, files, CC_LIBS, CC_DLDFLAGS_ARGS);
if (args == NULL)
return false;
exit_code = exec_process(cc_path, args);
int exit_code = exec_process(cc_path, args);
free(args);
if (exit_code != 0)
@ -822,23 +807,20 @@ compile_c_to_o(const char *c_file, const char *o_file)
static bool
link_o_to_so(const char **o_files, const char *so_file)
{
int exit_code;
const char *options[] = {
"-o", NULL,
"-o", so_file,
# ifdef _WIN32
libruby_pathflag,
# endif
NULL
};
char **args;
options[1] = so_file;
args = form_args(6, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS,
options, o_files, CC_LIBS, CC_DLDFLAGS_ARGS);
char **args = form_args(6, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS,
options, o_files, CC_LIBS, CC_DLDFLAGS_ARGS);
if (args == NULL)
return false;
exit_code = exec_process(cc_path, args);
int exit_code = exec_process(cc_path, args);
free(args);
if (exit_code != 0)