Mercurial > emacs
changeset 109539:d962ccf8829f
Use __executable_start to find start of text segment for profiling
* emacs.c (main) [PROFILING]: Use __executable_start if defined to
find start of text segment.
* dispnew.c (safe_bcopy): Don't define if HAVE___EXECUTABLE_START
is defined.
* configure.in: Check for __executable_start.
author | Andreas Schwab <schwab@linux-m68k.org> |
---|---|
date | Sun, 25 Jul 2010 21:09:54 +0200 |
parents | ed55b1a60024 |
children | d4902495c889 |
files | ChangeLog configure configure.in src/ChangeLog src/config.in src/dispnew.c src/emacs.c |
diffstat | 7 files changed, 25 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sun Jul 25 20:36:37 2010 +0200 +++ b/ChangeLog Sun Jul 25 21:09:54 2010 +0200 @@ -1,3 +1,7 @@ +2010-07-25 Andreas Schwab <schwab@linux-m68k.org> + + * configure.in: Check for __executable_start. + 2010-07-24 Ken Brown <kbrown@cornell.edu> * configure.in (LINKER, LIB_GCC): Remove cygwin special cases (Bug#6715)
--- a/configure Sun Jul 25 20:36:37 2010 +0200 +++ b/configure Sun Jul 25 21:09:54 2010 +0200 @@ -11190,7 +11190,7 @@ sendto recvfrom getsockopt setsockopt getsockname getpeername \ gai_strerror mkstemp getline getdelim mremap memmove fsync sync \ memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign \ -cfmakeraw cfsetspeed isnan copysign +cfmakeraw cfsetspeed isnan copysign __executable_start do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
--- a/configure.in Sun Jul 25 20:36:37 2010 +0200 +++ b/configure.in Sun Jul 25 21:09:54 2010 +0200 @@ -2611,7 +2611,7 @@ sendto recvfrom getsockopt setsockopt getsockname getpeername \ gai_strerror mkstemp getline getdelim mremap memmove fsync sync \ memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign \ -cfmakeraw cfsetspeed isnan copysign) +cfmakeraw cfsetspeed isnan copysign __executable_start) AC_CHECK_HEADERS(sys/un.h)
--- a/src/ChangeLog Sun Jul 25 20:36:37 2010 +0200 +++ b/src/ChangeLog Sun Jul 25 21:09:54 2010 +0200 @@ -1,5 +1,10 @@ 2010-07-25 Andreas Schwab <schwab@linux-m68k.org> + * emacs.c (main) [PROFILING]: Use __executable_start if defined to + find start of text segment. + * dispnew.c (safe_bcopy): Don't define if HAVE___EXECUTABLE_START + is defined. + * callproc.c (set_initial_environment): Avoid unbalanced braces. 2010-07-25 Ken Brown <kbrown@cornell.edu>
--- a/src/config.in Sun Jul 25 20:36:37 2010 +0200 +++ b/src/config.in Sun Jul 25 21:09:54 2010 +0200 @@ -801,6 +801,9 @@ /* Define to 1 if you want to use the X window system. */ #undef HAVE_X_WINDOWS +/* Define to 1 if you have the `__executable_start' function. */ +#undef HAVE___EXECUTABLE_START + /* Define to 1 if you have the `__fpending' function. */ #undef HAVE___FPENDING
--- a/src/dispnew.c Sun Jul 25 20:36:37 2010 +0200 +++ b/src/dispnew.c Sun Jul 25 21:09:54 2010 +0200 @@ -436,7 +436,7 @@ #endif /* GLYPH_DEBUG == 0 */ -#ifdef PROFILING +#if defined PROFILING && !HAVE___EXECUTABLE_START /* FIXME: only used to find text start for profiling. */ void
--- a/src/emacs.c Sun Jul 25 20:36:37 2010 +0200 +++ b/src/emacs.c Sun Jul 25 21:09:54 2010 +0200 @@ -1747,9 +1747,18 @@ #else extern char etext; #endif +#ifdef HAVE___EXECUTABLE_START + /* This symbol is defined by GNU ld to the start of the text + segment. */ + extern char __executable_start[]; +#else extern void safe_bcopy (); +#endif atexit (_mcleanup); +#ifdef HAVE___EXECUTABLE_START + monstartup (__executable_start, &etext); +#else /* This uses safe_bcopy because that function comes first in the Emacs executable. It might be better to use something that gives the start of the text segment, but start_of_text is not @@ -1757,6 +1766,7 @@ /* FIXME: Does not work on architectures with function descriptors. */ monstartup (safe_bcopy, &etext); +#endif } else moncontrol (0);