summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1996-07-16 00:46:45 +0000
committerKarl Heuer <kwzh@gnu.org>1996-07-16 00:46:45 +0000
commitd57cb94c26a6f447d93a0f779a36104a3a4093b9 (patch)
tree8dbc881f25179738cb03b7bb9606362fa6f80735
parentbae50f845861d0f52b2eade6502b83671a3fcbf2 (diff)
downloademacs-d57cb94c26a6f447d93a0f779a36104a3a4093b9.tar.gz
[__ELF__] (C_SWITCH_MACHINE): Define.
(NO_TERMIO): Define this unconditionally. (COFF): Omit this if ELF.
-rw-r--r--src/m/alpha.h29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/m/alpha.h b/src/m/alpha.h
index f3ee56f3a73..7b07f6cd9b7 100644
--- a/src/m/alpha.h
+++ b/src/m/alpha.h
@@ -139,6 +139,19 @@ NOTE-END
/* #define NO_SOCK_SIGIO */
+#ifdef __ELF__
+/* With ELF, make sure that all common symbols get allocated to in the
+ data section. Otherwise, the dump of temacs may miss variables in
+ the shared library that have been initialized. For example, with
+ GNU libc, __malloc_initialized would normally be resolved to the
+ shared library's .bss section, which is fatal. */
+# ifdef __GNUC__
+# define C_SWITCH_MACHINE -fno-common
+# else
+# error What gives? Fix me if DEC Unix supports ELF now.
+# endif
+#endif
+
#ifndef __ELF__
/* Describe layout of the address space in an executing process. */
@@ -277,14 +290,14 @@ extern void r_alloc_free ();
while (0)
#endif
-#ifdef linux
-#define COFF
-/* Linux/Alpha doesn't like it if termio.h and termios.h get included
- simultaneously. */
+/* On the Alpha it's best to avoid including TERMIO since struct
+ termio and struct termios are mutually incompatible. */
#define NO_TERMIO
-#define TEXT_END ({ extern int _etext; &_etext; })
-#ifndef __ELF__
-# define DATA_END ({ extern int _EDATA; &_EDATA; })
-#endif /* notdef __ELF__ */
+#ifdef LINUX
+# define TEXT_END ({ extern int _etext; &_etext; })
+# ifndef __ELF__
+# define COFF
+# define DATA_END ({ extern int _EDATA; &_EDATA; })
+# endif /* ! __ELF__ */
#endif