From: Simon Marchi <simon.marchi@efficios.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH] gdb: recognize 64 bits Windows executables as Cygwin osabi
Date: Sat, 7 Mar 2020 11:51:08 -0500 [thread overview]
Message-ID: <4bd435cd-b06d-e0fc-70a9-9a8a18d73987@efficios.com> (raw)
In-Reply-To: <83zhcsa8my.fsf@gnu.org>
On 2020-03-07 3:09 a.m., Eli Zaretskii wrote:
>> From: Simon Marchi <simon.marchi@efficios.com>
>> Cc: Simon Marchi <simon.marchi@efficios.com>
>> Date: Fri, 6 Mar 2020 23:17:42 -0500
>>
>> When I load the 32 bits binary in my GNU/Linux-hosted GDB, the osabi is
>> correctly recognized as "Cygwin":
>>
>> $ ./gdb --data-directory=data-directory -nx test_32
>> (gdb) show osabi
>> The current OS ABI is "auto" (currently "Cygwin").
>
> Why is this correct? Your debuggee is a MinGW program, not a Cygwin
> program. The OS ABI should say "MinGW" or perhaps even "MS-Windows"
> (since MinGW programs are just native Windows executables).
As I said, I know that it's not absolutely correct. But having the native
executable be detected as "Cygwin" seems relatively more correct compared
to the current situation. The context is the following:
https://sourceware.org/ml/gdb-patches/2020-03/msg00151.html
Currently, loading the 64-bits .exe in a GNU/Linux-hosted GDB ends up calling
the svr4 libraries code, which is plain wrong. By using the Cygwin osabi,
at least the right shared libraries functions are used.
I agree with what you suggest below, but I think that the current patch is
still a step forward and improves things.
> I'm guessing that this is some historical left-over: only Cygwin took
> care of returning an OS ABI name at some point in the past, and we
> never bothered to augment that for MinGW programs. I suggest that we
> do TRT now, as long as we are on this subject.
I think it makes sense and would avoid some confusion. I was surprised
to see the Cygwin osabi used when debugging a native Windows program.
> The difference between a Cygwin program and a native Windows program
> is that the former has a dependency on the Cygwin DLL (or MSYS DLL, if
> we want to support MSYS/MSYS2 executables). Is it possible to make
> this distinction where we decide on the OS ABI?
One question is, do we need this distinction at all? Let's look at
where the Cygwin osabi comes into play. When the GDB_OSABI_CYGWIN
osabi is detected, the "i386_cygwin_init_abi" function from
i386-cygwin-tdep.c is called.
In this function, I see nothing Cygwin-specific, all that is in there
seems to apply equally to native Windows executables and Cygwin
executables. So it seems like we could just rename the "Cygwin" osabi
to "MS-Windows". Except that would be a breaking change, as the
command "set osabi Cygwin" wouldn't work anymore.
So what we can do is add an "MS-Windows" osabi and make "Cygwin" and
"MS-Windows" functionally equivalent. Any "pei-i386" or "pei-x86-64"
executable would be detected as "MS-Windows".
We could try to detect whether the binary is using the cygwin or msys
dll and if so apply the Cygwin osabi, but that would be just for
aesthetic purposes, as the two osabis would be functionally equivalent
(at least for now). It can still be useful to avoid confusion: if we
have a Cygwin osabi, but Cygwin binaries are not recognized to use the
Cygwin osabi, it just looks like a bug even if it isn't. I would need
to dig into BFD and the PE/coff format to see how we could find this
information.
If we do such a change, I would like it to be done on top of the current
patch, as to not mix concerns.
> In any case, I see no reason to say that "pei-i386" executables are
> necessarily Cygwin programs, the default should be "MS-Windows".
Agreed.
Simon
next parent reply other threads:[~2020-03-07 16:51 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20200307041742.31158-1-simon.marchi@efficios.com>
[not found] ` <83zhcsa8my.fsf@gnu.org>
2020-03-07 16:51 ` Simon Marchi [this message]
2020-03-07 17:45 ` Eli Zaretskii
2020-03-07 18:16 ` Simon Marchi
2020-03-08 14:05 ` Jon Turney
2020-03-10 15:16 ` Eli Zaretskii
2020-03-10 15:45 ` Simon Marchi
2020-03-14 15:35 ` Jon Turney
2020-03-09 15:39 ` Jon Turney
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=4bd435cd-b06d-e0fc-70a9-9a8a18d73987@efficios.com \
--to=simon.marchi@efficios.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.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