public inbox for elfutils@sourceware.org
 help / color / mirror / Atom feed
From: Ulf Hermann <ulf.hermann@qt.io>
To: Mark Wielaard <mark@klomp.org>,
	"McAllister, Colin" <Colin.McAllister@garmin.com>
Cc: "elfutils-devel@sourceware.org" <elfutils-devel@sourceware.org>
Subject: Re: Building Elfutils with Mingw32
Date: Sat, 16 Sep 2023 09:17:44 +0200	[thread overview]
Message-ID: <c23192dc-22a0-a067-cb50-948fb46aea57@qt.io> (raw)
In-Reply-To: <20230915210056.GA5558@gnu.wildebeest.org>

Hi,

I'll answer some questions here:

> Given that Windows doesn't even use ELF why would you even want elfutils on
> such a platform?

There is a large number of developers who build software for ELF-based 
embedded systems on windows and test/debug/profile/deploy it over some 
network or USB connection. Those people want to have elfutils for their 
debugging and profiling. They want to use elfutils on the host (the 
windows box) because that is much faster.

Those people are not me and I'm not talking about sanity.

Qt Creator (the Qt IDE) has a profiling view that takes data produced by 
perf and paints pretty graphs from that. The actual perf data is 
recorded on the target (potentially an embedded device), then streamed 
or copied to the host, then run through perfparser to produce meaningful 
stack traces. perfparser uses elfutils for the actual work. That work is 
quite heavy. A sample frequency of 1000Hz is not uncommon. Few embedded 
device can do that "on the side" while still producing meaningful 
results for the actual task. Finally, Qt Creator takes the processed 
data and displays a UI to explore it. There is another UI for the same 
data, "Hotspot" by Milian, but I don't know if that can run on windows.

> And why aren't people simply using cygwin for such a port?

If we built perfparser with cygwin, the people who use it would also 
need cygwin. People building embedded devices generally have a colorful 
mess of different tools, none of which you can rely on in advance. I 
haven't considered shipping cygwin with perfparser. Is that actually 
possible? It looks like it needs some installation procedure I would 
have to burden the user with.

> Without it you don't even have a normal POSIX like system.

Indeed, but we have gnulib and the various adapters I wrote myself (some 
of which should probably be upstreamed to gnulib). That deals with the 
problem. We get binaries that only depend on a basic windows system.

This comes at the price of using the most basic C library that Microsoft 
offers, msvcrt.dll. In order to use the elfutils libraries built that 
way you have to jump through the open/close and malloc/free hoops we 
provide in eu_compat.lib. However, that is only a problem for perfparser 
or other software linked against elfutils, not for the user.

> And when using mingw do people still use a normal gcc compiler (to cross
> build)? Or is the goal to build with some alternative windows
> compiler?

The gold standard would indeed be the ability to build it with Microsoft 
compilers and their associated C libraries. Then we could get  rid of 
the malloc/free and open/close hacks. However, given that Microsoft 
compilers have a rather different idea of C than elfutils, I didn't go 
there. Building it with gcc is more overhead for me when producing the 
binary. I cannot cleanly integrate it into the Qt Creator build system 
since that assumes it can use the same compiler for everything. However, 
for the users it doesn't make a difference.

> But if there is consensus (among the Windows hackers) about using one
> common target for the port then maybe we should have an official
> branch on sourceware?

Such a thing would certainly be welcome from my point of view!

> Also there is a mingw container setup on builder.sourceware.org which
> we might use for doing CI on the port?
> https://sourceware.org/cgit/builder/tree/builder/containers/Containerfile-fedora-mingw

I'll have to look at it in detail, but that also sounds great! So far 
there is no automated CI. I just run the tests manually when I change 
anything.

best regards,
Ulf

  reply	other threads:[~2023-09-16  7:17 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-13 21:08 McAllister, Colin
2023-09-13 21:34 ` Frank Ch. Eigler
2023-09-14  6:34 ` Ulf Hermann
2023-09-14 19:44   ` McAllister, Colin
2023-09-15  6:57     ` Ulf Hermann
2023-09-15 15:42       ` McAllister, Colin
2023-09-15 21:00     ` Mark Wielaard
2023-09-16  7:17       ` Ulf Hermann [this message]
2023-09-16  7:33         ` Ulf Hermann
2023-11-01 13:05           ` Mark Wielaard
2023-09-16 19:24         ` Milian Wolff
2023-09-18 13:18         ` McAllister, Colin
2023-09-18 15:45           ` Frank Ch. Eigler
2023-11-01 13:15           ` Mark Wielaard

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=c23192dc-22a0-a067-cb50-948fb46aea57@qt.io \
    --to=ulf.hermann@qt.io \
    --cc=Colin.McAllister@garmin.com \
    --cc=elfutils-devel@sourceware.org \
    --cc=mark@klomp.org \
    /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).