annotate etc/gnuserv.README @ 4921:17362f371cc2

add more byte-code assertions and better failure output -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-02-03 Ben Wing <ben@xemacs.org> * alloc.c (Fmake_byte_code): * bytecode.h: * lisp.h: * lread.c: * lread.c (readevalloop): * lread.c (Fread): * lread.c (Fread_from_string): * lread.c (read_list_conser): * lread.c (read_list): * lread.c (vars_of_lread): * symbols.c: * symbols.c (Fdefine_function): Turn on the "compiled-function annotation hack". Implement it properly by hooking into Fdefalias(). Note in the docstring to `defalias' that we do this. Remove some old broken code and change code that implemented the old kludgy way of hooking into the Lisp reader into bracketed by `#ifdef COMPILED_FUNCTION_ANNOTATION_HACK_OLD_WAY', which is not enabled. Also enable byte-code metering when DEBUG_XEMACS -- this is a form of profiling for computing histograms of which sequences of two bytecodes are used most often. * bytecode-ops.h: * bytecode-ops.h (OPCODE): New file. Extract out all the opcodes and declare them using OPCODE(), a bit like frame slots and such. This way the file can be included multiple times if necessary to iterate multiple times over the byte opcodes. * bytecode.c: * bytecode.c (NUM_REMEMBERED_BYTE_OPS): * bytecode.c (OPCODE): * bytecode.c (assert_failed_with_remembered_ops): * bytecode.c (READ_UINT_2): * bytecode.c (READ_INT_1): * bytecode.c (READ_INT_2): * bytecode.c (PEEK_INT_1): * bytecode.c (PEEK_INT_2): * bytecode.c (JUMP_RELATIVE): * bytecode.c (JUMP_NEXT): * bytecode.c (PUSH): * bytecode.c (POP_WITH_MULTIPLE_VALUES): * bytecode.c (DISCARD): * bytecode.c (UNUSED): * bytecode.c (optimize_byte_code): * bytecode.c (optimize_compiled_function): * bytecode.c (Fbyte_code): * bytecode.c (vars_of_bytecode): * bytecode.c (init_opcode_table_multi_op): * bytecode.c (reinit_vars_of_bytecode): * emacs.c (main_1): * eval.c (funcall_compiled_function): * symsinit.h: Any time we change either the instruction pointer or the stack pointer, assert that we're going to move it to a valid location. This should catch failures right when they occur rather than sometime later. This requires that we pass in another couple of parameters into some functions (only with error-checking enabled, see below). Also keep track, using a circular queue, of the last 100 byte opcodes seen, and when we hit an assert failure during byte-code execution, output the contents of the queue in a nice readable fashion. This requires that bytecode-ops.h be included a second time so that a table mapping opcodes to the name of their operation can be constructed. This table is constructed in new function reinit_vars_of_bytecode(). Everything in the last two paras happens only when ERROR_CHECK_BYTE_CODE. Add some longish comments describing how the arrays that hold the stack and instructions, and the pointers used to access them, work. * gc.c: Import some code from my `latest-fix' workspace to mark the staticpro's in order from lowest to highest, rather than highest to lowest, so it's easier to debug when something goes wrong. * lisp.h (abort_with_message): Renamed from abort_with_msg(). * symbols.c (defsymbol_massage_name_1): * symbols.c (defsymbol_nodump): * symbols.c (defsymbol): * symbols.c (defkeyword): * symeval.h (DEFVAR_SYMVAL_FWD_OBJECT): Make the various calls to staticpro() instead call staticpro_1(), passing in the name of the C var being staticpro'ed, so that it shows up in staticpro_names. Otherwise staticpro_names just has 1000+ copies of the word `location'.
author Ben Wing <ben@xemacs.org>
date Wed, 03 Feb 2010 08:01:55 -0600
parents 807b51903ed4
children 73eef12660cd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2437
807b51903ed4 [xemacs-hg @ 2004-12-14 09:56:38 by stephent]
stephent
parents: 428
diff changeset
1 **** WARNING ****
807b51903ed4 [xemacs-hg @ 2004-12-14 09:56:38 by stephent]
stephent
parents: 428
diff changeset
2 This file was never meant to be proper documentation, and now is bitrotted.
807b51903ed4 [xemacs-hg @ 2004-12-14 09:56:38 by stephent]
stephent
parents: 428
diff changeset
3 See the file gnuserv.1 and/or the sources for more information.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 ****
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 NOTE: This version of gnuserv has some enhancements over the original version
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 distributed by Andy Norman. See the end of this file for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 ****
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 To install, copy gnuserv.el into a directory on your GNU Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 load-path. Edit Makefile and change INCLUDES to point to the src
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 directory underneath your emacs source tree (or make yourself a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 config.h file in this directory by hand, starting with config.h.proto
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 as a first cut) and type:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 make
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 This should compile the server and the two clients. Now put gnuserv,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 gnuclient and gnudoit in a directory that users have in their executable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 search paths.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 File : Description
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 ----------------------------------------------------------------
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 Makefile : Makefile to build gnuserv
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 LICENSE : GNU General License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 README : this file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 gnuclient.c : editor client C code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 gnudoit.c : eval client C code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 gnuserv.1 : gnuserv man page
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 gnuserv.c : server C code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 gnuserv.el : server LISP code for GNU Emacs V18,V19,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 XEmacs/Lucid Emacs and Epoch V4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 gnuserv.h : server/client C header file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 gnuslib.c : server/client C common code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 src.x11fns.diff : diffs to src/x11fns to raise window (for emacs18)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 config.h.proto : Use this file as the starting point for constructing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 a config.h if you don't have access to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 one that was used when compiling your emacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 If you find *any* problems at all with gnuserv, or you can think of better
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 ways of doing things (especially remote file access), please e-mail me at one
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 of the addresses below.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 ange@hplb.hpl.hp.com
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 ange@hpl.hp.co.uk
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 ...!hplabs!hplb!ange
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 ...!ukc!hplb!ange
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 This version of gnuserv has been enhanced by a number of people, including
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 Bob Weiner <weiner@mot.com>, Darrell Kindred <dkindred@cmu.edu>,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 Arup Mukherjee <arup@cmu.edu>, and Ben Wing <ben@xemacs.org>. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 modifications are basically as follows:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 Bob Weiner:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 Integrated support for several versions of emacs. New requests
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 from gnuclient cause the creation of new frames. Removed the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 restriction on the length of the string passed to gnudoit. Later
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 added a server-done-function variable to control what happens to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 a buffer after the user is done with it. Mods to each of the .c
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 files as well as gnuserv.el.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 Darrell Kindred:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 Removed the restriction on the length of the string returned from
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 a gnudoit request, for the purposes of unix/internet sockets.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 Allow the gnudoit request to be read from stdin if it's not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 specified on the command line. Internet sockets are not opened
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 unless the GNU_SECURE variable is specified. Unix sockets are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 created in a protected ancestral directory, since many Unix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 variants don't enforce socket permissions properly. An internet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 socket accepting local connections is not opened by default
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 because this would make it possibly to override all security on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 the unix socket. See the man page for details. Unless told to do
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 otherwise by a command-line argument, gnuclient and gnudoit now
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 try to open a unix socket by default if support for them was
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 compiled in. Mods to each of the .c files and to gnuserv.el.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 Arup Mukherjee:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 Removed the restriction on the length of the string returned from
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 a gnudoit request, for the purposes of sysv ipc. Added support
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 for the "gnuserv-frame" variable allowing you to specify control
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 whether or not new screens are created in response to each
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 gnuclient request. Made a number of other bugfixes and changes to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 the lisp part of the code, allowing gnuserv to work properly with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 newer emacs versions. All the changes are listed in the changelog
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 at the beginning of gnuserv.el. Also fixed up the man page to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 reflect the new gnuserv features. On HPs, stopped the "-r"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 parameter (in gnuclient) from defaulting to /net/<remotehost>.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 Not all installations want this, and it's much harder to debug
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 when things stop working. Changed the man page to reflect this.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 Mods to each of the .c files, gnuserv.el and gnuserv.1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 More recently - added Xauth(1X11)-style authentication to gnuserv (as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 of version 2.1). Although the code is completely new, credit is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 due to Richard Caley <rjc@cogsci.edinburgh.ac.uk> ... he wrote a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 prototype implementation from which I borrowed the basic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 mechanism for hooking Xauth into gnuserv.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 Ben Wing:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 Added gnuattach.