Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
9f0ae8c9
Commit
9f0ae8c9
authored
Jan 25, 2023
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tools: Move signal masking to the common make_temp_file() helper.
parent
ca398e27
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
21 additions
and
96 deletions
+21
-96
configure
configure
+0
-47
configure.ac
configure.ac
+0
-10
config.h.in
include/config.h.in
+0
-6
tools.h
tools/tools.h
+13
-0
winegcc.c
tools/winegcc/winegcc.c
+8
-33
No files found.
configure
View file @
9f0ae8c9
...
...
@@ -20077,17 +20077,6 @@ _ACEOF
;;
esac
ac_fn_c_check_type
"
$LINENO
"
"sigset_t"
"ac_cv_type_sigset_t"
"#include <sys/types.h>
#include <signal.h>
"
if
test
"x
$ac_cv_type_sigset_t
"
=
xyes
then
:
printf
"%s
\n
"
"#define HAVE_SIGSET_T 1"
>>
confdefs.h
fi
ac_fn_c_check_type
"
$LINENO
"
"request_sense"
"ac_cv_type_request_sense"
"#include <linux/cdrom.h>
"
if
test
"x
$ac_cv_type_request_sense
"
=
xyes
...
...
@@ -20129,42 +20118,6 @@ printf "%s\n" "#define HAVE_STRUCT_XINPGEN 1" >>confdefs.h
fi
{
printf
"%s
\n
"
"
$as_me
:
${
as_lineno
-
$LINENO
}
: checking for sigaddset"
>
&5
printf
%s
"checking for sigaddset... "
>
&6
;
}
if
test
${
wine_cv_have_sigaddset
+y
}
then
:
printf
%s
"(cached) "
>
&6
else
$as_nop
cat
confdefs.h -
<<
_ACEOF
>conftest.
$ac_ext
/* end confdefs.h. */
#include <signal.h>
int
main (void)
{
sigset_t set; sigaddset(&set,SIGTERM);
;
return 0;
}
_ACEOF
if
ac_fn_c_try_link
"
$LINENO
"
then
:
wine_cv_have_sigaddset
=
yes
else
$as_nop
wine_cv_have_sigaddset
=
no
fi
rm
-f
core conftest.err conftest.
$ac_objext
conftest.beam
\
conftest
$ac_exeext
conftest.
$ac_ext
fi
{
printf
"%s
\n
"
"
$as_me
:
${
as_lineno
-
$LINENO
}
: result:
$wine_cv_have_sigaddset
"
>
&5
printf
"%s
\n
"
"
$wine_cv_have_sigaddset
"
>
&6
;
}
if
test
"
$wine_cv_have_sigaddset
"
=
"yes"
then
printf
"%s
\n
"
"#define HAVE_SIGADDSET 1"
>>
confdefs.h
fi
{
printf
"%s
\n
"
"
$as_me
:
${
as_lineno
-
$LINENO
}
: checking whether we can use re-entrant gethostbyname_r Linux style"
>
&5
printf
%s
"checking whether we can use re-entrant gethostbyname_r Linux style... "
>
&6
;
}
if
test
${
wine_cv_linux_gethostbyname_r_6
+y
}
...
...
configure.ac
View file @
9f0ae8c9
...
...
@@ -2058,8 +2058,6 @@ fi
dnl **** Check for types ****
AC_C_INLINE
AC_CHECK_TYPES([sigset_t],,,[#include <sys/types.h>
#include <signal.h>])
AC_CHECK_TYPES([request_sense],,,[#include <linux/cdrom.h>])
AC_CHECK_TYPES([struct xinpgen],,,
...
...
@@ -2084,14 +2082,6 @@ AC_CHECK_TYPES([struct xinpgen],,,
#include <netinet/in_pcb.h>
#endif])
AC_CACHE_CHECK([for sigaddset],wine_cv_have_sigaddset,
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <signal.h>]], [[sigset_t set; sigaddset(&set,SIGTERM);]])],[wine_cv_have_sigaddset=yes],[wine_cv_have_sigaddset=no]))
if test "$wine_cv_have_sigaddset" = "yes"
then
AC_DEFINE(HAVE_SIGADDSET, 1, [Define if sigaddset is supported])
fi
AC_CACHE_CHECK([whether we can use re-entrant gethostbyname_r Linux style],
wine_cv_linux_gethostbyname_r_6,
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],[[
...
...
include/config.h.in
View file @
9f0ae8c9
...
...
@@ -375,18 +375,12 @@
/* Define to 1 if `interface_id' is a member of `sg_io_hdr_t'. */
#undef HAVE_SG_IO_HDR_T_INTERFACE_ID
/* Define if sigaddset is supported */
#undef HAVE_SIGADDSET
/* Define to 1 if `si_fd' is a member of `siginfo_t'. */
#undef HAVE_SIGINFO_T_SI_FD
/* Define to 1 if you have the `sigprocmask' function. */
#undef HAVE_SIGPROCMASK
/* Define to 1 if the system has the type `sigset_t'. */
#undef HAVE_SIGSET_T
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
...
...
tools/tools.h
View file @
9f0ae8c9
...
...
@@ -27,6 +27,7 @@
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
#include <fcntl.h>
#include <time.h>
#include <errno.h>
...
...
@@ -369,7 +370,19 @@ static inline char *make_temp_file( const char *prefix, const char *suffix )
fd
=
open
(
name
,
O_RDWR
|
O_CREAT
|
O_EXCL
,
0600
);
if
(
fd
>=
0
)
{
#ifdef HAVE_SIGPROCMASK
/* block signals while manipulating the temp files list */
sigset_t
mask_set
,
old_set
;
sigemptyset
(
&
mask_set
);
sigaddset
(
&
mask_set
,
SIGHUP
);
sigaddset
(
&
mask_set
,
SIGTERM
);
sigaddset
(
&
mask_set
,
SIGINT
);
sigprocmask
(
SIG_BLOCK
,
&
mask_set
,
&
old_set
);
strarray_add
(
&
temp_files
,
name
);
sigprocmask
(
SIG_SETMASK
,
&
old_set
,
NULL
);
#else
strarray_add
(
&
temp_files
,
name
);
#endif
close
(
fd
);
return
name
;
}
...
...
tools/winegcc/winegcc.c
View file @
9f0ae8c9
...
...
@@ -146,9 +146,6 @@ static const char *output_implib;
static
int
keep_generated
=
0
;
const
char
*
temp_dir
=
NULL
;
struct
strarray
temp_files
=
{
0
};
#ifdef HAVE_SIGSET_T
static
sigset_t
signal_mask
;
#endif
static
const
char
*
bindir
;
static
const
char
*
libdir
;
...
...
@@ -223,22 +220,6 @@ static void exit_on_signal( int sig )
exit
(
1
);
/* this will call the atexit functions */
}
static
char
*
get_temp_file
(
const
char
*
prefix
,
const
char
*
suffix
)
{
char
*
tmp
;
#ifdef HAVE_SIGPROCMASK
sigset_t
old_set
;
/* block signals while manipulating the temp files list */
sigprocmask
(
SIG_BLOCK
,
&
signal_mask
,
&
old_set
);
#endif
tmp
=
make_temp_file
(
prefix
,
suffix
);
#ifdef HAVE_SIGPROCMASK
sigprocmask
(
SIG_SETMASK
,
&
old_set
,
NULL
);
#endif
return
tmp
;
}
static
int
is_pe_target
(
const
struct
options
*
opts
)
{
switch
(
opts
->
target
.
platform
)
...
...
@@ -348,9 +329,9 @@ static struct strarray get_translator(struct options *opts)
static
int
try_link
(
struct
strarray
prefix
,
struct
strarray
link_tool
,
const
char
*
cflags
)
{
const
char
*
in
=
get
_temp_file
(
"try_link"
,
".c"
);
const
char
*
out
=
get
_temp_file
(
"try_link"
,
".out"
);
const
char
*
err
=
get
_temp_file
(
"try_link"
,
".err"
);
const
char
*
in
=
make
_temp_file
(
"try_link"
,
".c"
);
const
char
*
out
=
make
_temp_file
(
"try_link"
,
".out"
);
const
char
*
err
=
make
_temp_file
(
"try_link"
,
".err"
);
struct
strarray
link
=
empty_strarray
;
int
sout
=
-
1
,
serr
=
-
1
;
int
ret
;
...
...
@@ -407,7 +388,7 @@ static struct strarray get_link_args( struct options *opts, const char *output_n
case
PLATFORM_SOLARIS
:
{
char
*
mapfile
=
get
_temp_file
(
output_name
,
".map"
);
char
*
mapfile
=
make
_temp_file
(
output_name
,
".map"
);
const
char
*
align
=
opts
->
section_align
?
opts
->
section_align
:
"0x1000"
;
create_file
(
mapfile
,
0644
,
"text = A%s;
\n
data = A%s;
\n
"
,
align
,
align
);
...
...
@@ -820,7 +801,7 @@ static const char* compile_to_object(struct options* opts, const char* file, con
/* make a copy so we don't change any of the initial stuff */
/* a shallow copy is exactly what we want in this case */
copts
=
*
opts
;
copts
.
output_name
=
get
_temp_file
(
get_basename_noext
(
file
),
".o"
);
copts
.
output_name
=
make
_temp_file
(
get_basename_noext
(
file
),
".o"
);
copts
.
compile_only
=
1
;
copts
.
files
=
empty_strarray
;
strarray_add
(
&
copts
.
files
,
file
);
...
...
@@ -894,8 +875,8 @@ static char *find_static_lib( const char *dll )
static
const
char
*
find_libgcc
(
struct
strarray
prefix
,
struct
strarray
link_tool
)
{
const
char
*
out
=
get
_temp_file
(
"find_libgcc"
,
".out"
);
const
char
*
err
=
get
_temp_file
(
"find_libgcc"
,
".err"
);
const
char
*
out
=
make
_temp_file
(
"find_libgcc"
,
".out"
);
const
char
*
err
=
make
_temp_file
(
"find_libgcc"
,
".err"
);
struct
strarray
link
=
empty_strarray
;
int
sout
=
-
1
,
serr
=
-
1
;
char
*
libgcc
,
*
p
;
...
...
@@ -984,7 +965,7 @@ static const char *build_spec_obj( struct options *opts, const char *spec_file,
strarray_add
(
&
spec_args
,
strmake
(
"--ld-cmd=%s"
,
strarray_tostring
(
tool
,
" "
)));
}
spec_o_name
=
get
_temp_file
(
output_name
,
".spec.o"
);
spec_o_name
=
make
_temp_file
(
output_name
,
".spec.o"
);
if
(
!
is_pe
)
{
if
(
opts
->
pic
)
strarray_add
(
&
spec_args
,
"-fPIC"
);
...
...
@@ -1512,12 +1493,6 @@ int main(int argc, char **argv)
#endif
signal
(
SIGTERM
,
exit_on_signal
);
signal
(
SIGINT
,
exit_on_signal
);
#ifdef HAVE_SIGADDSET
sigemptyset
(
&
signal_mask
);
sigaddset
(
&
signal_mask
,
SIGHUP
);
sigaddset
(
&
signal_mask
,
SIGTERM
);
sigaddset
(
&
signal_mask
,
SIGINT
);
#endif
init_argv0_dir
(
argv
[
0
]
);
/* setup tmp file removal at exit */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment