[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cannot bootstrap on NetBSD/cobalt



NAKAJI Hiroyuki <nakaji@xxxxxxxxxxxxxxxxxxx> writes:
> ;; 不動作報告です。
>
> Cobalt Cache RaQ2 で NetBSD/cobalt を動かしているので Emacs 22 を試してみ
> ましたが、temacs が動かず、bootstrap できませんでした。

NetBSD-3.99.11/hpcmips (X11 なし) が手元にあるので、試してみましたが、
同様の現象でした。temacs が正しい実行形式になっていません。

/usr/lib/crt{i,begin,end,n}.o がリンクされていませんので、
NetBSD/i386 と同じようにリンクすれば解決するのではと考えました。

src/s/netbsd.h で定義している START_FILES と LIB_STANDARD を
src/m/mips.h や src/m/pmax.h で壊しているのが原因のように思われます。

添付のパッチで、dump した emacs が起動するところまでは確認しました。
このパッチは、ほかの OS (特に OpenBSD や昔の NetBSD) で問題になるかもしれません。

---
Nozomu Ando


Index: src/m/mips.h
===================================================================
RCS file: /cvsroot/emacs/emacs/src/m/mips.h,v
retrieving revision 1.27
diff -u -r1.27 mips.h
--- src/m/mips.h	6 Feb 2006 15:23:23 -0000	1.27
+++ src/m/mips.h	6 Mar 2006 00:50:32 -0000
@@ -112,7 +112,7 @@
 /* This machine requires completely different unexec code
    which lives in a separate file.  Specify the file name.  */
 
-#ifndef __linux__
+#if !defined(__linux__) && !defined(__NetBSD__)
 #undef UNEXEC
 #define UNEXEC unexmips.o
 #endif /* not __linux__ */
@@ -142,14 +142,6 @@
 #if defined (__NetBSD__) || defined (__OpenBSD__)
 #else  /* bsd with elf */
 #define LINKER /bsd43/bin/ld
-#endif /* bsd with elf */
-#else /* not BSD_SYSTEM */
-
-#if defined(__GNUC__) && defined(_ABIN32)
-#define LIBS_MACHINE
-#else
-#define LIBS_MACHINE -lmld
-#endif
 
 #define LD_SWITCH_MACHINE -D 800000 -g3
 #define START_FILES pre-crt0.o /usr/lib/crt1.o
@@ -159,6 +151,15 @@
 #define C_SWITCH_MACHINE -I/usr/include/bsd
 #define C_DEBUG_SWITCH -O -g3
 
+#endif /* bsd with elf */
+#else /* not BSD_SYSTEM */
+
+#if defined(__GNUC__) && defined(_ABIN32)
+#define LIBS_MACHINE
+#else
+#define LIBS_MACHINE -lmld
+#endif
+
 #endif /* not BSD_SYSTEM */
 #endif /* not NEWSOS5 && not __linux__ */
 
Index: src/m/pmax.h
===================================================================
RCS file: /cvsroot/emacs/emacs/src/m/pmax.h,v
retrieving revision 1.23
diff -u -r1.23 pmax.h
--- src/m/pmax.h	1 Sep 2003 15:45:58 -0000	1.23
+++ src/m/pmax.h	6 Mar 2006 00:50:32 -0000
@@ -13,29 +13,24 @@
 #ifndef __MIPSEB__
 #undef WORDS_BIG_ENDIAN
 #endif
+#if !defined (__NetBSD__)
 #undef LIB_STANDARD
 #undef START_FILES
+#endif
 #undef COFF
 #undef TERMINFO
 #define MAIL_USE_FLOCK
 #define HAVE_UNION_WAIT
 
-
 #ifdef MACH
 #define START_FILES pre-crt0.o /usr/lib/crt0.o
 #else
+#if !defined (__NetBSD__)
 /* This line starts being needed with ultrix 4.0.  */
 /* You must delete it for version 3.1.  */
 #define START_FILES pre-crt0.o /usr/lib/cmplrs/cc/crt0.o
 #endif
-
-#if defined (__NetBSD__) || defined (__OpenBSD__)
-#undef START_FILES
-#define START_FILES pre-crt0.o /usr/lib/crt0.o
-#undef RUN_TIME_REMAP
-#undef UNEXEC
-#define UNEXEC unexelf.o
-#endif /* NetBSD || OpenBSD */
+#endif
 
 /* Supposedly the following will overcome a kernel bug.  */
 #undef LD_SWITCH_MACHINE