リンカ・ローダと実行形式

組込み向けの開発で使うリンカスクリプトの役割として正しいものはどれか。

  1. A各セクションを、フラッシュやRAMなどのどの番地に配置するかをリンカに指示する
  2. Bプログラムのテストを自動で実行する手順を書く
  3. Cソースコードの書き方の規則を定めて、違反を知らせる
答えと解説を見る

正解:A. 各セクションを、フラッシュやRAMなどのどの番地に配置するかをリンカに指示する

パソコンのOSではローダが番地を決めますが、マイコンでは電源を入れた時点の番地がそのまま使われます。リンカスクリプトには、フラッシュとRAMの開始番地と大きさを書き、.textや定数はフラッシュに、.dataや.bss、スタックはRAMに置く、といった配置を指定します。割り込みベクタのように決まった番地に置く必要があるものも、ここで指定します。

  • A. 正しい。メモリの配置を細かく決められます。
  • B. テストの自動化とは別の仕組みです。
  • C. それは静的解析ツールなどの役割です。
この分野を解く 分野ページへ

リンカ・ローダと実行形式のほかの問題

  1. OSのないマイコンで、電源を入れた直後に起動コードがmainを呼ぶ前に行う処理として正しいものはどれか。
  2. ELFのファイルにおける「セクション」と「セグメント」の違いとして正しいものはどれか。
  3. メモリのページに「書き込み可能」と「実行可能」を同時には許さない(W^X、書き込みと実行の分離)ことで防ぎやすくなる攻撃はどれか。
  4. Linuxの共有ライブラリで、libfoo.so.1の「.1」のようなsonameのバージョン番号を上げるのは、一般にどのようなときか。
  5. Linuxでlddコマンドを実行ファイルに使うと分かることはどれか。