Re: Readline on Windows (WAS: Re: [PATCH v2 0/2] MI: Add new command -complete]

Jan Vrany
2019-03-12T11:43:11Z

On Mon, 2019-03-11 at 16:43 +0200, Eli Zaretskii wrote:
> > From: Jan Vrany <jan.vrany@fit.cvut.cz>
> > Cc: palves@redhat.com, tom@tromey.com, gdb@sourceware.org
> > Date: Mon, 11 Mar 2019 08:45:55 +0000
> >
> > Ah, sorry, I should have been more clear. I meant that it does not work
> > for me EVEN when on standard console so I doubted it would work better over
> > pipes much better.
> >
> > All the problems I described do happen when using standard console and never
> > worked no matter which GDB I used (compiled by myself or by some third party).
>
> That's strange. Do you have some curses library installed, and if so,
> does it get linked into GDB?

No, this is the output of ldd:

ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7fffba1c0000)
KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7fffb9520000)
KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll (0x7fffb6630000)
msvcrt.dll => /c/WINDOWS/System32/msvcrt.dll (0x7fffb9770000)
USER32.dll => /c/WINDOWS/System32/USER32.dll (0x7fffb95e0000)
win32u.dll => /c/WINDOWS/System32/win32u.dll (0x7fffb7520000)
GDI32.dll => /c/WINDOWS/System32/GDI32.dll (0x7fffb7d70000)
gdi32full.dll => /c/WINDOWS/System32/gdi32full.dll (0x7fffb7280000)
msvcp_win.dll => /c/WINDOWS/System32/msvcp_win.dll (0x7fffb6590000)
ucrtbase.dll => /c/WINDOWS/System32/ucrtbase.dll (0x7fffb7420000)
WS2_32.dll => /c/WINDOWS/System32/WS2_32.dll (0x7fffb9a50000)
RPCRT4.dll => /c/WINDOWS/System32/RPCRT4.dll (0x7fffb77e0000)
libgmp-10.dll => /mingw64/bin/libgmp-10.dll (0x6acc0000)
libiconv-2.dll => /mingw64/bin/libiconv-2.dll (0x66000000)
libintl-8.dll => /mingw64/bin/libintl-8.dll (0x61cc0000)
ADVAPI32.dll => /c/WINDOWS/System32/ADVAPI32.dll (0x7fffb7e70000)
sechost.dll => /c/WINDOWS/System32/sechost.dll (0x7fffb9460000)
libexpat-1.dll => /mingw64/bin/libexpat-1.dll (0x68f40000)
liblzma-5.dll => /mingw64/bin/liblzma-5.dll (0x63cc0000)
libpython3.7m.dll => /mingw64/bin/libpython3.7m.dll (0x62300000)
libwinpthread-1.dll => /mingw64/bin/libwinpthread-1.dll (0x64940000)
VERSION.dll => /c/WINDOWS/SYSTEM32/VERSION.dll (0x7fffa9ac0000)
>

> > > Do you perhaps have a ~/.inputrc file, or some other local
> > > customization, which might affect how Readline works?
> >
> > Not that I know of. There's no ".inputrc" nor "inputrc" on my Windows filesystem.
> > I believe GDB compiled by myself uses the readline that comes with GDB.
>
> The .inputrc file doesn't come with Readline, it is a user init file
> that you yourself can create to customize how input through readline
> works.

I know. I just double checked that there is none accidentally created.

>
> I compile GDB myself as well, also with its bundled readline, I use
> GDB in the Windows console all the time, and I have no problems like
> the ones you describe. Very strange.

Strange indeed - but it is also good because this means that it "can".

So I dug deeper and found --with-system-readline option (funny enough
configure --help does not mention it) and voila, with this config
it works well. This is ldd from "good" GDB:

ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7fffba1c0000)
KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7fffb9520000)
KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll (0x7fffb6630000)
msvcrt.dll => /c/WINDOWS/System32/msvcrt.dll (0x7fffb9770000)
USER32.dll => /c/WINDOWS/System32/USER32.dll (0x7fffb95e0000)
win32u.dll => /c/WINDOWS/System32/win32u.dll (0x7fffb7520000)
GDI32.dll => /c/WINDOWS/System32/GDI32.dll (0x7fffb7d70000)
gdi32full.dll => /c/WINDOWS/System32/gdi32full.dll (0x7fffb7280000)
msvcp_win.dll => /c/WINDOWS/System32/msvcp_win.dll (0x7fffb6590000)
ucrtbase.dll => /c/WINDOWS/System32/ucrtbase.dll (0x7fffb7420000)
WS2_32.dll => /c/WINDOWS/System32/WS2_32.dll (0x7fffb9a50000)
RPCRT4.dll => /c/WINDOWS/System32/RPCRT4.dll (0x7fffb77e0000)
libgmp-10.dll => /mingw64/bin/libgmp-10.dll (0x6acc0000)
libexpat-1.dll => /mingw64/bin/libexpat-1.dll (0x68f40000)
libiconv-2.dll => /mingw64/bin/libiconv-2.dll (0x66000000)
libintl-8.dll => /mingw64/bin/libintl-8.dll (0x61cc0000)
ADVAPI32.dll => /c/WINDOWS/System32/ADVAPI32.dll (0x7fffb7e70000)
sechost.dll => /c/WINDOWS/System32/sechost.dll (0x7fffb9460000)
liblzma-5.dll => /mingw64/bin/liblzma-5.dll (0x63cc0000)
libreadline7.dll => /mingw64/bin/libreadline7.dll (0x6e780000)
libwinpthread-1.dll => /mingw64/bin/libwinpthread-1.dll (0x64940000)
libpython3.7m.dll => /mingw64/bin/libpython3.7m.dll (0x62300000)
VERSION.dll => /c/WINDOWS/SYSTEM32/VERSION.dll (0x7fffa9ac0000)
libtermcap-0.dll => /mingw64/bin/libtermcap-0.dll (0x6ac40000)

One problem less. Not that it explains why bundled readline
does not work for me and does for you, but at least I can produce more usable
gdb on Windows. Thanks a lot!

Jan