(toppers-users 2710) Re: UbuntuでJSPシミュレーション環境のインストールについての質問

moneyqb moneyqb @ gmail.com
2008年 1月 14日 (月) 19:08:33 JST


こんにちは、センヒョウです。

> だが、jspを実行してみると、下記のメッセージが出てきました:
> moneyqb @ moneyqb:~/work/jsp$ ./jsp
> --------------------------------------------------------------
> Segmentation fault (core dumped)
> --------------------------------------------------------------

上記のエラーにたいして、GDBを使って追ってみました。
そして、下記のファイルでの下記の関数の70行目までに止まっていたとわかりま
した。
------------------------------------------------
ファイル名:config/linux/cpu_config.c
59      void
60      dispatch()
61      {
62          sigset_t waitmask;
63          sigemptyset(&waitmask);
64          sigaddset(&waitmask,SIGUSR1);
65              if (enadsp && (!runtsk || (runtsk != schedtsk
66                              && _setjmp(runtsk->tskctxb.env) == 0))){
67                  while (!(runtsk = schedtsk)) {
68                      sigsuspend(&waitmask);
69                  }
70                  _longjmp(runtsk->tskctxb.env, 1);
71              }else{
72                  calltex();
73              }
74      }
------------------------------------------------
_longjmpまで止まりましたので、
おそらく下記の修正と繋がりがあるようです。

> 自分のマシンのUbuntuシステムにsetjmp.hには
> > JB_PCとJB_SPの定義はないですので、
> > cpu_context.hにJB_PCとJB_SPの定義を追加しました:
> > ------------------------------
> > #define JB_SP 4 
> > #define JB_PC 5 
> > ------------------------------

それは酔漢さんの言ったように、再移植が必要ということですか?

setjmpを理解した上で、ここから先に追ってみようと思っていますが、
なかなか難しいと思います。

以上、よろしくお願いいたします。


2008-01-14 (月) の 17:41 +0900 に moneyqb さんは書きました:
> こんにちは、センヒョウです。
わたしの問題を解決するのは簡単で
> 
> > 自分のマシンのUbuntuシステムにsetjmp.hには
> > JB_PCとJB_SPの定義はないですので、
> > cpu_context.hにJB_PCとJB_SPの定義を追加しました:
> > ------------------------------
> > #define JB_SP 4 
> > #define JB_PC 5 
> > ------------------------------
> > そして、makeをかけると、また別のエラーが起きました:
> にもかかわらず、マクロの定義をcpu_context.hに追加しました。
> そしてmakeをかけると、予想のとおり、
> software_term_hook未定義というエラーが起きました。
> 
> JSPプロジェクトにsoftware_term_hookをグレープしてみると、
> software_term_hookはsystask下のnewlibrt.cに定義されてある、
> と見れています。
> 
> そして、メインフォルダ下のMakefileを修正します。
> STASK_COBJS := $(STASK_COBJS) timer.o linux_serial.o linux_sigio.o
> logtask.o \
>  log_output.o vasyslog.o t_perror.o strerror.oの後ろに、
> newlibrt.oを追加しました。
> 
> newlibrt.cの中に、C++とmain関数にかかわるものは全てコメントアウトしまし
> た。
> 
> そしてmakeをかけると、無事に終わりました。
> 
> だが、jspを実行してみると、下記のメッセージが出てきました:
> moneyqb @ moneyqb:~/work/jsp$ ./jsp
> --------------------------------------------------------------
> Segmentation fault (core dumped)
> --------------------------------------------------------------
> 
> 何かヒントなどをいただければと思いますが...
> 
> 以上、よろしくお願いいたします。
> 
> > 自分のマシンのUbuntuシステムにsetjmp.hには
> > JB_PCとJB_SPの定義はないですので、
> > cpu_context.hにJB_PCとJB_SPの定義を追加しました:
> > ------------------------------
> > #define JB_SP 4 
> > #define JB_PC 5 
> > ------------------------------
> > そして、makeをかけると、また別のエラーが起きました:
> > --------------------------------
> > gcc -S  -g -O2    -DGDB_STUB -I. -I../include  -I../config/linux
> > -I../kernel kernel_chk.c
> > In file included from ../include/kernel.h:83,
> >                  from ../kernel/jsp_kernel.h:61,
> >                  from kernel_chk.c:1:
> > ../config/linux/cpu_defs.h: In function ‘kernel_abort’:
> > ../config/linux/cpu_defs.h:88: 警告: incompatible implicit declaration
> > of built-in function ‘exit’
> > ../utils/gencheck kernel_chk.s > tmpfile2
> > mv tmpfile2 jsp.chk
> > gcc  -g -O2    -DGDB_STUB -I. -I../include  -I../config/linux   -o jsp \
> >                           sample1.o     timer.o linux_serial.o
> > linux_sigio.o logtask.o log_output.o vasyslog.o t_perror.o strerror.o
> > kernel_cfg.o   libkernel.a   -lgcc 
> > libkernel.a(startup.o): In function `call_atexit':
> > /home/moneyqb/work/jsp/poi/../config/linux/tool_config.h:70: undefined
> > reference to `software_term_hook'
> > collect2: ld はステータス 1 で終了しました
> > make: *** [jsp] エラー 1
> > ---------------------------------
> 
> 2008-01-11 (金) の 22:06 +0900 に 酔漢 さんは書きました:
> > こんにちは、酔漢と申します
> > 
> > 
> > moneyqb さんは書きました:
> > > TOPPERSの皆様
> > >
> > > センヒョウです。
> > > はじめましてどうもよろしくお願いします。
> > >
> > > jsp-1.4.3をUbuntu7.04にインストールするときに、
> > > コンパイルでさえできませんでした。
> > > 助けていただけませんか。
> > >
> > > 手順は下記の通りです:
> > > 1.configure -C linux
> > > 2.make depend
> > > 3.make
> > >
> > > 上記の3で、下記のエラーがでました:
> > >   
> > Ubuntu 7.10とOpenSUSE 10.1で試してみたところ、まったく同じ問題がおきました。
> > doc/linux.txtが2003年となっています。検索してみたところ、ある時期から 
> > linuxのsetjump.hからJB_PCの定義が消えているようです。再移植が必要だと思 
> > われます。
> >