Build Procedure
Michael Elizabeth Chastain
<mec@duracef.shout.net>
Sat 18 Nov 1995

Copyright 1995 Michael Chastain
Licensed under the Gnu Public License, Version 2



=== Requirements

Linux 1.3.42
    Earlier versions of 1.3.X will have problems compiling.
    Later versions might, too!
    1.2.X won't compile at all.
    -Runs- on any version, just won't compile.

g++ 2.6.3
    This will probably work with g++ 2.7.0 or 2.7.1.
    If you have 2.7.0 or 2.7.1, please do a 'script', then a 'make -k',
	then 'exit', then mail me the 'typescript' file.
    'mec' uses no g++ libraries -- not even streams.

a.out format executables
    Target executables must be a.out.
    I am planning for ELF support.
    'mec' probably builds and runs fine as ELF.
    I am interested in reports of building/running as ELF.



=== Build

make



=== OS Model

'mec' has tables and code that describe the ioctl requests, system
calls, and data structures provided by the OS:

    RiLineLix.cc	Request-ioctl lines.
    ScLineLix.cc	System call lines.
    TySegEnumLix.cc	Types of segments.

These tables are sensitive to the exact kernel version.

Source compatibility: if you are building 'mec' with an earlier or later
kernel, you are likely to get 'undefined symbol' errors in the tables.
Simply remove the offending lines until it builds.

You could also install the kernel source for the recommended kernel,
and then change 'mec-cc-lix' to use '-I' to find '<asm/*.h>' and
'<linux/*.h>' in the places you want them.

Whatever way you build 'mec', it can trace and replay only the features
known to it at the time it was compiled.

Binary compatibility: you can run 'mec' on any Linux version, although I
haven't tried anything earlier than 1.2.8.

It's best to replay on a target system running the same kernel version
as the trace system.  Big differences will make a difference: trace
files made on 1.2.X will not replay on 1.3.X, and vice versa (this is
due to a change made in 1.3.2 in stack layout after 'execve').  A small
difference in version numbers usually won't matter.  But beware:
occasionally there are quiet differences in ioctl interfaces, and
sometimes even system call interfaces!
