[Uclinux-h8-devel] CSCRをアクセスすると実行時エラー

Back to archive index

wakky****@compu***** wakky****@compu*****
2005年 1月 20日 (木) 18:30:17 JST


寺脇です。H8MAXに、
CSCRをアクセスするプログラムを作ったところ、実行時に
>BINFMT_FLAT: reloc outside program 0xfee01f(0-0x6e84/0x69a0),killing
>hello!
>BINFMT_FLAT: reloc outside program 0xfee01f(0-0x6e84/0x69a0),killing
>hello!
>SIGSEGV
というエラーが発生します。

CSCR をアクセスするコードがなければ正常に実行されるのですが、
どうしてでしょう。

ソースコード
  #include <stdio.h>
  #define __KERNEL__
  #include "/root/uClinux-dist-h8300/linux-2.4.x/include/asm-h8300/    
  regs306x.h"
  #define regb(x) ( *( unsigned char* )x )
  int main( int argc, char* argv[] )
  {
    printf( "hello %x\n", regb(CSCR));
  }

開発環境
  http://strawberry-linux.com/h8max/devel.php の通りに構築
NFS使用でのデバッグ
  http://sourceforge.jp/projects/uclinux-h8/files/?release_id=937#937
  にある、linux.bin.gzと、linux-2.4-root.tar.gz を利用
MakeFile は以下のとおり
  CC      = h8300-elf-gcc
  OBJCOPY = h8300-elf-objcopy
  
  #CFLAGS = -mh -mrelax -mint32
  CFLAGS = -mh -mint32
  CFLAGS += -static
  #CFLAGS += -Wl,--entry=main -nostdlib
  #CFLAGS += -nodefaultlibs
  CFLAGS += -nostartfiles /root/uClinux-dist-h8300/lib/uClibc/lib/crt0.o
  #CFLAGS += -finhibit-size-directive -fno-ident -fomit-frame-pointer
  CFLAGS += -I. 
  CFLAGS += -I/root/uClinux-dist-h8300/lib/uClibc/include
  #CFLAGS += -Wall -v -save-temps
  
  #LDFLAGS += -Wl,-T/root/uClinux-dist-h8300/linux-2.4.x/arch/h8300/\
  platform/h8300h/h8max/ram.ld
  LDFLAGS += -L/root/uClinux-dist-h8300/lib/uClibc/lib# -lc -lgcc
  
  #LDFLAGS += -Wl,-r        #-Ur for C++
  LDFLAGS += -Wl,-elf2flt
  #LDFLAGS += -Wl,-elf2flt-lc
  LDFLAGS += -Wl,-move-rodata
  #LDFLAGS += -Wl,--verbose #-Wl,-V
  
  hello:    hello.c Makefile
    ${CC} ${CFLAGS} -o $@ $@.c ${LDFLAGS}
    cp $@ /tftpboot
--
Name   :Katsuhiko Terawaki
Address:5-3 Tashita Hirano-aza Iizaka-machi Fukushima-city
            Fukushima-prefecture Japan.
E-mail :wakky****@compu*****
URL    :http://www.computerartisan.com




Uclinux-h8-devel メーリングリストの案内
Back to archive index