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