(toppers-users 4182) Re: kernel_cfg.timestampでのSegmentation Fault

Shinya Honda honda @ ertl.jp
2013年 12月 3日 (火) 23:05:58 JST


本田です.

確認ありがとうございます.こちらのでもほぼ同様の環境でビルドしてみました
が,cfgをスタティックリンクすることなく,スクリプトの実行が成功しました.

・ホスト
  Ubuntu 12.04 LTS 32bit
・コンパイラ
  https://launchpad.net/~terry.guo/+archive/gcc-arm-embedded
  に従ってapt-get でインストール

何が違うんですかね.可能ならそちらでビルドしたcfgを送ってもらえないで
しょうか.

以上,よろしくお願いします.

(2013/12/03 22:32), Masaki Muranaka wrote:
> こんにちは.
> 
> 手元(…とはいっても雲の向こうのAWS EC2インスタンスですが)の Ubuntu 12.04.3 LTS でも下記の通り SEGV が出ました.
> safeg-0.5-armadillo-800-eva-6mar2013/tools/auto_build にあるシェルスクリプトを順に実行しただけです.
> GCC は https://launchpad.net/~terry.guo/+archive/gcc-arm-embedded にあったものを使っています.
> safeg-0.5-armadillo-800-eva-6mar2013/asp/cfg/cfg/cfg
> をスタティックリンクしましたが,同様の SEGV が出ます.
> 
> もしかしたら,Debian or Ubuntu で簡単に切り分けられる話でも,ないかもしれません.
> 
>> arm-none-eabi-nm -C cfg1_out.elf > cfg1_out.syms
> arm-none-eabi-objcopy -O srec -S cfg1_out.elf cfg1_out.srec
> ../../asp/cfg/cfg/cfg --pass 2 --kernel asp -I. -I../../asp/include
> -I../../asp/arch -I../../asp  -I../../asp/target/armadillo-800-eva_gcc
> -I../../asp/arch/arm_gcc/safeg -I../../asp/arch/arm_gcc/rma1
> -I../../asp/arch/arm_gcc/common -I../../asp/arch/gcc \
> -T ../../asp/target/armadillo-800-eva_gcc/target.tf --api-table
> ../../asp/kernel/kernel_api.csv --cfg1-def-table
> ../../asp/kernel/kernel_def.csv  --cfg1-def-table
> ../../asp/arch/arm_gcc/common/core_def.csv  sample1.cfg
> make: *** [kernel_cfg.timestamp] Segmentation fault (core dumped)
> arm-none-eabi-gcc  -mlittle-endian -mcpu=cortex-a9 -g -Wall -O2
> -DTOPPERS_SAFEG_SECURE -DTOPPERS_SAFEG_COM -DTOPPERS_SAFEG_LOAD
> -D__TARGET_ARCH_ARM=7 -I. -I../../asp/include -I../../asp/arch
> -I../../asp  -I../../asp/target/armadillo-800-eva_gcc
> -I../../asp/arch/arm_gcc/safeg -I../../asp/arch/arm_gcc/rma1
> -I../../asp/arch/arm_gcc/common -I../../asp/arch/gcc  -nostdlib
> -mlittle-endian -N -mcpu=cortex-a9 -Wl,-Ttext,0x5f000000 -T
> ../../asp/target/armadillo-800-eva_gcc/armadillo-800-eva.ld  -o
> cfg1_out.elf \
> cfg1_out.o
> arm-none-eabi-nm -C cfg1_out.elf > cfg1_out.syms
> arm-none-eabi-objcopy -O srec -S cfg1_out.elf cfg1_out.srec
> ../../asp/cfg/cfg/cfg --pass 2 --kernel asp -I. -I../../asp/include
> -I../../asp/arch -I../../asp  -I../../asp/target/armadillo-800-eva_gcc
> -I../../asp/arch/arm_gcc/safeg -I../../asp/arch/arm_gcc/rma1
> -I../../asp/arch/arm_gcc/common -I../../asp/arch/gcc \
> -T ../../asp/target/armadillo-800-eva_gcc/target.tf --api-table
> ../../asp/kernel/kernel_api.csv --cfg1-def-table
> ../../asp/kernel/kernel_def.csv  --cfg1-def-table
> ../../asp/arch/arm_gcc/common/core_def.csv  sample1.cfg
> make: *** [kernel_cfg.timestamp] Segmentation fault (core dumped)
>>> building SafeG
>> 
> 2013年12月3日 13:26 Shinya Honda <honda @ ertl.jp>:
>> みつさん
>>
>> 本田です.
>>
>> スタティックリンクですが,最後にcfgを作成するときに-static と -lpthread を付ければリンクできました.
>>
>> -----------------------------------------------------------------------
>>   g++ -static -O2  -o cfg cfg.o cfg0.o cfg1.o cfg2.o cfg3.o cfg4.o
>> cfg_version.o -L/usr/lib -L/usr/lib ../toppers/itronx/libitronx.a
>> ../toppers/oil/liboil.a ../toppers/libtoppers.a   -lboost_system
>> -lboost_filesystem -lboost_program_options -lboost_regex -lpthread
>> -----------------------------------------------------------------------
>>
>> スタティックリンクしたものでも同じエラーとなりました.
>>
>> UbuntuでスタティックリンクしたcfgをATDEに持ってきたら動作しました.
>>
>> 以上,よろしくお願いします.
>>
>> (2013/12/03 12:45), mitsu.takada @ nifty.ne.jp wrote:
>>>
>>> 本田さん
>>>
>>> みつです。
>>> 全部エラーになるのはおかしいですね。
>>> ATDEのコンパイル環境とホスト環境のライブラリがずれているような気もします。
>>>
>>> いまのmsysと同様にスタティックリンクで作成されるとどうでしょうか。
>>> #アットマークテクノさんがどう検証されたのかわかりませんが。
>>>
>>> 2013/12/03 11:35、Shinya Honda <honda @ ertl.jp> のメール:
>>>
>>>> みつさん
>>>>
>>>> 本田です.
>>>>
>>>> cfg1_out::~cfg1_out() のコメントアウトを試してみましたが駄目でし た.1.7,1.8,1.9共にエラーになります.
>>>>
>>>> どうやらATDE上でビルドしたcfgは軒並みエラーとなるようです.
>>>>
>>>> 以上,よろしくお願いします.
>>>>
>>>> (2013/12/03 10:53), mitsu.takada @ nifty.ne.jp wrote:
>>>>>
>>>>> 鈴木さん
>>>>>
>>>>> こんにちは,みつといいます。
>>>>> メッセージをみるとcfgがpass2の実行時に落ちているのだと思います。
>>>>> ATDEは使ったことがないのですが,ホスト環境はDebianなのですね。
>>>>>
>>>>> cfgはDebianの中で作成されていると思うのですが,
>>>>> toppers/itronx/cfg1_out.c にある cfg1_out::~cfg1_out() の「delete
>>>>> pimpl_」をコメントアウトしてcfgを再ビルドされるとどうでしょうか。
>>>>>
>>>>> 2013/12/03 2:39、Juggler Shu <shu @ jugglershu.net> のメール:
>>>>>
>>>>>> 返信ありがとうございます。
>>>>>>
>>>>>> 利用しているsafegのバージョンは以下のものです。
>>>>>> - safeg-0.5-armadillo-800-eva-6mar2013
>>>>>>
>>>>>> ログを見る限り、以下のバージョンのソースコードをfetch_sources.shは取って きているようです。
>>>>>> - linux-2.6.35-a800eva-at3.tar.gz
>>>>>> - asp_armadillo-800-eva_gcc-20130221.tar.gz
>>>>>> - cfg-1.8.0.tar.gz
>>>>>>
>>>>>> なお、コンパイラはATDE4に追加で
>>>>>> gcc-arm-none-eabi-4_7-2013q3
>>>>>> をダウンロードし、コンパイルしてインストールしました。
>>>>>>
>>>>>> 以下に、build_all.shスクリプトでエラーが起きた箇所のビルドログを貼り付け ます。
>>>>>> 何か環境等、確認すべきものがあればお教え下さい。
>>>>>> よろしくお願い致します。
>>>>>>
>>>>>> ----BEGIN----
>>>>>> LIBBOOST_SUFFIX=
>>>>>> BOOST_VERSION=1_55
>>>>>> BOOST_DIR=/usr/local/include
>>>>>> LIBBOOST_DIR=/usr/local/lib
>>>>>> OPTIONS=
>>>>>> make BOOST_DIR="/usr/local/include" LIBBOOST_SUFFIX="" CXXFLAGS="-O2 "
>>>>>> -C toppers
>>>>>> make[1]: ディレクトリ
>>>>>> `/home/atmark/Downloads/safeg/safeg-0.5-armadillo-800-eva-6mar2013/asp/cfg/toppers'
>>>>>> に入ります
>>>>>> make[1]: `all' に対して行うべき事はありません.
>>>>>> make[1]: ディレクトリ
>>>>>> `/home/atmark/Downloads/safeg/safeg-0.5-armadillo-800-eva-6mar2013/asp/cfg/toppers'
>>>>>> から出ます
>>>>>> make BOOST_DIR="/usr/local/include" LIBBOOST_SUFFIX="" CXXFLAGS="-O2 "
>>>>>> -C toppers/itronx
>>>>>> make[1]: ディレクトリ
>>>>>> `/home/atmark/Downloads/safeg/safeg-0.5-armadillo-800-eva-6mar2013/asp/cfg/toppers/itronx'
>>>>>> に入ります
>>>>>> make[1]: `all' に対して行うべき事はありません.
>>>>>> make[1]: ディレクトリ
>>>>>> `/home/atmark/Downloads/safeg/safeg-0.5-armadillo-800-eva-6mar2013/asp/cfg/toppers/itronx'
>>>>>> から出ます
>>>>>> make BOOST_DIR="/usr/local/include" LIBBOOST_SUFFIX="" CXXFLAGS="-O2 "
>>>>>> -C cfg
>>>>>> make[1]: ディレクトリ
>>>>>> `/home/atmark/Downloads/safeg/safeg-0.5-armadillo-800-eva-6mar2013/asp/cfg/cfg'
>>>>>> に入ります
>>>>>> make[1]: `all' に対して行うべき事はありません.
>>>>>> make[1]: ディレクトリ
>>>>>> `/home/atmark/Downloads/safeg/safeg-0.5-armadillo-800-eva-6mar2013/asp/cfg/cfg'
>>>>>> から出ます
>>>>>> if ! [ -f Makefile.depend ]; then \
>>>>>>          rm -f kernel_cfg.timestamp kernel_cfg.c kernel_cfg.h ; \
>>>>>>          rm -f cfg1_out.c cfg1_out.o cfg1_out.elf cfg1_out.syms
>>>>>> cfg1_out.srec; \
>>>>>>          rm -f makeoffset.s offset.h; \
>>>>>>      fi
>>>>>> rm -f Makefile.depend
>>>>>> ../../asp/cfg/cfg/cfg --pass 1 --kernel asp -I. -I../../asp/include
>>>>>> -I../../asp/arch -I../../asp -I../../asp/target/armadillo-800-eva_gcc
>>>>>> -I../../asp/arch/arm_gcc/safeg -I../../asp/arch/arm_gcc/rma1
>>>>>> -I../../asp/arch/arm_gcc/common -I../../asp/arch/gcc --api-table
>>>>>> ../../asp/kernel/kernel_api.csv --cfg1-def-table
>>>>>> ../../asp/kernel/kernel_def.csv  --cfg1-def-table
>>>>>> ../../asp/arch/arm_gcc/common/core_def.csv  sample1.cfg
>>>>>> arm-none-eabi-gcc -c  -mlittle-endian -mcpu=cortex-a9 -g -Wall -O2
>>>>>> -DTOPPERS_SAFEG_SECURE -DTOPPERS_SAFEG_COM -DTOPPERS_SAFEG_LOAD
>>>>>> -D__TARGET_ARCH_ARM=7 -I. -I../../asp/include -I../../asp/arch -I../../asp
>>>>>> -I../../asp/target/armadillo-800-eva_gcc -I../../asp/arch/arm_gcc/safeg
>>>>>> -I../../asp/arch/arm_gcc/rma1 -I../../asp/arch/arm_gcc/common
>>>>>> -I../../asp/arch/gcc   -DALLFUNC -I../../asp/kernel cfg1_out.c
>>>>>> arm-none-eabi-gcc  -mlittle-endian -mcpu=cortex-a9 -g -Wall -O2
>>>>>> -DTOPPERS_SAFEG_SECURE -DTOPPERS_SAFEG_COM -DTOPPERS_SAFEG_LOAD
>>>>>> -D__TARGET_ARCH_ARM=7 -I. -I../../asp/include -I../../asp/arch -I../../asp
>>>>>> -I../../asp/target/armadillo-800-eva_gcc -I../../asp/arch/arm_gcc/safeg
>>>>>> -I../../asp/arch/arm_gcc/rma1 -I../../asp/arch/arm_gcc/common
>>>>>> -I../../asp/arch/gcc  -nostdlib -mlittle-endian -N -mcpu=cortex-a9
>>>>>> -Wl,-Ttext,0x5f000000 -T
>>>>>> ../../asp/target/armadillo-800-eva_gcc/armadillo-800-eva.ld  -o cfg1_out.elf
>>>>>> \
>>>>>>                           cfg1_out.o
>>>>>> arm-none-eabi-nm -C cfg1_out.elf > cfg1_out.syms
>>>>>> arm-none-eabi-objcopy -O srec -S cfg1_out.elf cfg1_out.srec
>>>>>> ../../asp/cfg/cfg/cfg --pass 2 --kernel asp -I. -I../../asp/include
>>>>>> -I../../asp/arch -I../../asp -I../../asp/target/armadillo-800-eva_gcc
>>>>>> -I../../asp/arch/arm_gcc/safeg -I../../asp/arch/arm_gcc/rma1
>>>>>> -I../../asp/arch/arm_gcc/common -I../../asp/arch/gcc \
>>>>>>                  -T ../../asp/target/armadillo-800-eva_gcc/target.tf
>>>>>> --api-table ../../asp/kernel/kernel_api.csv --cfg1-def-table
>>>>>> ../../asp/kernel/kernel_def.csv  --cfg1-def-table
>>>>>> ../../asp/arch/arm_gcc/common/core_def.csv  sample1.cfg
>>>>>> make: *** [kernel_cfg.timestamp] セグメンテーション違反です
>>>>>> arm-none-eabi-gcc  -mlittle-endian -mcpu=cortex-a9 -g -Wall -O2
>>>>>> -DTOPPERS_SAFEG_SECURE -DTOPPERS_SAFEG_COM -DTOPPERS_SAFEG_LOAD
>>>>>> -D__TARGET_ARCH_ARM=7 -I. -I../../asp/include -I../../asp/arch -I../../asp
>>>>>> -I../../asp/target/armadillo-800-eva_gcc -I../../asp/arch/arm_gcc/safeg
>>>>>> -I../../asp/arch/arm_gcc/rma1 -I../../asp/arch/arm_gcc/common
>>>>>> -I../../asp/arch/gcc  -nostdlib -mlittle-endian -N -mcpu=cortex-a9
>>>>>> -Wl,-Ttext,0x5f000000 -T
>>>>>> ../../asp/target/armadillo-800-eva_gcc/armadillo-800-eva.ld  -o cfg1_out.elf
>>>>>> \
>>>>>>                           cfg1_out.o
>>>>>> arm-none-eabi-nm -C cfg1_out.elf > cfg1_out.syms
>>>>>> arm-none-eabi-objcopy -O srec -S cfg1_out.elf cfg1_out.srec
>>>>>> ../../asp/cfg/cfg/cfg --pass 2 --kernel asp -I. -I../../asp/include
>>>>>> -I../../asp/arch -I../../asp -I../../asp/target/armadillo-800-eva_gcc
>>>>>> -I../../asp/arch/arm_gcc/safeg -I../../asp/arch/arm_gcc/rma1
>>>>>> -I../../asp/arch/arm_gcc/common -I../../asp/arch/gcc \
>>>>>>                  -T ../../asp/target/armadillo-800-eva_gcc/target.tf
>>>>>> --api-table ../../asp/kernel/kernel_api.csv --cfg1-def-table
>>>>>> ../../asp/kernel/kernel_def.csv  --cfg1-def-table
>>>>>> ../../asp/arch/arm_gcc/common/core_def.csv  sample1.cfg
>>>>>> make: *** [kernel_cfg.timestamp] セグメンテーション違反です
>>>>>>>>
>>>>>>>> building SafeG
>>>>>>
>>>>>> arm-none-eabi-gcc -c -DSAFEG_RMA1 -DPROF_SUPPORT
>>>>>> -DDUALOS_DEVICE_SHARING -mcpu=cortex-a9 -msoft-float -g -Wall -Wextra
>>>>>> -Werror -I . -DSECURE_START_ADDRESS=0x5f000000
>>>>>> -DNORMAL_START_ADDRESS=0xe80c0000 -D__TARGET_ARCH_ARM=7 -O2 safeg.S
>>>>>> arm-none-eabi-gcc -c -DSAFEG_RMA1 -DPROF_SUPPORT
>>>>>> -DDUALOS_DEVICE_SHARING -mcpu=cortex-a9 -msoft-float -g -Wall -Wextra
>>>>>> -Werror -I . -DSECURE_START_ADDRESS=0x5f000000
>>>>>> -DNORMAL_START_ADDRESS=0xe80c0000 -D__TARGET_ARCH_ARM=7 -O2 crt0-safeg.S
>>>>>> arm-none-eabi-gcc -mcpu=cortex-a9 -msoft-float -static -nostdlib -lgcc
>>>>>> -Wl,-Ttext,0x5f800000 -T safeg.lds safeg_start.o safeg.o crt0-safeg.o -o
>>>>>> safeg.elf
>>>>>> arm-none-eabi-objcopy -O binary -S safeg.elf safeg.bin
>>>>>>>>
>>>>>>>> copying binary files
>>>>>>
>>>>>> mkdir: ディレクトリ `./tools/auto_build/output' を作成できません: ファイ ルが存在します
>>>>>> cp: `./app/sample1_s/asp.elf' を stat できません: そのようなファイルや ディレクト
>>>>>> ----END----
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 12/2/13 2:32 PM, Shinya Honda wrote:
>>>>>>>
>>>>>>> 鈴木さん
>>>>>>>
>>>>>>> 本田です.
>>>>>>>
>>>>>>> こちらでは,ATDE4でビルド出来ています.
>>>>>>>
>>>>>>> 下記の情報だけでは判断できないので,ビルドログや使われたソースのバー ジョ ンを提示頂けないでしょうか.
>>>>>>>
>>>>>>> 以上,よろしくお願いします.
>>>>>>>
>>>>>>> (2013/12/01 18:22), Juggler Shu wrote:
>>>>>>>>
>>>>>>>> はじめまして。現在TrustZone関連の技術について調べておりまして、
>>>>>>>> safegをArmadillo-800evaで動作させたいと考えているものです。
>>>>>>>> プリビルド版に関しては問題なく動作しているようなのですが、コードの変更な
>>>>>>>> どを入れたいと考え
>>>>>>>> ソースコードからビルドしようとしました。
>>>>>>>>
>>>>>>>> そうしたところ、ASPのsample1をビルドしようとしたところで以下のエラーと
>>>>>>>> なってしまいました。
>>>>>>>>
>>>>>>>> make: *** [kernel_cfg.timestamp] セグメンテーション違反です
>>>>>>>>
>>>>>>>> 1つずつ手動でビルドした場合でも、build_all.shスクリプトを用いた場合でも
>>>>>>>> 同様のようでした。
>>>>>>>> バイナリは出来上がっているようなのですが。
>>>>>>>>
>>>>>>>> ビルド環境はArmadilloで提供されているATDE4を用いています。
>>>>>>>>
>>>>>>>> このエラーを修正する方法がありましたら、お教えいただきたいです。
>>>>>>>> よろしくお願い致します。
>>>>>>>>
>>>>>>>> 鈴木秀一郎
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>