Binutils with MCST patches
Go to file
Pedro Alves 1ad3de988d [Linux] Avoid refetching core-of-thread if thread hasn't run
Hacking the gdb.threads/attach-many-short-lived-threads.exp test to
spawn thousands of threads instead of dozens, I saw GDB having trouble
keeping up with threads being spawned too fast, when it tried to stop
them all.  This was because while gdb is doing that, it updates the
thread list to make sure no new thread has sneaked in that might need
to be paused.  It does this a few times until it sees no-new-threads
twice in a row.  The thread listing update itself is not that
expensive, however, in the Linux backend, updating the threads list
calls linux_common_core_of_thread for each LWP to record on which core
each LWP was last seen running, which opens/reads/closes a /proc file
for each LWP which becomes expensive when you need to do it for
thousands of LWPs.

perf shows gdb in linux_common_core_of_thread 44% of the time, in the
stop_all_threads -> update_thread_list path in this use case.

This patch simply makes linux_common_core_of_thread avoid updating the
core the thread is bound to if the thread hasn't run since the last
time we updated that info.  This makes linux_common_core_of_thread
disappear into the noise in the perf report.

gdb/ChangeLog:
2016-05-24  Pedro Alves  <palves@redhat.com>

	PR gdb/19828
	* linux-nat.c (linux_resume_one_lwp_throw): Clear the LWP's core
	field.
	(linux_nat_update_thread_list): Don't fetch the core if already
	known.
2016-05-24 14:48:57 +01:00
bfd Automatic date update in version.in 2016-05-24 00:00:18 +00:00
binutils Prevent a run time segmentation fault when stripping a corrupt binary. 2016-05-18 15:21:16 +01:00
config
cpu
elfcpp
etc
gas MIPS/GAS: Treat local jump relocs the same no matter if REL or RELA 2016-05-24 14:11:50 +01:00
gdb [Linux] Avoid refetching core-of-thread if thread hasn't run 2016-05-24 14:48:57 +01:00
gold Don't allow COPY relocations for protected symbols. 2016-05-19 15:05:03 -07:00
gprof Regenerate configure 2016-05-09 17:24:30 +09:30
include [ARC] Update instruction type and delay slot info. 2016-05-23 17:41:54 +02:00
intl
ld MIPS/GAS: Treat local jump relocs the same no matter if REL or RELA 2016-05-24 14:11:50 +01:00
libdecnumber
libiberty
opcodes [ARC] Update instruction type and delay slot info. 2016-05-23 17:41:54 +02:00
readline
sim Add support for FMLA (by element) to AArch64 sim. 2016-05-06 10:35:33 +01:00
texinfo
zlib Regenerate configure 2016-05-09 17:24:30 +09:30
.cvsignore
.gitattributes
.gitignore
COPYING
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
COPYING3
COPYING3.LIB
ChangeLog Sync config.guess and config.sub with FSF GCC mainline versions 2016-05-23 11:42:17 +01:00
MAINTAINERS
Makefile.def
Makefile.in
Makefile.tpl
README
README-maintainer-mode
compile
config-ml.in
config.guess Sync config.guess and config.sub with FSF GCC mainline versions 2016-05-23 11:42:17 +01:00
config.rpath
config.sub Sync config.guess and config.sub with FSF GCC mainline versions 2016-05-23 11:42:17 +01:00
configure
configure.ac
depcomp
djunpack.bat
install-sh
libtool.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
setup.com
src-release.sh
symlink-tree
ylwrap

README

		   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.