www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2016/08/06/13:37:52

X-Authentication-Warning: delorie.com: mail set sender to djgpp-workers-bounces using -f
X-Recipient: djgpp-workers AT delorie DOT com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20120113;
h=mime-version:in-reply-to:references:from:date:message-id:subject:to;
bh=QYJL6bZO0LMfBCq9XOmnKtk2VH3qEbno+jrZD0LlDGE=;
b=xCfZG+8xlrv1UOPwdvPgFR+TMKeRyy1Xh2tY7gDWxR2YOMLuDVjzJIIJPOE7nCEZAP
H6CDTP6QDIXTJkbT9hhxFggftvDmsNOXNABD9rCPW0FxUcZw+8OWKoPAAB3fYBfKSVZ7
9j+TfC5J5CHfAsuQ0sxiwN3y6XW5owaAxylAJZwtBAUY5YAxQnF4Dn2RGfpG5ozSknwL
tR+sh5LeE4K/if0KdmTyfPysq4bBvn1y1o1HvJps4PT9ztI1dCE9pBxjWB8uGuzSUbmW
826A5oSgGpd50FD7iY/Z5h3T9wh9N8J8prSfWlJdDvR79Z2mzwqtxKljE5oQJvB7nJh8
wWiA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20130820;
h=x-gm-message-state:mime-version:in-reply-to:references:from:date
:message-id:subject:to;
bh=QYJL6bZO0LMfBCq9XOmnKtk2VH3qEbno+jrZD0LlDGE=;
b=ZgbPaklrpXQ5TFDWMdnDZQZXKUmh/oOHtHCCikvG8vZlGK06VeSTOzKVQjEdYntwGY
uclZKuxd9BpSj50QOJprF+1rmCnMm37GwUwC739VwGnKhKprE01suNFAxVpaqEAce/cl
z6mYZC8kWctmq077vq06xGnlrQZWUPV4xEsYg82XFDbOOtGF1g+yZcq4ytBa/EcBv64V
DkAUkB9+2lr6CnMqQ40c425GtUgxX6kJ10eTPOcBy/xCjw2cPCydNuN25Wzxvv0Xs+YW
aTsEjXKNRYBesRdMVW4nl89Xp8GyPyZtzTWBAZZVz0JQIxtFCStAARQupjaX2cATdKpT
8m4Q==
X-Gm-Message-State: AEkoouudFkr68S2yo5jGI2ZTb8DVONy3fmZoGWIBLFM5acVlcnVQ6f+TMEPUQmbS6pjDCf2oTDLg8OPrrFkDzQ==
X-Received: by 10.36.53.214 with SMTP id k205mr10592369ita.85.1470503434281;
Sat, 06 Aug 2016 10:10:34 -0700 (PDT)
MIME-Version: 1.0
In-Reply-To: <CAA-ihx-exBLSkvQqFz5BHj_Ma1Cqn7bUqYwSPvUMEh7_-ARJEA@mail.gmail.com>
References: <CAA-ihx-exBLSkvQqFz5BHj_Ma1Cqn7bUqYwSPvUMEh7_-ARJEA AT mail DOT gmail DOT com>
From: "Ozkan Sezer (sezeroz AT gmail DOT com) [via djgpp-workers AT delorie DOT com]" <djgpp-workers AT delorie DOT com>
Date: Sat, 6 Aug 2016 20:10:33 +0300
Message-ID: <CAA2C=vD2ML8fKhCmH=g8Q4QkjgfPJ0CMg17DB31obdvxe9BQhw@mail.gmail.com>
Subject: Re: linking more bloat from ctime.c
To: djgpp-workers AT delorie DOT com
Reply-To: djgpp-workers AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp-workers AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

--001a114aa6bed7a6a005396a42f0
Content-Type: text/plain; charset=UTF-8

On 8/6/16, Rugxulo (rugxulo AT gmail DOT com) [via djgpp-workers AT delorie DOT com]
<djgpp-workers AT delorie DOT com> wrote:
> Hi, guys,
>
> (Okay, so this isn't a hugely critical issue, nor a priority, so
> please don't think I'm complaining. I just wanted to mention it for
> completeness.)
>
> We've already discussed the bloat of ctime.c several times over the
> years. The most recent discussion was two years ago (2014/04/21), from
> Ozkan Sezer, titled "ctime.c changes add about 4.5k more size".
>
> (I found that entire thread chain by searching my email archives and
> then further searching on
> http://www.delorie.com/djgpp/mail-archives/search.cgi with the
> keywords "+crazy +changes +mktime".)
>
> http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp-workers/2014/04/21/02:44:35
>
> Here's the real problem: *printf (or, more specifically, doprnt.o). A
> lot has changed since 2.03p2. One very simple test of mine showed
> this:
>
> (2.03p2):
> LITE     EXE        44,032
> SCANF    EXE        47,616
> PRINTF   EXE        51,712
> BOTH     EXE        55,296
>
> (2.05):
> LITE     EXE        72,192
> SCANF    EXE        84,480
> PRINTF   EXE        89,088
> BOTH     EXE       100,352
>
> Yes, I know, hard drives are cheap. And of course 99% of all C
> programs actually need and want to use *printf. But, even
> acknowledging that, I think it's a mistake to link in the full
> doprnt.o just for a single line in an (here by me) unused routine in
> ctime.c by default.
>
> // === badprint.c begins ===
> /*
>   re: DJGPP 2.05 (DJDEV-/DJLSR205.ZIP) ...
>
>   I only want a simple call to time(), but that needs gettimeofday(),
>   and gettimeofday() needs mktime() and localtime(), both of which
>   are included inside ctime.o !!
>
>   We must stop ctime.o from pulling in sprintf()'s (bloated) doprnt.o !!
>
>    text    data     bss     dec     hex filename
>   10832    2644   14464   27940    6d24 ctime.o
>   15712     188       8   15908    3e24 doprnt.o
>
>   sprintf() is called by asctime_r(), which itself is called by
>   asctime(), but ctime() also calls asctime() and ctime_r() also
>   calls asctime_r() !!
>
>   The single offending sprintf format string is as follows:
>
>   "%.3s %.3s%3d %02d:%02d:%02d %d\n"
>
>   This should be easy to simulate without needing to include the
>   full doprnt.o !!
> */
>
> #include <stdio.h>
>
> int sprintf(char* buffer, const char* format, ...)
> {
>   fputs("Someone is calling me??? I'm a (fake) sprintf() stub!!!",stderr);
>   return 0;
> }
> // === badprint.c ends ===
>
> P.S. In one minimal program of mine, the solution I found recently was
> to not use time() at all (for srand() ), instead relying on
> (non-standard!) Turbo C's gettime(), which doesn't need all the bloat
> (since I was already avoiding printf() there as unnecessary). My point
> is that I assume ctime.c can be "fixed" to not need sprintf() at all,
> which would be more ideal than either of these kludges, right?
>

To overcome the bloat from ctime.c, I have been using the attached
djtime.c for some time.  It also avoids all timezone thingies.  Maybe it
would be useful to you and-or to someone else.

--001a114aa6bed7a6a005396a42f0
Content-Type: text/x-csrc; charset=US-ASCII; name="djtime.c"
Content-Disposition: attachment; filename="djtime.c"
Content-Transfer-Encoding: base64
X-Attachment-Id: file1

c3RydWN0IHRtICpnbXRpbWUgKGNvbnN0IHRpbWVfdCAqdHQpCnsKICAgIHN0YXRpYyBjaGFyIG1v
bnRodGFibGVbXSA9IHsKICAgIC8qIEphbkZlYk1hckFwck1heUp1bkp1bEF1Z1NlcE9rdE5vdiAq
LwogICAgICAgMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAKICAgIH07CiAgICBzdGF0
aWMgc3RydWN0IHRtIF9teXRtOwoKICAgIHN0cnVjdCB0bSAqdG0gPSAmX215dG07CiAgICBzaWdu
ZWQgbG9uZyB0aW07CiAgICBpbnQgbGVhcGRheSA9IDAsIGxlYXB5ZWFyID0gMCwgaTsKCiAgICB0
aW0gPSAqdHQ7CgogICAgdG0tPnRtX3NlYyA9IHRpbSAlIDYwOwogICAgdGltIC89IDYwOwoKICAg
IHRtLT50bV9taW4gPSB0aW0gJSA2MDsKICAgIHRpbSAvPSA2MDsKCiAgICAvKgoJNzE5MTYyIG51
bWJlciBvZiBkYXlzIGJldHdlZW4gMS4xLjEgYW5kIDEuMS4xOTcwIGlmIHRoZSBjYWxlbmRhcgoJ
d291bGQgZ28gc28gZmFyIHdoaWNoIGl0IGRvZXNuJ3QgOi0pIHRoaXMgaXMgdHJ1ZSBmb3IgYWxs
IG9mIHRoZQoJZm9sbG93aW5nLgogICAgKi8KICAgIHRtLT50bV9ob3VyID0gdGltICUgMjQ7CiAg
ICB0aW0gPSB0aW0gLyAyNCArIDcxOTE2MjsKCiAgICB0bS0+dG1fd2RheSA9ICh0aW0gKyAxKSAl
IDc7CgogICAgLyogMTQ2MDk3IG51bWJlciBvZiBkYXlzIGZyb20gMS4xLjEgdG8gMS4xLjQwMSAq
LwogICAgdG0tPnRtX3llYXIgPSB0aW0gLyAxNDYwOTcgKiA0MDAgLSAxODk5OwogICAgdGltICU9
IDE0NjA5NzsKCiAgICAvKiAxNDU3MzEgbnVtYmVyIG9mIGRheXMgZnJvbSAxLjEuMSB0byAxLjEu
NDAwICovCiAgICBpZiAodGltID49IDE0NTczMSkKICAgIHsKCWxlYXB5ZWFyKys7IC8qIFRoZSBk
YXkgaXMgaW4gb25lIG9mIHRoZSA0MDB0aCAqLwoKCS8qIEJlIGNhcmVmdWw6IFRoZSBsYXN0IG9m
IHRoZSA0IGNlbnR1cmllcyBpcyAxIGRheSBsb25nZXIgKi8KCWlmICh0aW0gPT0gMTQ2MDk2KQoJ
ewoJICAgIHRpbS0tOwoJICAgIGxlYXBkYXkrKzsKCX0KICAgIH0KCiAgICAvKiAzNjUyNCBudW1i
ZXIgb2YgZGF5cyBmcm9tIDEuMS4xIHRvIDEuMS4xMDEgKi8KICAgIHRtLT50bV95ZWFyICs9IHRp
bSAvIDM2NTI0ICogMTAwOwogICAgdGltICU9IDM2NTI0OwoKICAgIC8qIDM2MTU5IG51bWJlciBv
ZiBkYXlzIGZyb20gMS4xLjEgdG8gMS4xLjEwMCAqLwogICAgaWYgKHRpbSA+PSAzNjE1OSkKCWxl
YXB5ZWFyLS07IC8qIFRoZSBkYXkgaXMgaW4gb25lIG9mIHRoZSAxMDB0aCAqLwoKICAgIC8qIDE0
NjEgbnVtYmVyIG9mIGRheXMgZnJvbSAxLjEuMSB0byAxLjEuNSAqLwogICAgdG0tPnRtX3llYXIg
Kz0gdGltIC8gMTQ2MSAqIDQ7CiAgICB0aW0gJT0gMTQ2MTsKCiAgICAvKiAxMDk1IG51bWJlciBv
ZiBkYXlzIGZyb20gMS4xLjEgdG8gMS4xLjQgKi8KICAgIGlmICh0aW0gPj0gMTA5NSkKICAgIHsK
CWxlYXB5ZWFyKys7IC8qIFRoZSBkYXkgaXMgaW4gb25lIG9mIHRoZSA0dGggKi8KCgkvKiBCZSBj
YXJlZnVsOiBUaGUgNHRoIHllYXIgaXMgMSBkYXkgbG9uZ2VyICovCglpZiAodGltID09IDE0NjAp
Cgl7CgkgICAgdGltLS07CgkgICAgbGVhcGRheSsrOwoJfQogICAgfQoKICAgIC8qIDM2NSBkYXlz
IGluIGEgbm9ybWFsIHllYXIgKi8KICAgIHRtLT50bV95ZWFyICs9IHRpbSAvIDM2NTsKICAgIHRp
bSA9IHRpbSAlIDM2NSArIGxlYXBkYXk7CgogICAgdG0tPnRtX3lkYXkgPSB0aW07CgogICAgaWYg
KCFsZWFweWVhciAmJiB0aW0gPj0gMzErMjgpCgl0aW0rKzsgLyogYWRkIDEgZm9yIDI5LUZlYiBp
ZiBubyBsZWFwIHllYXIgKi8KCiAgICAvKiBGaW5kIHRoZSBtb250aCAqLwogICAgZm9yIChpPTA7
IGk8MTE7IGkrKykKICAgIHsKCWlmICh0aW0gPCBtb250aHRhYmxlW2ldKQoJICAgIGJyZWFrOwoK
CXRpbS09bW9udGh0YWJsZVtpXTsKICAgIH0KCiAgICB0bS0+dG1fbW9uID0gaTsKICAgIHRtLT50
bV9tZGF5ID0gdGltICsgMTsKCiAgICB0bS0+dG1faXNkc3QgPSAtMTsKCiAgICByZXR1cm4gdG07
Cn0Kc3RydWN0IHRtICpsb2NhbHRpbWUoY29uc3QgdGltZV90ICopIF9fYXR0cmlidXRlX18oKGFs
aWFzKCJnbXRpbWUiKSkpOwoKY2hhciAqYXNjdGltZSAoY29uc3Qgc3RydWN0IHRtICp0bSkKewog
ICAgc3RhdGljIGNvbnN0IGNoYXIgd2RheV9uYW1lWzddWzNdID0gewogICAgICAiU3VuIiwgIk1v
biIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IgogICAgfTsKICAgIHN0YXRpYyBj
b25zdCBjaGFyIG1vbl9uYW1lWzEyXVszXSA9IHsKICAgICAgIkphbiIsICJGZWIiLCAiTWFyIiwg
IkFwciIsICJNYXkiLCAiSnVuIiwKICAgICAgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJO
b3YiLCAiRGVjIgogICAgfTsKICAgIHN0YXRpYyBjaGFyIGJ1ZmZlclsyNl07CgogICAgc3ByaW50
ZihidWZmZXIsICIlLjNzICUuM3MlM2QgJTAyZDolMDJkOiUwMmQgJWRcbiIsCiAgICAgIHdkYXlf
bmFtZVt0bS0+dG1fd2RheV0sIG1vbl9uYW1lW3RtLT50bV9tb25dLAogICAgICB0bS0+dG1fbWRh
eSwgdG0tPnRtX2hvdXIsIHRtLT50bV9taW4sIHRtLT50bV9zZWMsCiAgICAgIDE5MDAgKyB0bS0+
dG1feWVhcik7CiAgICByZXR1cm4gYnVmZmVyOwp9CgpjaGFyICpjdGltZSAoY29uc3QgdGltZV90
ICp0dCkKewogICAgcmV0dXJuIGFzY3RpbWUgKGxvY2FsdGltZSAodHQpKTsKfQoKdGltZV90IG1r
dGltZSAoc3RydWN0IHRtICp1dGltKQp7CiAgICBzdGF0aWMgY2hhciBtb250aHRhYmxlW10gPSB7
CiAgICAvKiBKYW5GZWJNYXJBcHJNYXlKdW5KdWxBdWdTZXBPa3ROb3YgKi8KICAgICAgIDMxLDI4
LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwCiAgICB9OwoKICAgIHRpbWVfdCB0dDsKICAgIGlu
dCAgbGVhcHllYXIsIGRheXMsIHllYXIsIGk7CgogICAgLyogVE9ETzogQWRkIHN0cnVjdCB0bSBu
b3JtYWxpemF0aW9uIGNvZGUgaGVyZSAqLwoKICAgIC8qIENvbXB1dGUgbnVtYmVyIG9mIGRheXMg
aW4gdGhlIHllYXJzIGJlZm9yZSB0aGlzIHllYXIgYW5kIGFmdGVyIDE5NzAuCiAgICAgKiAxOTcy
IGlzIHRoZSBmaXJzdCBsZWFweWVhcgogICAgICovCiAgICB5ZWFyID0gdXRpbS0+dG1feWVhci0x
OwogICAgZGF5cyA9IDM2NSooeWVhci02OSkgKyAoeWVhci02OCkvNCAtIHllYXIvMTAwICsgKHll
YXIrMzAwKS80MDA7CgogICAgLyogQWRkIHRoZSBkYXkgb2YgdGhlIG1vbnRocyBiZWZvcmUgdGhp
cyBtb250aCAqLwogICAgZm9yIChpPTA7IGk8dXRpbS0+dG1fbW9uOyBpKyspCiAgICB7CiAgICAg
ICAgZGF5cyArPSBtb250aHRhYmxlW2ldOwogICAgfQoKICAgIC8qIElzIHRoaXMgYSBsZWFweWVh
ciA/ICovCiAgICB5ZWFyID0gdXRpbS0+dG1feWVhcjsKICAgIGxlYXB5ZWFyID0geWVhciU0PT0w
ICYmICh5ZWFyJTEwMCE9MCB8fCAoeWVhciszMDApJTQwMD09MCk7CiAgICBpZiAobGVhcHllYXIg
JiYgdXRpbS0+dG1fbW9uPjEpIGRheXMrKzsKCiAgICAvKiBBZGQgZGF5IGluIHRoZSBjdXJyZW50
IG1vbnRoICovCiAgICBkYXlzICs9IHV0aW0tPnRtX21kYXkgLSAxOwoKICAgIHR0ID0gKCAoZGF5
cyoyNCt1dGltLT50bV9ob3VyKSo2MCArIHV0aW0tPnRtX21pbiApKjYwICsgdXRpbS0+dG1fc2Vj
OwoKICAgIHJldHVybiB0dDsKfQoKdm9pZCB0enNldCh2b2lkKQp7CiAgLyogbm90IHVzaW5nIHRp
bWV6b25lcyAqLwp9CnZvaWQgc2V0X3V0Y19vZmZzZXQodm9pZCkgX19hdHRyaWJ1dGVfXygoYWxp
YXMoInR6c2V0IikpKTsJLyogZm9yIHdhdHQzMiBnZXR0b2QuYyAqLwp2b2lkIF9fdHpzZXQodm9p
ZCkgX19hdHRyaWJ1dGVfXygoYWxpYXMoInR6c2V0IikpKTsKCnN0YXRpYyB2b2lkIGdldF96b25l
IChzdHJ1Y3QgdGltZXpvbmUgKnR6LCB0aW1lX3Qgbm93KSB7CS8qIGZvciB3YXR0MzIgZ2V0dG9k
LmMgKi8KICAodm9pZClub3c7CiAgaWYgKHR6KQogICAgdHotPnR6X21pbnV0ZXN3ZXN0ID0gdHot
PnR6X2RzdHRpbWUgPSAwOwp9CgppbnQgZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0diwg
c3RydWN0IHRpbWV6b25lICp0eikKewogIF9fZHBtaV9yZWdzIHI7CiAgc3RydWN0IHRtIHRtYmxr
OwogIHN0cnVjdCB0aW1ldmFsIHR2X3RtcDsKCiAgaWYgKCF0dikKICAgIHR2ID0gJnR2X3RtcDsK
CiAgci5oLmFoID0gMHgyYzsKICBfX2RwbWlfaW50KDB4MjEsICZyKTsKCiAgdHYtPnR2X3VzZWMg
PSByLmguZGwgKiAxMDAwMDsKICB0bWJsay50bV9zZWMgPSByLmguZGg7CiAgdG1ibGsudG1fbWlu
ID0gci5oLmNsOwogIHRtYmxrLnRtX2hvdXIgPSByLmguY2g7CgogIHIuaC5haCA9IDB4MmE7CiAg
X19kcG1pX2ludCgweDIxLCAmcik7CgogIHRtYmxrLnRtX21kYXkgPSByLmguZGw7CiAgdG1ibGsu
dG1fbW9uID0gci5oLmRoIC0gMTsKICB0bWJsay50bV95ZWFyID0gKHIueC5jeCAmIDB4N2ZmKSAt
IDE5MDA7CgogIHRtYmxrLnRtX3dkYXkgPSB0bWJsay50bV95ZGF5ID0gdG1ibGsudG1fZ210b2Zm
ID0gMDsKICB0bWJsay50bV96b25lID0gMDsKICB0bWJsay50bV9pc2RzdCA9IC0xOwoKICB0di0+
dHZfc2VjID0gbWt0aW1lKCZ0bWJsayk7CgogIGlmKHR6KQogICAgdHotPnR6X21pbnV0ZXN3ZXN0
ID0gdHotPnR6X2RzdHRpbWUgPSAwOy8qIG5vdCB1c2luZyB0aW1lem9uZXMgKi8KICByZXR1cm4g
MDsKfQppbnQgX19nZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV6b25l
ICopIF9fYXR0cmlidXRlX18oKGFsaWFzKCJnZXR0aW1lb2ZkYXkiKSkpOwoKdGltZV90IHRpbWUg
KHRpbWVfdCAqIHRsb2MpCnsKICAgIHN0cnVjdCB0aW1ldmFsIHR2OwogICAgZ2V0dGltZW9mZGF5
KCZ0diwgTlVMTCk7CiAgICBpZiAodGxvYykKICAgICAgICAqdGxvYyA9IHR2LnR2X3NlYzsKICAg
IHJldHVybiB0di50dl9zZWM7Cn0K
--001a114aa6bed7a6a005396a42f0--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019