From dcc19aacb785a5a0de0184342ab8eae714bff916 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sun, 25 Jul 2010 21:09:54 +0200 Subject: [PATCH] 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. --- ChangeLog | 4 ++++ configure | 2 +- configure.in | 2 +- src/ChangeLog | 5 +++++ src/config.in | 3 +++ src/dispnew.c | 2 +- src/emacs.c | 10 ++++++++++ 7 files changed, 25 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2746258e0c2..64c61254371 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-07-25 Andreas Schwab + + * configure.in: Check for __executable_start. + 2010-07-24 Ken Brown * configure.in (LINKER, LIB_GCC): Remove cygwin special cases (Bug#6715) diff --git a/configure b/configure index 8e42ac403c6..b4a2ee64590 100755 --- a/configure +++ b/configure @@ -11190,7 +11190,7 @@ __fpending mblen mbrlen mbsinit strsignal setitimer ualarm strchr strrchr \ 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" diff --git a/configure.in b/configure.in index a6fde6eca65..0f4a3c7564b 100644 --- a/configure.in +++ b/configure.in @@ -2611,7 +2611,7 @@ __fpending mblen mbrlen mbsinit strsignal setitimer ualarm strchr strrchr \ 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) diff --git a/src/ChangeLog b/src/ChangeLog index 0ed773d1acd..50a9fcb8ba8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2010-07-25 Andreas Schwab + * 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 diff --git a/src/config.in b/src/config.in index 40b62633446..647c8804dff 100644 --- a/src/config.in +++ b/src/config.in @@ -801,6 +801,9 @@ along with GNU Emacs. If not, see . */ /* 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 diff --git a/src/dispnew.c b/src/dispnew.c index fe64143ec07..73aafe07d94 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -436,7 +436,7 @@ DEFUN ("dump-redisplay-history", Fdump_redisplay_history, #endif /* GLYPH_DEBUG == 0 */ -#ifdef PROFILING +#if defined PROFILING && !HAVE___EXECUTABLE_START /* FIXME: only used to find text start for profiling. */ void diff --git a/src/emacs.c b/src/emacs.c index fbae7763877..a5d57116c4f 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -1747,9 +1747,18 @@ main (int argc, char **argv) #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 @@ main (int argc, char **argv) /* FIXME: Does not work on architectures with function descriptors. */ monstartup (safe_bcopy, &etext); +#endif } else moncontrol (0); -- 2.39.2