binutils-gdb modified for the FreeChainXenon project
Find a file
Pedro Alves 2c9d78274a Fix Windows sharing_input_terminal hang
After running a number of programs under Windows gdb and detaching
them, I typed run in gdb, and got a hang, here:

 (top-gdb) bt
 #0  sharing_input_terminal (pid=4672) at /home/pedro/gdb/src/gdb/mingw-hdep.c:388
 #1  0x00007ff71a2d8678 in sharing_input_terminal (inf=0x23bf23dafb0) at /home/pedro/gdb/src/gdb/inflow.c:269
 #2  0x00007ff71a2d887b in child_terminal_save_inferior (self=0x23bf23de060) at /home/pedro/gdb/src/gdb/inflow.c:423
 #3  0x00007ff71a2c80c0 in inf_child_target::terminal_save_inferior (this=0x23bf23de060) at /home/pedro/gdb/src/gdb/inf-child.c:111
 #4  0x00007ff71a429c0f in target_terminal_is_ours_kind (desired_state=target_terminal_state::is_ours_for_output) at /home/pedro/gdb/src/gdb/target.c:1037
 #5  0x00007ff71a429e02 in target_terminal::ours_for_output () at /home/pedro/gdb/src/gdb/target.c:1094
 #6  0x00007ff71a2ccc8e in post_create_inferior (from_tty=0) at /home/pedro/gdb/src/gdb/infcmd.c:245
 #7  0x00007ff71a2cd431 in run_command_1 (args=0x0, from_tty=0, run_how=RUN_NORMAL) at /home/pedro/gdb/src/gdb/infcmd.c:502
 #8  0x00007ff71a2cd58b in run_command (args=0x0, from_tty=0) at /home/pedro/gdb/src/gdb/infcmd.c:527

The problem is that the loop around GetConsoleProcessList looped
forever, because there were exactly 10 processes to return.
GetConsoleProcessList's documentation says:

  If the buffer is too small to hold all the valid process identifiers,
  the return value is the required number of array elements. The
  function will have stored no identifiers in the buffer. In this
  situation, use the return value to allocate a buffer that is large
  enough to store the entire list and call the function again.

In this case, the buffer wasn't too small, it was exactly the right
size, so we should have broken out of the loop.  We didn't due to a
"<" check that should have been "<=".  That is fixed by this patch.

Approved-By: Tom Tromey <tom@tromey.com>
Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Change-Id: I14e4909f2ac2fa83d0d9b6e64418b5831ac4e4e3
2023-08-23 15:40:48 +01:00
bfd kvx: fix 32-bit build 2023-08-23 12:38:58 +09:30
binutils Correct PR number in previous delta 2023-08-23 11:40:59 +01:00
config mh-mingw: drop unused BOOT_CXXFLAGS variable 2023-08-12 10:24:26 +09:30
contrib
cpu sim --enable-cgen-maint 2023-08-19 12:41:32 +09:30
elfcpp Add markers for the 2.41 branch 2023-07-03 11:12:15 +01:00
etc Update year range in gprofng copyright notices 2023-01-01 23:26:30 +10:30
gas kvx: O_pseudo_fixup 2023-08-23 11:03:52 +09:30
gdb Fix Windows sharing_input_terminal hang 2023-08-23 15:40:48 +01:00
gdbserver gdbserver: Reinstall software single-step breakpoints in resume_stopped_resumed_lwps 2023-08-11 20:54:09 -07:00
gdbsupport gdb: add gdb::make_unique function 2023-08-23 09:50:30 +01:00
gnulib Add missing backslash to update-gnulib.sh 2023-06-21 08:47:05 -06:00
gold Revert "2.41 Release sources" 2023-08-02 12:06:23 +01:00
gprof regen config 2023-08-12 10:27:57 +09:30
gprofng gprofng: Use execvp instead of execv 2023-08-17 13:15:10 -07:00
include aarch64: Improve naming conventions for A and R-profile architecture 2023-08-22 16:46:33 +01:00
intl regen config 2023-08-12 10:27:57 +09:30
ld kvx: fix 32-bit build 2023-08-23 12:38:58 +09:30
libbacktrace regen config 2023-08-12 10:27:57 +09:30
libctf regen config 2023-08-12 10:27:57 +09:30
libdecnumber regen config 2023-08-12 10:27:57 +09:30
libiberty Synchromize libiberty sources with master version in gcc repository 2023-06-26 15:47:15 +01:00
libsframe regen config 2023-08-12 10:27:57 +09:30
opcodes aarch64: Improve naming conventions for A and R-profile architecture 2023-08-22 16:46:33 +01:00
readline [readline] Fix double free in _rl_scxt_dispose 2023-05-28 10:17:57 +02:00
sim sim: bpf: remove negi, neg32i insns 2023-08-21 10:07:25 -07:00
texinfo
zlib regen config 2023-08-12 10:27:57 +09:30
.cvsignore
.editorconfig Add top-level .editorconfig file 2022-01-28 08:25:42 -05:00
.gitattributes binutils-gdb/git: highlight whitespace errors in source files 2022-07-25 14:35:41 +01:00
.gitignore
ar-lib
ChangeLog Revert "2.41 Release sources" 2023-08-02 12:06:23 +01:00
compile
config-ml.in MSP430: Add -fno-exceptions multilib 2023-08-12 10:24:26 +09:30
config.guess kvx: New port. 2023-08-16 14:22:54 +01:00
config.rpath
config.sub kvx: New port. 2023-08-16 14:22:54 +01:00
configure generated bfd files, and kvx regen 2023-08-17 21:44:04 +09:30
configure.ac kvx: New port. 2023-08-16 14:22:54 +01:00
COPYING
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
COPYING3
COPYING3.LIB
depcomp
djunpack.bat
install-sh
libtool.m4 FDPIC: Handle arm*-*-uclinuxfdpiceabi in configure scripts 2023-08-12 10:25:06 +09:30
ltgcc.m4
ltmain.sh Do not use HAVE_DOS_BASED_FILE_SYSTEM for Cygwin. 2023-08-12 10:25:06 +09:30
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
MAINTAINERS
Makefile.def gccrs: Add gcc-check-target check-rust 2023-08-12 10:25:06 +09:30
Makefile.in regen config 2023-08-12 10:27:57 +09:30
Makefile.tpl toplevel: Substitute GDCFLAGS instead of using CFLAGS 2023-08-12 10:27:44 +09:30
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
README-maintainer-mode Note that at least dejagnu version 1.5.3 is required in order to be ale to run the testsuites. 2022-10-04 10:54:19 +01:00
SECURITY.txt Add a SECURITY.txt file describing the GNU Binutils' project's stance on security related bugs. 2023-04-20 16:52:11 +01:00
setup.com
src-release.sh Revert "2.41 Release sources" 2023-08-02 12:06:23 +01:00
symlink-tree
test-driver
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.