Go to file
Teemu Torma c404fea226 Thread-safe EH support for pthreads, DCE threads and Solaris threads.
Thu Dec 11 20:42:18 1997  Teemu Torma  <tot@trema.com>

	Thread-safe EH support for pthreads, DCE threads and Solaris threads.

	* integrate.c (expand_inline_function): If the inline fn uses eh
	context, make sure that the current fn has one.
	* toplev.c (rest_of_compilation): Call emit_eh_context.
	* except.c (use_eh_context): New fn.
	(get_eh_context_once): New fn.
	(call_get_eh_context): New fn.
	(emit_eh_context): New fn.
	(get_eh_context): Call either get_eh_context_once or
	call_get_eh_context, depending on what we have.
	(get_dynamic_handler_chain): Call get_eh_context_once.
	* except.h: Prototypes for fns above.
	* optabs.c (get_eh_context_libfunc): Removed.
	(init_optabs): Don't initialize it.
	* expr.h (get_eh_context_libfunc): Removed.
	* rtl.h, rtl.c: New reg_note REG_EH_CONTEXT.
	* config/pa/pa.h (CPP_SPEC): Support for -threads.
	* config/pa/pa-hpux10.h (LIB_SPEC): Ditto.
	* config/pa/t-pa (MULTILIB_OPTIONS, MULTILIB_DIRNAMES):
	New multilib for -threads.
	* config/sparc/t-sol2: Added multilibs for -threads and
	made -pthreads alias to it.
	* config/sparc/sol2.h (CPP_SPEC, LIB_SPEC):
	Added -threads and -pthreads options.
	* libgcc-thr.h: New file.
	* libgcc2.c: (__get_cpp_eh_context): Removed.
	(struct cpp_eh_context): Removed.
	(struct eh_context): Replaced cpp_eh_context with generic language
	specific pointer.
	(__get_eh_info): New function.
	(__throw): Check eh_context::info.
	(__sjthrow): Ditto.
	* libgcc2.c: Include libgcc-thr.h.
	(new_eh_context, __get_eh_context,
	eh_pthread_initialize, eh_context_initialize, eh_context_static,
	eh_context_specific, eh_context_free): New functions.
	(get_eh_context, eh_context_key): New variables.
	(__sjthrow, __sjpopnthrow, __eh_pcnthrow, __throw): Use
	get_eh_context to get the context.
	(longjmp): Move the declaration inside
	#ifdef DONT_USE_BUILTIN_SETJMP.
	* frame.c: Include libgcc-thr.h.
	(object_mutex): Mutex to protect the object list.
	(find_fde, __register_frame, __register_frame_table,
	__deregister_frame): Hold the lock while accessing objects.
	* except.h (get_eh_context): Declare.
	* except.c (current_function_ehc): Define.
	(current_function_dhc, current_function_dcc): Removed.
	(get_eh_context): New function.
	(get_dynamic_handler_chain): Use get_eh_context.
	(get_saved_pc_ref): Ditto.
	(get_dynamic_cleanup_chain): Removed references to
	current_function_dcc.
	(save_eh_status, restore_eh_status): Save and restore
	current_function_ehc instead.
	* optabs.c (get_eh_context_libfunc): New variable.
	(init_optabs): Initialize it.
	* expr.h: Declare get_eh_context_libfunc.
	* function.h (struct function): Replaced dhc and dcc with ehc.
	* except.c (get_saved_pc_ref): New functions.
	(eh_saved_pc_rtx, eh_saved_pc): Deleted.
	(expand_internal_throw_indirect): Use get_saved_pc_ref() instead
	of eh_saved_pc.
	(end_eh_unwinder): Likewise.
	(init_eh): Remove initialization of eh_saved_pc.
	* optabs.c (get_saved_pc_libfunc): New variable.
	(init_optabs): Initialize it.
	* expr.h: Declare get_saved_pc_libfunc.
	* except.h (eh_saved_pc_rtx): Deleted.
	(get_saved_pc_ref): Declared.

	From Scott Snyder <snyder@d0sgif.fnal.gov>:
	* libgcc2.c (__get_saved_pc): New.
	(__eh_type, __eh_pc): Deleted.
	(__eh_pcnthrow): Use __get_saved_pc() instead of __eh_pc.
	(__get_dynamic_handler_chain): Move __dynamic_handler_chain inside
	this fcn.

From-SVN: r17053
1997-12-11 23:54:37 -05:00
config More stuff from Uli. 1997-09-16 10:11:13 -06:00
etc Makefile.in: Add --no-split argument to avoid creating files with names longer than 14... 1997-11-21 20:36:36 -07:00
gcc Thread-safe EH support for pthreads, DCE threads and Solaris threads. 1997-12-11 23:54:37 -05:00
include Initial revision 1997-08-21 18:57:35 -04:00
INSTALL Fix thinko. 1997-12-09 12:20:43 -07:00
libiberty typo in last delta. 1997-12-04 22:55:31 -07:00
libio Bring over from changes from devo. 1997-12-11 11:46:55 -07:00
libstdc++ bastring.h: Move closer to the draft standard implementation of basic_string by adding 3... 1997-12-07 05:41:01 -05:00
texinfo release branch changes from 11-27 snapshot to egcs-1.0. 1997-12-05 15:13:17 -07:00
xiberty Initial revision 1997-08-21 18:57:35 -04:00
.cvsignore * .cvsignore (*-install): Remove. 1997-09-04 09:49:02 -06:00
ChangeLog release branch changes from 11-27 snapshot to egcs-1.0. 1997-12-05 15:13:17 -07:00
config-ml.in Initial revision 1997-08-21 18:57:35 -04:00
config.guess config.guess (alpha stuff): Merge with FSF to avoid incorrect guesses. 1997-11-26 16:54:57 -07:00
config.sub * config.sub: Accept 'amigados' for backward compatability. 1997-09-10 15:18:25 -06:00
configure release branch changes from 11-27 snapshot to egcs-1.0. 1997-12-05 15:13:17 -07:00
configure.in Bring in changes from release branch (egcs_ss_971127). 1997-12-01 10:45:00 -07:00
COPYING Initial revision 1997-08-21 18:57:35 -04:00
COPYING.LIB Initial revision 1997-08-21 18:57:35 -04:00
install-sh Initial revision 1997-08-21 18:57:35 -04:00
ltconfig Initial revision 1997-08-21 18:57:35 -04:00
ltmain.sh Initial revision 1997-08-21 18:57:35 -04:00
Makefile.in Makefile.in (INSTALL_TARGET_CROSS): Define. 1997-12-02 10:53:36 -07:00
missing Initial revision 1997-08-21 18:57:35 -04:00
mkinstalldirs Initial revision 1997-08-21 18:57:35 -04:00
move-if-change Initial revision 1997-08-21 18:57:35 -04:00
mpw-build.in Initial revision 1997-08-21 18:57:35 -04:00
mpw-config.in Initial revision 1997-08-21 18:57:35 -04:00
mpw-configure Initial revision 1997-08-21 18:57:35 -04:00
mpw-install ignored by import 1997-08-21 19:14:36 -04:00
mpw-README Initial revision 1997-08-21 18:57:35 -04:00
README Initial revision 1997-08-21 18:57:35 -04:00
symlink-tree Initial revision 1997-08-21 18:57:35 -04:00
ylwrap Initial revision 1997-08-21 18:57:35 -04:00

		   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.