現在、C で SAM7X256 マイクロコントローラー用のソフトウェアを開発しようとしています。デバイスは contiki OS を実行しており、yagarto ツールチェーンを使用しています。
マップ ファイルを調べているときに (なぜ .text 領域が大きくなったのかを解明しようとするため)、.text 領域の数 kb がアンワインド サポートに割り当てられていることを発見しました (以下を参照)。
.text 0x00116824 0xee4 c:/toolchains/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.2\libgcc.a(unwind-arm.o)
0x00116c4c _Unwind_VRS_Get
......
0x0011763c __gnu_Unwind_Backtrace
.text 0x00117708 0x1b0 c:/toolchains/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.2\libgcc.a(libunwind.o)
0x00117708 __restore_core_regs
0x00117708 restore_core_regs
....
0x00117894 _Unwind_Backtrace
.text 0x001178b8 0x558 c:/toolchains/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.2\libgcc.a(pr-support.o)
0x00117958 __gnu_unwind_execute
...
0x00117e08 _Unwind_GetTextRelBase
巻き戻しに関する情報を探してみたところ、1と2が見つかりました。ただし、次のことはまだ不明です。
- 巻き戻しサポートが必要な場合と理由は?
- 私のコードのどの部分が pr-support.o、unwind-arm.o、および libunwind.o をリンクさせているのですか?
- 該当する場合、以下の項目をリンクしないようにするにはどうすればよいですか?
必要に応じて、完全なマップ ファイルへのリンクを含めます。
よろしくお願いいたします。
編集 1: リンカー コマンドの追加
CC = arm-none-eabi-gcc
CFLAGSNO = -I. -I$(CONTIKI)/core -I$(CONTIKI_CPU) -I$(CONTIKI_CPU)/loader \
-I$(CONTIKI_CPU)/dbg-io \
-I$(CONTIKI)/platform/$(TARGET) \
${addprefix -I,$(APPDIRS)} \
-DWITH_UIP -DWITH_ASCII -DMCK=$(MCK) \
-Wall $(ARCH_FLAGS) -g -D SUBTARGET=$(SUBTARGET)
CFLAGS += $(CFLAGSNO) -O -DRUN_AS_SYSTEM -DROM_RUN -ffunction-sections
LDFLAGS += -L $(CONTIKI_CPU) --verbose -T $(LINKERSCRIPT) -nostartfiles -Wl,-Map,$(TARGET).map
$(CC) $(LDFLAGS) $(CFLAGS) -nostartfiles -o project.elf -lc Project.a