From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Richard Stallman Newsgroups: gmane.emacs.devel Subject: Re: CANNOT_DUMP support Date: Wed, 13 Feb 2008 23:42:47 -0500 Message-ID: References: <200802110433.m1B4XrXw017599@sallyv1.ics.uci.edu> <033e133313f724a1896d8077e2f73d0d@lagorda> <87y79p4xk2.fsf@uwakimon.sk.tsukuba.ac.jp> <87y79o7i7u.fsf@uwakimon.sk.tsukuba.ac.jp> Reply-To: rms@gnu.org NNTP-Posting-Host: lo.gmane.org Content-Type: text/plain; charset=ISO-8859-15 X-Trace: ger.gmane.org 1202964247 6850 80.91.229.12 (14 Feb 2008 04:44:07 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 14 Feb 2008 04:44:07 +0000 (UTC) Cc: dann@ics.uci.edu, chris@web.workinglinux.com, monnier@iro.umontreal.ca, emacs-devel@gnu.org To: "Stephen J. Turnbull" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Feb 14 05:44:29 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1JPVxU-0006hi-Fa for ged-emacs-devel@m.gmane.org; Thu, 14 Feb 2008 05:44:28 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JPVx0-0003de-P7 for ged-emacs-devel@m.gmane.org; Wed, 13 Feb 2008 23:43:58 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JPVvv-0002tM-3y for emacs-devel@gnu.org; Wed, 13 Feb 2008 23:42:51 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JPVvs-0002sI-SW for emacs-devel@gnu.org; Wed, 13 Feb 2008 23:42:50 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JPVvs-0002sB-Lh for emacs-devel@gnu.org; Wed, 13 Feb 2008 23:42:48 -0500 Original-Received: from fencepost.gnu.org ([140.186.70.10]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JPVvs-0001Rp-Gp for emacs-devel@gnu.org; Wed, 13 Feb 2008 23:42:48 -0500 Original-Received: from rms by fencepost.gnu.org with local (Exim 4.67) (envelope-from ) id 1JPVvr-0005l9-K4; Wed, 13 Feb 2008 23:42:47 -0500 In-reply-to: <87y79o7i7u.fsf@uwakimon.sk.tsukuba.ac.jp> (stephen@xemacs.org) X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:89046 Archived-At: The basic idea is that we load up Emacs with its Lisp, then start with the GC roots and "wire up" (for technical details, ask Olivier) the objects referenced with offsets, then write them to a file. At runtime, loading the file does the reverse. I'm not sure how this is done, whether the portable dumper actually traces all the offsets and converts them to appropriate pointers at runtime, or whether the system loader does this as part of its normal ELF relocation link editing. Whatever, it's not as fast as unexec, but it's real fast. Lisp objects are just part of what unexec dumps. There is other malloc data, and lots of global variables that don't point to Lisp objects. How do you handle them?