Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 01 Sep 1998 18:40:42 +0000
From:      Mike Smith <mike@smith.net.au>
To:        John Polstra <jdp@polstra.com>
Cc:        Mike Smith <mike@smith.net.au>, "Andrew Reilly" <reilly@zeta.org.au>, current@FreeBSD.ORG
Subject:   Re: ELF binaries size 
Message-ID:  <199809011840.SAA02659@dingo.cdrom.com>
In-Reply-To: Your message of "Tue, 01 Sep 1998 18:34:11 MST." <199809020134.SAA16805@austin.polstra.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
> > > > No, we map both text and data read-only.
> > > 
> > > No, the text is read-only and the data is copy-on-write.
> > 
> > Is this an ELF requirement, or just an arbitrary change?
> 
> I don't understand what you're getting at.  A program has to be able
> to write its data.  That's where the variables are.

dingo:/tmp>cat a.c 
char    *foo = "test";
int	bar;
void main(void) 
{
        foo[0] = 0;
}
dingo:/tmp>./a.out 
Bus error (core dumped)
dingo:/tmp>nm a.out | sort
00001020 F /usr/lib/aout/crt0.o
00001020 T start
00001560 F /var/tmp/ccMd26351.o
00001560 t gcc2_compiled.
00001568 T _main
00001580 F __main.o
00001580 T ___do_global_dtors
000015a8 T ___do_global_ctors
000015f4 T ___main
00001620 F _exit.o
00001940 T _etext
00002000 d __DYNAMIC
0000207c D ___progname
0000208c D _foo
0000209c D __exit_dummy_ref
000020ac D __exit_dummy_decl
000020bc D _edata
000020c4 B ___DTOR_LIST__
000020cc B ___CTOR_LIST__
000020d4 B ___ldso_version
000020d8 B ___ldso_entry
000020dc B _environ
000020e0 B _errno
000020e4 B _bar
000020e8 B _end

As you can see, 'foo' is in the data segment, and it's pretty clearly 
read-only.  If you were to compile with -fwritable_strings, gcc would 
emit code to copy it to the bss.

The data segment only contains constant data, including constant
initialisers for non-global initialised variables.

As you can see from 'bar', variables live in the bss.

-- 
\\  Sometimes you're ahead,       \\  Mike Smith
\\  sometimes you're behind.      \\  mike@smith.net.au
\\  The race is long, and in the  \\  msmith@freebsd.org
\\  end it's only with yourself.  \\  msmith@cdrom.com



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199809011840.SAA02659>