[sf-lug] K & R errata

Ken Shaffer kenshaffer80 at gmail.com
Wed Jul 6 12:18:22 PDT 2011


And you just might want to strip out the symbols too:
strip -o strippednull null      #7054 -> 5460

On Tue, Jul 5, 2011 at 12:05 PM, jim <jim at systemateka.com> wrote:

>
>
>    Thanks for terrific additions:
>
> int a = (int *) malloc(100*sizeof(int));
> // nice example of use of sizeof
>
>
> "They should both get initialized to zero, which means that they should
> go into the .bss section of the ELF file...."
> JS: This is Linux-specific behavior? I.e. not necessarily true
> for non-Linux OSes? Or maybe forced or optionally forced by
> the gcc compiler?
>
>
> "readelf is a command that comes with binutils and allows examination of
> precisely what is inside executables."
> JS:
> $ which readelf
> /usr/bin/readelf  # probably comes with default Ubuntu 10.04 (my OS)
> $ vi null.c  # int main() { ; }
> $ gcc -o null null.c
> $ ./null
> $ readelf -a null
> ... <wow!> ...
>
>
> "Hallinan's _Embedded Linux Primer_ (far and away my favorite book) has
> helpful comments...."
> JS: PDF is available from http://scorpius.homelinux.org (4.4MB)
> hardcopy book is distributed by Prentice Hall
>
>
> "valgrind --tool=memcheck" is the other gold-standard Linux memory
> checker, as is well-known.
> JS:
> # apt-get install valgrind  # 16+ MB download
> http://manpages.ubuntu.com/manpages/gutsy/man1/valgrind.1.html
> (a highly streamlined tutorial is at: )
>
> http://www.pcdebug.com/linux-debugging/a-primer-on-valgrind-valgrind-tutorial.html
>
>
> "BTW Jim, I don't mean to be a flamer, but capitalization does help with
> legibility."
> JS: no offense taken, thanks for the criticism. I use no-caps
> for convenience in conversational missives. My take-away is
> to stop doing so for other than brief comments. Readability
> is big with me.
>
>
>
> On Tue, 2011-07-05 at 00:38 -0700, Alison Chaiken wrote:
> > Thanks to everyone for a fascinating discussion.     I note that
> > there's an Erlang tutorial during OSCON:
> >
> > http://www.oscon.com/oscon2011/public/schedule/detail/19085
> >
> > I'm already signed up.
> >
> > jim <jim at systemateka.com> writes:
> >         I think declaring a variable is
> >         type identifier, e.g.
> >         int i;
> >         and defining a variable is
> >         type identifier assign value, e.g.
> >         int j = 3;
> >
> >           the compiler may set up images of segments for
> >         machine code (the text segment), data, and the stack(s)
> >         during its compile phase or defer that work until it's
> >         in the optimizing phase.
> >            regardless, it may "allocate" memory for a declared
> >         variable or not, depending on the variable's status as
> >         global or as local within some function.
> >         Regarding whether storage is allocated for declared variables
> >
> > I've noticed that declaring
> >
> >
> >         int a[100];
> >
> >
> > increases the size of a binary while
> >
> >
> >         int a = (int *) malloc(100*sizeof(int));
> >
> >
> > does not.        That's what you'd expect, as one set of numbers is
> > statically allocated, while the other is allocated dynamically.   They
> > should both get initialized to zero, which means that they should go
> > into the .bss section of the ELF file (the executable) that the linker
> > produces at the end of compilation.
> >
> >
> >            the language designers themselves were careful to
> >         keep I/O and platform and compiler designs out of the
> >         specification.
> >
> >
> > True dat, but if I understand correctly, the ELF format used by Linux
> > executables (not just C ones) does constrain the allocations.
> >  readelf is a command that comes with binutils and allows examination
> > of precisely what is inside executables.    Hallinan's _Embedded Linux
> > Primer_ (far and away my favorite book) has helpful comments about
> > using binutils to answer questions like this in Chapter 13.   The
> > Hallinan book is available as a free download, but you should buy a
> > hardcopy so that you can sleep with it under your pillow.
> >
> >
> > "valgrind --tool=memcheck" is the other gold-standard Linux memory
> > checker, as is well-known.
> >
> >
> > BTW Jim, I don't mean to be a flamer, but capitalization does help
> > with legibility.
> >
> > --
> > Alison Chaiken
> > (650) 279-5600  (cell)
> > http://www.exerciseforthereader.org/
> > Spend much time at the cutting edge and you're liable to get cut.
> >
> > _______________________________________________
> > sf-lug mailing list
> > sf-lug at linuxmafia.com
> > http://linuxmafia.com/mailman/listinfo/sf-lug
> > Information about SF-LUG is at http://www.sf-lug.org/
>
>
>
> _______________________________________________
> sf-lug mailing list
> sf-lug at linuxmafia.com
> http://linuxmafia.com/mailman/listinfo/sf-lug
> Information about SF-LUG is at http://www.sf-lug.org/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://linuxmafia.com/pipermail/sf-lug/attachments/20110706/e7b2d96c/attachment.html>


More information about the sf-lug mailing list