Annotation of coherent/d/bin/load/Changes, revision 1.1.1.1

1.1       root        1: /usr/src/ld/Changes 1/25/90
                      2: 
                      3: Thu Jan 25 15:26:27 1990 PST
                      4: pass2.c
                      5:        Executables built by the Inetco loader fail with a segmentation
                      6:        violation when one of the linked objects ends with an odd-sized
                      7:        segment.  Because relocation and symbol segments follow the
                      8:        code and data segments, this happens only when a module contains
                      9:        no external symbols and defines an odd-sized last segment.
                     10:        For the source foo.c module containing the single line
                     11:                static char c[] = "12";
                     12:        cc creates an object foo.o with PRVD segment of size 4 (not 3),
                     13:        but it writes only the 3 data bytes '1', '2', '\0' to it.
                     14:        Since no BSS, symbol or relocation segments follow, the object ends
                     15:        after the '\0'.  Similary for a source
                     16:                static f() { int i; i++ }
                     17:        which creates a PRVI segment of length 16 with 15 data bytes.
                     18:        This bug could be fixed either in the compiler output writer
                     19:        n2/i8086/outcoh.c or in the loader.  I choose the latter approach,
                     20:        changing the code which copies segments in pass2.c.  In the process,
                     21:        I made the code vastly more efficient.
                     22: Makefile
                     23:        In CFLAGS, changed -DBREADBOX=$BREADBOX to -DBREADBOX=$(BREADBOX).
                     24:        The old version was a mistake which produced -DBREADBOX=READBOX
                     25:        during compilations rather than -DBREADBOX=16384.
                     26: 
                     27: Thu Mar 29 10:35:01 1990 PST
                     28: main.c
                     29:        Removed RCS statics (including Inetco copyright) and recompiled.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.