Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.compilers > #1692

Re: Self compiling compiler

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>

Show all headers | View raw


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


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