summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rwxr-xr-xconfigure2
-rw-r--r--configure.in2
-rw-r--r--src/ChangeLog5
-rw-r--r--src/config.in3
-rw-r--r--src/dispnew.c2
-rw-r--r--src/emacs.c10
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 <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)
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 <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>
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 <http://www.gnu.org/licenses/>. */
/* 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);