This is the mail archive of the
mailing list for the Cygwin project.
Re: Need information about data and bss segment address access in cygwin
Thanks Cliff/Dave. I could not find the code where the dll data/bss
segments address are updated in cygwin. But in the fork code we are
doing a copy for all linked and loaded dlls data/bss segments by
giving the address as
for (dll *d = dlls.istart (DLL_LINK); d; d = dlls.inext ())
debug_printf ("copying data/bss of a linked dll");
if (!fork_copy (pi, "linked dll data/bss", d->p.data_start, d->p.data_end,
for (dll *d = dlls.istart (DLL_LOAD); d; d = dlls.inext ())
debug_printf ("copying data/bss for a loaded dll");
if (!fork_copy (pi, "loaded dll data/bss", d->p.data_start, d->p.data_end,
And also please let me know if there exist any document which gives
some idea about this.
On 1/20/06, Dave Korn <email@example.com> wrote:
> Cliff Hones wrote:
> > Sudhahar wrote:
> >> Thanks Dave your reply answered the question where they declared. But
> >> how does these variables get the segment address of data and bss for a
> >> running process to make a copy to the child process? This is the
> >> questions which is a puzzle to me.
> > The linker places these variables at the start and end of the data and
> > bss segments. The application can then find the addresses of the segments
> > by taking the address of the variables (eg &__data_start__). They aren't
> > strictly variables in the C sense, inasmuch as trying to read or assign
> > to them may corrupt your application or cause a segmentation error.
> Indeed; they aren't variables at all, they are merely symbols that point to
> whatever item of code or data happens to be at the start or end of the section
> And the final part of the answer is that the linker also emits relocs
> against any references to their addresses, which are fixed up by the runtime
> loader at image-mapping time, and that's how they get the actual final real
> address at runtime.
> > Look in winsup/cygwin/lib/_cygwin_crt0_common.cc
> Can't think of a witty .sigline today....
> Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
> Problem reports: http://cygwin.com/problems.html
> Documentation: http://cygwin.com/docs.html
> FAQ: http://cygwin.com/faq/
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html