[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:06918] Re: gcl
-
From:cyamauch
-
Date:Fri, 1 Sep 2000 00:02:16 +0900
- Subject: [plamo:06918] Re: gcl
- From: cyamauch@xxxxxxxxxxxxxxxxxxxxx
- Date: Fri, 1 Sep 2000 00:02:16 +0900
- Posted: Fri, 01 Sep 2000 00:02:12 +0900
山内です.
gclの件ですが,3.のAthlonマシンで一応,動くようになり
ましたので,報告します.
NULL_OR_ON_C_STACK(x)というマクロは,要はxのアドレス
がNULL or STACKにあるかヒープにあるかを知るためのものだ
ったようです(実際,私もそのような関数があればいいなと思っ
たことがある).gclではどうやら x >= 0x80000000 でスタッ
クにあるとしていたっぽくて,これが問題のようです.
3.のAthlonマシンでこんな簡単なソース
#include <stdio.h>
int main()
{
int i ;
printf("%lx\n",(long)&i) ;
return(0) ;
}
を走らせてみると,
7ffffa54
という結果が帰ってきます.なんと,スタックは↑のアドレ
スの範囲にはありません.
Linux Kernel Hackers' Guide の
http://khg.redhat.com/HyperNews/get/memory/linuxmm.html
によると,
A user process' view of memory
0xc0000000
The invisible kernel
reserved
initial stack
room for stack growth
4 pages
0x60000000
shared libraries
brk
unused
malloc memory
end_data
uninitialized data
end_code
initialized data
0x00000000
text
となっており,これが正しいなら,スタックとなる可能性の
ある領域は,x >= 0x60000000 となるはずですよね?
そこで,h/386-linux.h の最後に,
#define NULL_OR_ON_C_STACK(x) ( (x)==NULL || (unsigned long)(x) >= 0x60000000 )
をつけてみました.これでconfigure,make するととりあえ
ず動作しているのですが,これで本当に正しいのかどうか,不
安です.というか,たぶん本来はこんなマクロや関数に頼って
ソースを書くのは御法度なんでしょうね...
それと,3.のAthlonマシンと4.のK6-2マシンとの違いで,1
つ気づいた事があります.3.ではカーネルのサポートするメモ
リを2GBにしていたのに対し,4.では1GBにしていた事です.
2GBのカーネルと1GBのそれとでは,ユーザメモリの扱いが異
なっているのかなー,だから,4.では動いたのかなーとか推測
しております.Plamo2.0のデフォルトのカーネルは2GBなんで
したっけ?
------ ------
Chisato Yamauchi
Mail: cyamauch@phyas.aichi-edu.ac.jp
cyamauch@hst.phyas.aichi-edu.ac.jp
URL: http://phe.phyas.aichi-edu.ac.jp/~cyamauch/
------ ------
- Follow-Ups
-
- [plamo:06929] Re: gcl, Seiji Fukagawa
[検索ページ]
[メール一覧]
Plamo ML 公開システム