#cc -n -s -o dump dump.o
cc -O -S dump.c
as -l -o dump.o dump.s
-ld -bD=0x2800 -L/lib /lib/crt0.o -o dump -n -s -m1 -u -w dump.o -lc
+
+# use link order from aslink library search
+#ld -bD=0x2800 -L/lib /lib/crt0.o -o dump -n -s -m1 -u -w dump.o -lc
+
+# use link order determined by l.sh
+ld -bD=0x2800 -L/lib /lib/crt0.o -o dump -n -s -m1 -u -w dump.o \
+../libc/printf.o \
+../libc/doprnt.o \
+../libc/ffltpr.o \
+../libc/strout.o \
+../libc/flsbuf.o \
+../libc/data.o \
+../libc/cuexit.o \
+../libc/atoi.o \
+../libc/atol.o \
+../libc/ctime.o \
+../libc/malloc.o \
+../libc/isatty.o \
+../libc/l3.o \
+../libc/stty.o \
+../libc/close.o \
+../libc/creat.o \
+../libc/ioctl.o \
+../libc/lseek.o \
+../libc/open.o \
+../libc/read.o \
+../libc/sbrk.o \
+../libc/sync.o \
+../libc/time.o \
+../libc/write.o \
+../libc/almul.o \
+../libc/cerror.o \
+../libc/ldiv.o \
+../libc/lmul.o \
+../libc/lrem.o \
+../libc/csv.o
+
/usr/bin/python3 aout_hex2bin.py dumpI.ihx dumpD.ihx dump <dump.map
chmod a+x dump
bss_size = D_size - data_size
bss_size = (bss_size + 1) & ~1
-entry_point = intelhexI.start_addr['EIP'] | 1
+entry_point = intelhexI.start_addr['EIP']
hdr = [0] * HEADER_SIZE
hdr[0] = NMAGIC & 0xff
hdr[0xb] = (entry_point >> 8) & 0xff
# 0xc, 0xd = pad (unsupported)
# 0xe, 0xf = relflg (unsupported)
+hdr[0xe] = 1
intelhexI.padding = 0
text = list(intelhexI.tobinstr(0, text_size - 1))
--- /dev/null
+symbol 0000 start
+symbol 003c _main
+symbol 034c _pass
+symbol 0422 _icat
+symbol 04c2 _indir
+symbol 058a _mark
+symbol 064a _add
+symbol 0714 _dump
+symbol 079e _dmpspc
+symbol 07d8 _bitmap
+symbol 0840 _spclrec
+symbol 087e _dsrch
+symbol 093a _nullf
+symbol 0942 _bread
+symbol 099c _CLR
+symbol 09b0 _taprec
+symbol 0a02 _tapsrec
+symbol 0a44 _flusht
+symbol 0b7c _otape
+symbol 0bc8 _prdate
+symbol 0bfa _getitim
+symbol 0cc8 _putitim
+symbol 0e0a _est
+symbol 0eae _bmapest
+symbol 0efe _printf
+symbol 0f2a __doprnt
+symbol 1176 pfloat
+symbol 1176 pgen
+symbol 1176 pscien
+symbol 1180 __strout
+symbol 1240 __flsbuf
+symbol 1322 _fflush
+symbol 1374 __cleanu
+symbol 1392 _fclose
+symbol 13f4 _exit
+symbol 1402 _atoi
+symbol 1462 _atol
+symbol 14fe _ctime
+symbol 1514 _localti
+symbol 163e _gmtime
+symbol 17d6 _asctime
+symbol 1896 _dysize
+symbol 1900 _malloc
+symbol 1a3a _free
+symbol 1a58 _realloc
+symbol 1b02 _isatty
+symbol 1b2a _ltol3
+symbol 1b4e _l3tol
+symbol 1b72 _stty
+symbol 1b8c _gtty
+symbol 1ba6 _close
+symbol 1bbc _creat
+symbol 1bda _ioctl
+symbol 1c00 _lseek
+symbol 1c2c _open
+symbol 1c4a _read
+symbol 1c6c _sbrk
+symbol 1c96 _brk
+symbol 1cb6 _sync
+symbol 1cc0 _time
+symbol 1cd8 _ftime
+symbol 1cea _write
+symbol 1d0c almul
+symbol 1d38 cerror
+symbol 1d46 ldiv
+symbol 1df8 lmul
+symbol 1e1e lrem
+symbol 1ebc csv
+symbol 1ec8 cret
+symbol 2002 _density
+symbol 21ac __iob
+symbol 224c __lastbu
+symbol 22f6 _mpxip
+symbol 22f8 _spcl
+symbol 2550 _sblock
+symbol 2708 _itab
+symbol 4708 _clrmap
+symbol 6708 _dirmap
+symbol 8708 _nodmap
+symbol a708 _disk
+symbol a70a _tape
+symbol a70c _increm
+symbol a70e _incno
+symbol a710 _uflag
+symbol a712 _fi
+symbol a714 _to
+symbol a716 _ino
+symbol a718 _nsubdir
+symbol a71a _ntape
+symbol a71c _nadded
+symbol a71e _dadded
+symbol a720 _tsize
+symbol a724 _esize
+symbol a728 _asize
+symbol a72c _tblock
+symbol cf2c _tdaddr
+symbol cf7c _trecno
+symbol cf7e __sobuf
+symbol d17e __sibuf
+symbol d37e _errno
+symbol d380 _environ
+symbol d3ba _end
--- /dev/null
+#!/bin/sh
+git checkout ../../../bin/as ../../../bin/cc ../../../bin/ld ../../../lib/c[012] ../../../lib/*crt0.o ../../../lib/libc.a c/cvopt
+if ! test -d ../../../tmp
+then
+ ln -s /tmp ../../../tmp
+fi
+export APOUT_ROOT=`pwd`/../../..
+export PATH=`pwd`/../../../bin:`pwd`
+# set up to produce a trace of object files linked
+cc -n -s -O ld.c -o ld
+mv ld ../../../bin
+# link something
+cc -n -s -O dump.c -o dump
* link editor
*/
+#include <stdio.h> /* Nick */
#include <signal.h>
#include "sys/types.h"
#include "sys/stat.h"
nund++;
printf("%.8s\n", sp->sname);
}
+ fprintf(stderr, "symbol %04x %.8s\n", sp->svalue, sp->sname);
continue;
case EXTERN+ABS:
default:
+ fprintf(stderr, "symbol %04x %.8s\n", sp->svalue, sp->sname);
continue;
case EXTERN+TEXT:
sp->svalue += torigin;
+ fprintf(stderr, "symbol %04x %.8s\n", sp->svalue, sp->sname);
continue;
case EXTERN+DATA:
sp->svalue += dorigin;
+ fprintf(stderr, "symbol %04x %.8s\n", sp->svalue, sp->sname);
continue;
case EXTERN+BSS:
sp->svalue += borigin;
+ fprintf(stderr, "symbol %04x %.8s\n", sp->svalue, sp->sname);
continue;
case EXTERN+COMM:
sp->stype = EXTERN+BSS;
sp->svalue += corigin;
+ fprintf(stderr, "symbol %04x %.8s\n", sp->svalue, sp->sname);
continue;
}
if (sflag || xflag)
mkfsym(s)
char *s;
{
+ fprintf(stderr, "mkfsym %s\n", s);
if (sflag || xflag)
return;