mirror of
https://github.com/rui314/mold.git
synced 2024-12-28 19:04:27 +03:00
temporary
This commit is contained in:
parent
36e901d800
commit
a0a17117cb
41
main.cc
41
main.cc
@ -972,7 +972,10 @@ static int daemonize(char **argv) {
|
|||||||
|
|
||||||
if (listen(sock, 0) == -1)
|
if (listen(sock, 0) == -1)
|
||||||
error("listen failed: " + std::string(strerror(errno)));
|
error("listen failed: " + std::string(strerror(errno)));
|
||||||
|
return sock;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int wait_for_client(int sock) {
|
||||||
fd_set rfds;
|
fd_set rfds;
|
||||||
FD_ZERO(&rfds);
|
FD_ZERO(&rfds);
|
||||||
FD_SET(sock, &rfds);
|
FD_SET(sock, &rfds);
|
||||||
@ -1229,11 +1232,6 @@ int main(int argc, char **argv) {
|
|||||||
if (config.output == "")
|
if (config.output == "")
|
||||||
error("-o option is missing");
|
error("-o option is missing");
|
||||||
|
|
||||||
tbb::global_control tbb_cont(tbb::global_control::max_allowed_parallelism,
|
|
||||||
config.thread_count);
|
|
||||||
|
|
||||||
std::function<void()> on_complete;
|
|
||||||
|
|
||||||
if (!config.preload) {
|
if (!config.preload) {
|
||||||
int conn = socket(AF_UNIX, SOCK_STREAM, 0);
|
int conn = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||||
if (conn == -1)
|
if (conn == -1)
|
||||||
@ -1257,8 +1255,27 @@ int main(int argc, char **argv) {
|
|||||||
close(conn);
|
close(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.fork && !config.preload)
|
// Preload input files
|
||||||
|
int sock = -1;
|
||||||
|
if (config.preload)
|
||||||
|
sock = daemonize(argv);
|
||||||
|
|
||||||
|
tbb::global_control tbb_cont(tbb::global_control::max_allowed_parallelism,
|
||||||
|
config.thread_count);
|
||||||
|
|
||||||
|
std::function<void()> on_complete;
|
||||||
|
|
||||||
|
if (config.preload) {
|
||||||
|
preloading = true;
|
||||||
|
read_input_files(file_args);
|
||||||
|
|
||||||
|
int conn = wait_for_client(sock);
|
||||||
|
dup2(recv_fd(conn), STDOUT_FILENO);
|
||||||
|
dup2(recv_fd(conn), STDERR_FILENO);
|
||||||
|
on_complete = [=]() { write(conn, (char []){1}, 1); };
|
||||||
|
} else if (config.fork) {
|
||||||
on_complete = fork_child();
|
on_complete = fork_child();
|
||||||
|
}
|
||||||
|
|
||||||
signal(SIGINT, sigint_handler);
|
signal(SIGINT, sigint_handler);
|
||||||
|
|
||||||
@ -1273,18 +1290,6 @@ int main(int argc, char **argv) {
|
|||||||
for (std::string_view arg : config.version_script)
|
for (std::string_view arg : config.version_script)
|
||||||
parse_version_script(std::string(arg));
|
parse_version_script(std::string(arg));
|
||||||
|
|
||||||
// Preload input files
|
|
||||||
if (config.preload) {
|
|
||||||
int conn = daemonize(argv);
|
|
||||||
|
|
||||||
preloading = true;
|
|
||||||
read_input_files(file_args);
|
|
||||||
|
|
||||||
dup2(recv_fd(conn), STDOUT_FILENO);
|
|
||||||
dup2(recv_fd(conn), STDERR_FILENO);
|
|
||||||
on_complete = [=]() { write(conn, (char []){1}, 1); };
|
|
||||||
}
|
|
||||||
|
|
||||||
// Parse input files
|
// Parse input files
|
||||||
{
|
{
|
||||||
ScopedTimer t("parse");
|
ScopedTimer t("parse");
|
||||||
|
Loading…
Reference in New Issue
Block a user