Path: utzoo!mnetor!uunet!husc6!bloom-beacon!oberon!sdcrdcf!hplabs!hpda!hpcupt1!hpcuhb!hpindda!vandys From: vandys@hpindda.HP.COM (Andy Valencia) Newsgroups: comp.lang.modula2 Subject: Re: Re: Modula2's godawful IO. Message-ID: <3700001@hpindda.HP.COM> Date: 14 Apr 88 16:35:38 GMT References: <96@lzaz.ATT.COM> Organization: HP Technical Networks, Cupertino, Calif. Lines: 244 >/ hpindda:comp.lang.modula2 / mike@turing.UNM.EDU (Michael I. Bushnell) / 1:18 pm Apr 12, 1988 / >In article <730@mhuxm.UUCP> gak@mhuxm.UUCP (Vincent Hatem) writes: > >On 4.3 BSD on a Vax, I get the following: > >% size doprnt.o >text data bss dec hex >2196 36 0 2232 8b8 > >% size printf.o >text data bss dec hex >40 36 0 76 4c This isn't quite the whole picture; printf() is part of the buffered I/O system, and so quite a bit of junk has to come in with it. What follows shows what comes in on an HP-9000/850 (and perhaps proves that compiler people should be kept on a short leash :->). Here's the poison: ----------------------------------------------------- Script started on Thu Apr 14 09:28:14 1988 $ cat yow.c main(){ printf("Hello, world\n"); } $ cc -O -o yow yow.c $ size yow 15844 + 3720 + 2604 = 22168 $ nm yow Symbols from yow: Name Value Scope Type Subspace $global$ |1073741824|extern|data |$GLOBAL$ $START$ | 4523|extern|priprog|$CODE$ $dp$ |1073741824|extern|data |$GLOBAL$ $ARGV |1073745536|extern|data |$PFA_COUNTER$ $START_RTN$ | 4568|static|code |$CODE$ $UNWIND_START | 17144|extern|code |$UNWIND_START$ $UNWIND_END | 17896|extern|code |$UNWIND_END$ $RECOVER_START | 17896|extern|code |$RECOVER_START$ $RECOVER_END | 17896|extern|code |$RECOVER_END$ $PFA_C_START |1073745544|extern|data |$PFA_COUNTER$ $PFA_C_END |1073745544|extern|data |$PFA_COUNTER_END$ _mcount | 4575|extern|entry |$CODE$ $THISMODULE$ |1073741824|static|data |$DATA$ main | 4587|extern|entry |$CODE$ $THISMODULE$ |1073741840|static|data |$DATA$ printf | 4619|extern|entry |$CODE$ $THISMODULE$ |1073741840|static|data |$DATA$ environ |1073746576|extern|data |$BSS$ _start | 4739|extern|entry |$CODE$ $THISMODULE$ |1073741840|static|data |$DATA$ exit | 4779|extern|entry |$CODE$ $THISMODULE$ |1073741840|static|data |$DATA$ _iob |1073741848|extern|data |$DATA$ <- Buffering system _smbuf |1073746584|extern|data |$BSS$ _bufendtab |1073742808|extern|data |$DATA$ _sibuf |1073747112|extern|data |$BSS$ _sobuf |1073745544|extern|data |$BSS$ _stdbuf |1073743052|extern|data |$DATA$ _lastbuf |1073741840|extern|data |$DATA$ $THISMODULE$ |1073743064|static|data |$DATA$ _lowdigit | 4819|static|entry |$CODE$ _dowrite | 4871|static|entry |$CODE$ _doprnt | 5043|extern|entry |$CODE$ $THISMODULE$ |1073743200|static|data |$DATA$ errno |1073748144|extern|data |$BSS$ _cleanup | 9819|extern|entry |$CODE$ fclose | 10087|extern|entry |$CODE$ _exitcu | 9895|extern|entry |$CODE$ fflush | 10263|extern|entry |$CODE$ _xflsbuf | 10903|extern|entry |$CODE$ _flsbuf | 10415|extern|entry |$CODE$ _wrtchk | 11127|extern|entry |$CODE$ _bufsync | 11707|extern|entry |$CODE$ _findbuf | 11339|extern|entry |$CODE$ $$divide_by_constant| 2051|extern|milli |$MILLICODE$ <- RISC divides $$divI_2 | 2051|extern|milli |$MILLICODE$ are nasty! $$divI_4 | 2067|extern|milli |$MILLICODE$ $$divI_8 | 2083|extern|milli |$MILLICODE$ $$divI_16 | 2099|extern|milli |$MILLICODE$ $$divI_3 | 2115|extern|milli |$MILLICODE$ $neg3 | 2136|static|code |$MILLICODE$ $pos | 2336|static|code |$MILLICODE$ $neg | 2420|static|code |$MILLICODE$ $$divU_3 | 2159|extern|milli |$MILLICODE$ $$divI_5 | 2183|extern|milli |$MILLICODE$ $neg5 | 2200|static|code |$MILLICODE$ $$divU_5 | 2227|extern|milli |$MILLICODE$ $$divI_6 | 2251|extern|milli |$MILLICODE$ $neg6 | 2272|static|code |$MILLICODE$ $$divU_6 | 2299|extern|milli |$MILLICODE$ $$divU_10 | 2323|extern|milli |$MILLICODE$ $pos_for_17 | 2352|static|code |$MILLICODE$ $$divI_10 | 2391|extern|milli |$MILLICODE$ $neg10 | 2408|static|code |$MILLICODE$ $neg_for_17 | 2436|static|code |$MILLICODE$ $$divI_12 | 2479|extern|milli |$MILLICODE$ $neg12 | 2496|static|code |$MILLICODE$ $$divU_12 | 2515|extern|milli |$MILLICODE$ $$divI_15 | 2535|extern|milli |$MILLICODE$ $neg15 | 2548|static|code |$MILLICODE$ $$divU_15 | 2559|extern|milli |$MILLICODE$ $$divI_17 | 2571|extern|milli |$MILLICODE$ $neg17 | 2596|static|code |$MILLICODE$ $$divU_17 | 2623|extern|milli |$MILLICODE$ $u17 | 2632|static|code |$MILLICODE$ $$divI_7 | 2651|extern|milli |$MILLICODE$ $neg7 | 2728|static|code |$MILLICODE$ $7 | 2652|static|code |$MILLICODE$ $pos7 | 2668|static|code |$MILLICODE$ $1 | 2708|static|code |$MILLICODE$ $2 | 2720|static|code |$MILLICODE$ $8 | 2732|static|code |$MILLICODE$ $neg7_shift | 2744|static|code |$MILLICODE$ $3 | 2784|static|code |$MILLICODE$ $4 | 2800|static|code |$MILLICODE$ $$divU_7 | 2811|extern|milli |$MILLICODE$ $$divI_9 | 2835|extern|milli |$MILLICODE$ $neg9 | 2860|static|code |$MILLICODE$ $$divU_9 | 2887|extern|milli |$MILLICODE$ $$divI_14 | 2915|extern|milli |$MILLICODE$ $neg14 | 2924|static|code |$MILLICODE$ $$divU_14 | 2919|extern|milli |$MILLICODE$ $$remI | 2939|extern|milli |$MILLICODE$ t1 | 2972|static|code |$MILLICODE$ finish | 3236|static|code |$MILLICODE$ $THISMODULE$ |1073743200|static|data |$DATA$ __ctype |1073743200|extern|data |$DATA$ _ctype |1073743216|extern|data |$DATA$ _ectype |1073743204|extern|data |$DATA$ _1kanji |1073743208|extern|data |$DATA$ _2kanji |1073743212|extern|data |$DATA$ $THISMODULE$ |1073744248|static|data |$DATA$ ecvt | 11763|extern|entry |$CODE$ cvt | 11839|static|entry |$CODE$ fcvt | 11803|extern|entry |$CODE$ mult32 | 14043|static|entry |$CODE$ $THISMODULE$ |1073745256|static|data |$DATA$ isatty | 14691|extern|entry |$CODE$ $THISMODULE$ |1073745256|static|data |$DATA$ malloc | 14739|extern|entry |$CODE$ <- Allocates for free | 15439|extern|entry |$CODE$ buffered I/O realloc | 15491|extern|entry |$CODE$ memcpy | 15699|extern|entry |$CODE$ byteloop | 15952|static|code |$CODE$ done | 15968|static|code |$CODE$ not_aligned | 15800|static|code |$CODE$ chekchunk | 15764|static|code |$CODE$ chunks | 15728|static|code |$CODE$ back_porch | 15780|static|code |$CODE$ subchunk | 15768|static|code |$CODE$ chkchnk2 | 15876|static|code |$CODE$ chunk2 | 15820|static|code |$CODE$ bp_0 | 15912|static|code |$CODE$ subchnk2 | 15880|static|code |$CODE$ bp_1 | 15916|static|code |$CODE$ encore | 15956|static|code |$CODE$ $THISMODULE$ |1073745288|static|data |$DATA$ _nl_name |1073745352|extern|data |$DATA$ <- For native language _nl_langid |1073745288|extern|data |$DATA$ _nl_radix |1073745292|extern|data |$DATA$ _sh_low |1073745296|extern|data |$DATA$ _sh_high |1073745300|extern|data |$DATA$ _nl_char_size |1073745304|extern|data |$DATA$ _nl_direct |1073745308|extern|data |$DATA$ _nl_dgt_alt |1073745368|extern|data |$DATA$ _nl_dascii |1073745404|extern|data |$DATA$ _nl_punct_alt |1073745424|extern|data |$DATA$ _nl_pascii |1073745492|extern|data |$DATA$ _nl_space_alt |1073745312|extern|data |$DATA$ _nl_mode |1073745316|extern|data |$DATA$ _nl_order |1073745320|extern|data |$DATA$ _nl_outdigit |1073745324|extern|data |$DATA$ _nl_era |1073747072|extern|data |$BSS$ _seqtab |1073745328|extern|data |$DATA$ _pritab |1073745332|extern|data |$DATA$ _tab21 |1073745336|extern|data |$DATA$ _tab12 |1073745340|extern|data |$DATA$ _chrtab |1073745344|extern|data |$DATA$ strlen | 15979|extern|entry |$CODE$ $null_ptr | 16068|static|code |$CODE$ $not_aligned | 16000|static|code |$CODE$ $loop | 16020|static|code |$CODE$ $end_loop | 16036|static|code |$CODE$ $out | 16060|static|code |$CODE$ $THISMODULE$ |1073745528|static|data |$DATA$ fwrite | 16075|extern|entry |$CODE$ close | 16691|extern|entry |$CODE$ fstat | 16723|extern|entry |$CODE$ write | 16755|extern|entry |$CODE$ $THISMODULE$ |1073745528|static|data |$DATA$ _exit | 16787|extern|entry |$CODE$ $$divI | 3259|extern|milli |$MILLICODE$ $$divoI | 3255|extern|milli |$MILLICODE$ negative1 | 3688|static|code |$MILLICODE$ small_divisor | 3552|static|code |$MILLICODE$ normal | 3264|static|code |$MILLICODE$ $$divU | 3703|extern|milli |$MILLICODE$ special_divisor | 3976|static|code |$MILLICODE$ normal | 3712|static|code |$MILLICODE$ big_divisor | 4112|static|code |$MILLICODE$ zero_divisor | 3984|static|code |$MILLICODE$ $neg2 | 4124|static|code |$MILLICODE$ $loop | 4168|static|code |$MILLICODE$ $$mulI | 4147|extern|milli |$MILLICODE$ $check | 4164|static|code |$MILLICODE$ $return | 4324|static|code |$MILLICODE$ $shmcand | 4316|static|code |$MILLICODE$ $addtmp | 4312|static|code |$MILLICODE$ $two | 4196|static|code |$MILLICODE$ $endloop | 4308|static|code |$MILLICODE$ $fiftnx | 4304|static|code |$MILLICODE$ $$mulU | 4335|extern|milli |$MILLICODE$ $loop | 4352|static|code |$MILLICODE$ $return | 4508|static|code |$MILLICODE$ $shmcand | 4500|static|code |$MILLICODE$ $addtmp | 4496|static|code |$MILLICODE$ $two | 4380|static|code |$MILLICODE$ $endloop | 4492|static|code |$MILLICODE$ $fiftnx | 4488|static|code |$MILLICODE$ memchr | 16819|extern|entry |$CODE$ memchrexit | 16852|static|code |$CODE$ memchrloop | 16832|static|code |$CODE$ memchrequal | 16848|static|code |$CODE$ __exit | 16867|extern|entry |$CODE$ errnet |1073746580|extern|data |$BSS$ $cerror | 16907|extern|entry |$CODE$ return | 16928|static|code |$CODE$ ioctl | 16947|extern|entry |$CODE$ $THISMODULE$ |1073745528|static|data |$DATA$ end |1073748148|extern|data |$BSS$ _minbrk |1073745528|extern|data |$DATA$ <- malloc() uses _curbrk |1073745532|extern|data |$DATA$ brk | 16979|extern|entry |$CODE$ $THISMODULE$ |1073745536|static|data |$DATA$ sbrk | 17067|extern|entry |$CODE$ _brk | 17115|extern|entry |$CODE$ $ exit script done on Thu Apr 14 09:30:10 1988