Sudhahar wrote: > from parent process to child process. After trying to find where the > data_start and data_end get the address of running process data and > bss segment, I ended up with a declaration of > > extern char _data_start__, _data_end__, _bss_start__, _bss_end__; in > file Winsup.h > > There is no other place where _data_start__, _data_end__, > _bss_start__, _bss_end__ are defined they act as external symbols for > cygwin. > > Can anyone through some light on where these variables are actually > declared and how they get the running process segment addresses.
They are generated by the linker. Take a look at the linker script by running "ld --verbose". [EMAIL PROTECTED] /usr/build/src-binutils/bfd> ld --verbose | grep _start to include this between __data_start__ and __data_end__, but that __data_start__ = . ; __bss_start__ = . ; ___crt_xc_start__ = . ; ___crt_xi_start__ = . ; ___crt_xl_start__ = . ; ___crt_xp_start__ = . ; ___crt_xt_start__ = . ; ___tls_start__ = . ; [EMAIL PROTECTED] /usr/build/src-binutils/bfd> ld --verbose | grep _end to include this between __data_start__ and __data_end__, but that ".data_cygwin_nocopy" and explictly include it after __data_end__. */ __data_end__ = . ; __bss_end__ = . ; ___crt_xc_end__ = . ; ___crt_xi_end__ = . ; /* ___crt_xl_end__ is defined in the TLS Directory support code */ ___crt_xp_end__ = . ; ___crt_xt_end__ = . ; ___tls_end__ = . ; PROVIDE ( _end = .); __end__ = .; [EMAIL PROTECTED] /usr/build/src-binutils/bfd> cheers, DaveK -- 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/