public inbox for cygwin-developers@cygwin.com
 help / color / mirror / Atom feed
From: Mark Geisert <mark@maxrnd.com>
To: Cygwin <cygwin@cygwin.com>, cygwin-developers@cygwin.com
Subject: Re: Build spends a long time in "mkimport".
Date: Sun, 11 Oct 2020 00:24:57 -0700	[thread overview]
Message-ID: <fd7836b6-f428-6c18-3656-5123a47197f5@maxrnd.com> (raw)
In-Reply-To: <af9f360a0a782f3c4db698e9f4584d16@mail.kylheku.com>

Kaz Kylheku (Cygwin) via Cygwin wrote:
> Hi All,
> 
> When building the Cygwin DLL, this single step takes almost ten minutes:
> 
>    ../../.././winsup/cygwin/mkimport --cpu=i686 --ar=ar --as=as --nm=nm 
> --objcopy=objcopy \
>    --replace=atexit= --replace=timezone= --replace=uname=uname_x 
> --replace=__xdrrec_getrec=
> 
>    [ .. SNIP ... ]
> 
>    --replace=truncate=_truncate64 libcygwin.a cygdll.a _cygwin_crt0_common.o \
>    atexit.o cygwin_attach_dll.o cygwin_crt0.o dll_entry.o dll_main.o dso_handle.o \
>    libcmain.o premain0.o premain1.o premain2.o premain3.o pseudo-reloc-dummy.o
> 
> What's puzzling is that there is very CPU activity during this time. It's launching
> some objcopy commands.
> 
> Is there some documentation that provides an overview of what exactly this does,
> other than studying its perl source code?
> 
> Maybe it can be sped up?
> 
> I'm going to have to cycle quite a few times on some changes, so this is frustrating.

Hi Kaz,
I'm redirecting this to the cygwin-developers list as it's a Cygwin build issue. 
Please follow up there.

I've looked at .../winsup/cygwin/mkimport for the same reason as you -- it takes 
forever on my Windows machines.  But I don't know enough perl to make any changes.

Near the end of mkimport there's a loop over all the "--replace" args, 
essentially.  For each one there are two system() calls launching two objcopy 
processes to do something.  This is much slower on Cygwin than it would be 
cross-building from Linux, for example.

One could parallelize the operations on a multicore machine.  But probably better 
would be figuring out, if possible, how to do the objcopy operations in one pass, 
over two calls if necessary.

PTC, as we've always said :-)

..mark

       reply	other threads:[~2020-10-11  7:25 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <af9f360a0a782f3c4db698e9f4584d16@mail.kylheku.com>
2020-10-11  7:24 ` Mark Geisert [this message]
2020-10-11 16:52   ` Ken Brown
2020-10-11 17:14   ` Jon Turney
2020-10-13 10:30     ` Corinna Vinschen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fd7836b6-f428-6c18-3656-5123a47197f5@maxrnd.com \
    --to=mark@maxrnd.com \
    --cc=cygwin-developers@cygwin.com \
    --cc=cygwin@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).