* binary size changes from 0.1.0 @ 2004-06-09 18:55 claudio 2004-06-10 7:35 ` Gábor Lénárt 0 siblings, 1 reply; 6+ messages in thread From: claudio @ 2004-06-09 18:55 UTC (permalink / raw) To: linux-8086 I'm generating bootable images with current elks and I was puzzled because the new files don't fit in the "root" image. Comparing the binary sizes with the old images from 0.1.0, I found the following: File New size Old size Delta ------------- --------- ----------- ------- ash 69900 59196 10704 cat 3940 1960 1980 chgrp 9700 7348 2352 chmod 6756 4408 2348 chown 8388 6020 2368 clock 7240 7528 -288 cmp 7384 5004 2380 cp 8720 6388 2332 exitemu 196 196 0 getty 10744 8364 2380 init 6516 6788 -272 kill 5108 2648 2460 login 11132 8844 2288 ls 16724 14632 2092 meminfo 6820 4456 2364 mkdir 940 956 -16 mknod 1528 1524 4 mount 4128 1620 2508 mv 6076 3568 2508 passwd 13888 0 13888 ps 8828 6444 2384 rm 572 588 -16 rmdir 844 860 -16 sh 69900 59196 10704 swapon 9648 7344 2304 sync 212 228 -16 touch 420 436 -16 umount 3772 1264 2508 ------------- --------- ----------- ------- What could explain that difference? Is the new libc that larger? Note that cat has only a bunch of syscalls. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: binary size changes from 0.1.0 2004-06-09 18:55 binary size changes from 0.1.0 claudio @ 2004-06-10 7:35 ` Gábor Lénárt 2004-06-10 9:52 ` David Given 0 siblings, 1 reply; 6+ messages in thread From: Gábor Lénárt @ 2004-06-10 7:35 UTC (permalink / raw) To: linux-8086 Re, Also if you check some simple utils, like chmod and others, you will see that significant amount of size is error description, I mean textual representation of errno codes, as you can get by calling perror() or via sys_errlist array. The only problem that almost EACH utility has to contain these messages. So, the best soultion would be shared library of course but it's hard to implement at once. In my experimental OS this was handled in quite "ugly" way: include messages into the kernel, and let a syscall query the error message. This is very ugly, but it's simple, and avoids each binary contain all of the messages, so it will result in less memory usage, and of course smaller disk image ... On Wed, Jun 09, 2004 at 03:55:42PM -0300, claudio@conectiva.com wrote: > > I'm generating bootable images with current elks and I was > puzzled because the new files don't fit in the "root" image. > Comparing the binary sizes with the old images from 0.1.0, > I found the following: > > File New size Old size Delta > ------------- --------- ----------- ------- > ash 69900 59196 10704 > cat 3940 1960 1980 > chgrp 9700 7348 2352 > chmod 6756 4408 2348 > chown 8388 6020 2368 > clock 7240 7528 -288 > cmp 7384 5004 2380 > cp 8720 6388 2332 > exitemu 196 196 0 > getty 10744 8364 2380 > init 6516 6788 -272 > kill 5108 2648 2460 > login 11132 8844 2288 > ls 16724 14632 2092 > meminfo 6820 4456 2364 > mkdir 940 956 -16 > mknod 1528 1524 4 > mount 4128 1620 2508 > mv 6076 3568 2508 > passwd 13888 0 13888 > ps 8828 6444 2384 > rm 572 588 -16 > rmdir 844 860 -16 > sh 69900 59196 10704 > swapon 9648 7344 2304 > sync 212 228 -16 > touch 420 436 -16 > umount 3772 1264 2508 > ------------- --------- ----------- ------- > > What could explain that difference? Is the new libc that > larger? Note that cat has only a bunch of syscalls. > > - > To unsubscribe from this list: send the line "unsubscribe linux-8086" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- - Gábor (larta'H) - To unsubscribe from this list: send the line "unsubscribe linux-8086" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: binary size changes from 0.1.0 2004-06-10 7:35 ` Gábor Lénárt @ 2004-06-10 9:52 ` David Given 2004-06-10 11:05 ` Gábor Lénárt 2004-06-11 0:52 ` Harry Kalogirou 0 siblings, 2 replies; 6+ messages in thread From: David Given @ 2004-06-10 9:52 UTC (permalink / raw) To: linux-8086 On Thursday 10 June 2004 08:35, Gábor Lénárt wrote: > Also if you check some simple utils, like chmod and others, you will see > that significant amount of size is error description, I mean textual > representation of errno codes, as you can get by calling perror() or > via sys_errlist array. The only problem that almost EACH utility has > to contain these messages. So, the best soultion would be shared library > of course but it's hard to implement at once. In my experimental OS > this was handled in quite "ugly" way: include messages into the kernel, > and let a syscall query the error message. This is very ugly, but it's > simple, and avoids each binary contain all of the messages, so it will > result in less memory usage, and of course smaller disk image ... One common trick is to not keep the list of error messages in memory at all, but to keep them in a file on disk. When perror() is called, the file is opened, read until the right error message is found, and that one used... of course, this approach means that you can't do sys_errlist, but it's perfectly adequate for perror. You may also want to check to see if the optimisation settings have changed. -- +- David Given --McQ-+ "Est brilgum: toui slimici | dg@cowlark.com | In uabo tererotitant | (dg@tao-group.com) | Brogoui sunt macresculi +- www.cowlark.com --+ Momi rasti strugitant." --- Anonymous - To unsubscribe from this list: send the line "unsubscribe linux-8086" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: binary size changes from 0.1.0 2004-06-10 9:52 ` David Given @ 2004-06-10 11:05 ` Gábor Lénárt 2004-06-11 0:52 ` Harry Kalogirou 1 sibling, 0 replies; 6+ messages in thread From: Gábor Lénárt @ 2004-06-10 11:05 UTC (permalink / raw) To: linux-8086 Re, On Thu, Jun 10, 2004 at 10:52:50AM +0100, David Given wrote: > On Thursday 10 June 2004 08:35, Gábor Lénárt wrote: > > Also if you check some simple utils, like chmod and others, you will see > > that significant amount of size is error description, I mean textual > > representation of errno codes, as you can get by calling perror() or > > via sys_errlist array. The only problem that almost EACH utility has > > to contain these messages. So, the best soultion would be shared library > > of course but it's hard to implement at once. In my experimental OS > > this was handled in quite "ugly" way: include messages into the kernel, > > and let a syscall query the error message. This is very ugly, but it's > > simple, and avoids each binary contain all of the messages, so it will > > result in less memory usage, and of course smaller disk image ... > > One common trick is to not keep the list of error messages in memory at all, > but to keep them in a file on disk. When perror() is called, the file is > opened, read until the right error message is found, and that one used... of > course, this approach means that you can't do sys_errlist, but it's perfectly > adequate for perror. Yes, this was my first reaction as well, but if the app make heavy usage of getting error message, it would result in great amount of I/O (well, if kernel dcache is working, it could be not a big problem altough), so I've got this solution instead. Also, what's up if you delete /etc/syserr.list (or whatever the file is placed). Also, you may have got eg kernel filesystem let's say mounted under /kernel, and /kernel/syserr.list can be seen by user space, and it's exported by the kernel. However this may be an overcomplicated situation for an ELKS class OS (maybe not for a 32bit OS though). However if ELKS would use this filsystem for other purposes as well (like /proc/ in Linux, however this is ugly since process information and others should be well separated), this can be considered. However it's not about the original problem exactly, an external error message file can be enough. Well, at least for me ;-) - Gábor (larta'H) - To unsubscribe from this list: send the line "unsubscribe linux-8086" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: binary size changes from 0.1.0 2004-06-10 9:52 ` David Given 2004-06-10 11:05 ` Gábor Lénárt @ 2004-06-11 0:52 ` Harry Kalogirou 2004-06-11 14:36 ` claudio 1 sibling, 1 reply; 6+ messages in thread From: Harry Kalogirou @ 2004-06-11 0:52 UTC (permalink / raw) To: David Given; +Cc: Linux-8086 > One common trick is to not keep the list of error messages in memory at all, > but to keep them in a file on disk. When perror() is called, the file is > opened, read until the right error message is found, and that one used... I think ELKS's libc does that... at least it used to do... -- Harry Kalogirou <harkal@gmx.net> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: binary size changes from 0.1.0 2004-06-11 0:52 ` Harry Kalogirou @ 2004-06-11 14:36 ` claudio 0 siblings, 0 replies; 6+ messages in thread From: claudio @ 2004-06-11 14:36 UTC (permalink / raw) To: Harry Kalogirou; +Cc: Linux-8086 On Fri, 11 Jun 2004, Harry Kalogirou wrote: > > One common trick is to not keep the list of error messages in memory > > but to keep them in a file on disk. When perror() is called, the file is > > opened, read until the right error message is found, and that one used... > > I think ELKS's libc does that... at least it used to do... It does that it you use -Mf to use the "small and fast" libc_f. The default behaviour is to include the strings in every binary. This option also changes the function call protocol. I made some tests and the resulting binaries are significantly smaller, similar to those in the 0.1.0 disk images. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2004-06-11 14:36 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2004-06-09 18:55 binary size changes from 0.1.0 claudio 2004-06-10 7:35 ` Gábor Lénárt 2004-06-10 9:52 ` David Given 2004-06-10 11:05 ` Gábor Lénárt 2004-06-11 0:52 ` Harry Kalogirou 2004-06-11 14:36 ` claudio
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox