Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.compilers > #1692
| From | Kaz Kylheku <545-066-4921@kylheku.com> |
|---|---|
| Newsgroups | comp.compilers |
| Subject | Re: Self compiling compiler |
| Date | 2016-04-03 10:34 -0400 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <16-04-001@comp.compilers> (permalink) |
| References | <16-03-013@comp.compilers> <16-03-016@comp.compilers> |
On 2016-03-31, Nils M Holm <nmh@t3x.org> wrote: > ERSHC <ershc123@nyc.rr.com> wrote: >> I'd like to teach an undergraduate class based on the Thompson hack >> (see Ken Thompson's Turing Award lecture). I don't want to write a >> "whole" compiler, so need a compiler that can compile itself, >> preferably one that runs under Linux and is reasonably small. Can >> anyone point me to something more appropriate than gcc (which is far >> from small)? > > For something really small, check out Lindberg's Foogol. Here's a version > I converted to C89: http://www.t3x.org/files/foogol5.shar.Z > > For something more complete, but still much simpler than GCC, have a look > at SubC: http://www.t3x.org/subc/index.html There's also a book describing > its internals: http://www.t3x.org/reload/index.html (Yes, I'm the author!) > > There are various other small compilers, from very simple ones to > multi-platform optimizing compilers on my home page. Feel free to > look around! What matters here is not the compiler size but: - The compiler has to be self-bootstrapping. The Thompson trick can't be perpetuated on something which strictly requires another compiler in order to build, and is then not re-compiled with itself. The end goal of the trick is not to have any traces of that trick in any piece of source code; the result is a rogue compiler binary which replicates the rogue code when it is used to compile itself, and which alters some additional program, like a security-sensitive utility (su, login, ..) - how easy is it, within the compiler's framework, to do this: - insert a piece of code which recognizes a static source code structure (perhaps as an abstract-syntax-tree-level pattern match) so that it can say "hey, I'm compiling myself: that parse is a piece of *me*!" or "hey, I'm compiling the login program!". - obtain the above AST-recognizing code not as C source, but as as a piece of AST material which the compiler itself can insert into a parse. - obtain, as an AST, some rogue code which the malicious compiler inserts into the parse of the target program such as login, as well as the rogue code which perpetuates all of this. If the compiler is small, but its data structures and internal API's are a dog's breakfast, it will be tedious to do. (Mind you GCC is big *and* a dog's breakfast.).
Back to comp.compilers | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Self compiling compiler ERSHC <ershc123@nyc.rr.com> - 2016-03-31 03:54 +0000
Re: Self compiling compiler Kaz Kylheku <545-066-4921@kylheku.com> - 2016-03-31 15:01 +0000
Re: Self compiling compiler Thomas Goorden <thomas.goorden@gmail.com> - 2016-03-31 17:50 +0200
Re: Self compiling compiler "Nils M Holm" <nmh@t3x.org> - 2016-03-31 19:41 +0200
Re: Self compiling compiler Kaz Kylheku <545-066-4921@kylheku.com> - 2016-04-03 10:34 -0400
Re: Self compiling compiler Nils M Holm <nmh@t3x.org> - 2016-04-04 12:54 +0000
Re: Self compiling compiler Thomas David Rivers <rivers@dignus.com> - 2016-03-31 14:16 -0400
Re: Self compiling compiler alexfrunews@gmail.com - 2016-03-31 12:27 -0700
Re: Self compiling compiler Jens Kallup <jkallup@web.de> - 2016-03-31 21:29 +0200
Re: Self compiling compiler ERSHC <ershc123@nyc.rr.com> - 2016-04-02 20:58 +0000
Re: Self compiling compiler federation2005@netzero.com - 2016-05-25 16:41 -0700
Re: Self compiling compiler federation2005@netzero.com - 2016-05-28 14:49 -0700
Re: Self compiling compiler rockbrentwood@gmail.com - 2016-08-22 15:56 -0700
csiph-web