зеркало из https://github.com/github/ruby.git
mjit.c: eliminate -save-temps flag
in a new variable cc_common_args. `cflags=-save-temps=obj` makes MJIT fail like: https://rubyci.org/logs/www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20181203T095000Z.log.html.gz This rubyci specifies -save-temps=obj in CFLAGS to use update-deps, and the flag is harmful when we want to use -pipe flag. mjit_worker.c: prefer cc_common_args over CC_COMMON_ARGS git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66164 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
edbac1b986
Коммит
60989daa1b
14
mjit.c
14
mjit.c
|
@ -640,6 +640,19 @@ mjit_init(struct mjit_options *opts)
|
|||
#endif
|
||||
cc_path = CC_COMMON_ARGS[0];
|
||||
verbose(2, "MJIT: CC defaults to %s", cc_path);
|
||||
cc_common_args = xmalloc(sizeof(CC_COMMON_ARGS));
|
||||
memcpy(cc_common_args, CC_COMMON_ARGS, sizeof(CC_COMMON_ARGS));
|
||||
#if MJIT_CFLAGS_PIPE
|
||||
{ /* eliminate a flag incompatible with `-pipe` */
|
||||
size_t i, j;
|
||||
for (i = 0, j = 0; i < sizeof(CC_COMMON_ARGS) / sizeof(char *); i++) {
|
||||
if (CC_COMMON_ARGS[i] && strncmp("-save-temps", CC_COMMON_ARGS[i], strlen("-save-temps")) == 0)
|
||||
continue; /* skip -save-temps flag */
|
||||
cc_common_args[j] = CC_COMMON_ARGS[i];
|
||||
j++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
tmp_dir = system_tmpdir();
|
||||
verbose(2, "MJIT: tmp_dir is %s", tmp_dir);
|
||||
|
@ -826,6 +839,7 @@ mjit_finish(int close_handle_p)
|
|||
|
||||
xfree(header_file); header_file = NULL;
|
||||
#endif
|
||||
xfree(cc_common_args); cc_common_args = NULL;
|
||||
xfree(tmp_dir); tmp_dir = NULL;
|
||||
xfree(pch_file); pch_file = NULL;
|
||||
|
||||
|
|
|
@ -215,6 +215,8 @@ static VALUE valid_class_serials;
|
|||
|
||||
/* Used C compiler path. */
|
||||
static const char *cc_path;
|
||||
/* Used C compiler flags. */
|
||||
static const char **cc_common_args;
|
||||
/* Name of the precompiled header file. */
|
||||
static char *pch_file;
|
||||
/* The process id which should delete the pch_file on mjit_finish. */
|
||||
|
@ -238,10 +240,11 @@ static char *libruby_pathflag;
|
|||
#if defined(__GNUC__) && \
|
||||
(!defined(__clang__) || \
|
||||
(defined(__clang__) && (defined(__FreeBSD__) || defined(__GLIBC__))))
|
||||
#define GCC_PIC_FLAGS "-Wfatal-errors", "-fPIC", "-shared", "-w", \
|
||||
"-pipe",
|
||||
# define GCC_PIC_FLAGS "-Wfatal-errors", "-fPIC", "-shared", "-w", "-pipe",
|
||||
# define MJIT_CFLAGS_PIPE 1
|
||||
#else
|
||||
#define GCC_PIC_FLAGS /* empty */
|
||||
# define GCC_PIC_FLAGS /* empty */
|
||||
# define MJIT_CFLAGS_PIPE 0
|
||||
#endif
|
||||
|
||||
static const char *const CC_COMMON_ARGS[] = {
|
||||
|
@ -741,7 +744,7 @@ make_pch(void)
|
|||
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);
|
||||
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");
|
||||
|
@ -785,7 +788,7 @@ compile_c_to_o(const char *c_file, const char *o_file)
|
|||
# ifdef __clang__
|
||||
files[4] = pch_file;
|
||||
# endif
|
||||
args = form_args(5, CC_COMMON_ARGS, CC_CODEFLAG_ARGS, files, CC_LIBS, CC_DLDFLAGS_ARGS);
|
||||
args = form_args(5, cc_common_args, CC_CODEFLAG_ARGS, files, CC_LIBS, CC_DLDFLAGS_ARGS);
|
||||
if (args == NULL)
|
||||
return FALSE;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче