map.noexstk,no_exec_userstack

  • スタック領域でno execute(NX)ビットを有効にさせるためコンパイル時に指定する.
  • gccで使用するときはオプション-Wl,-M,/usr/lib/ld/map.noexstkをつける.
  • ファイル内容
stack = STACK ?RW;
  • 他にもmap.noexdataというファイルもある.これはSolaris9にはなかった(?)
data = ?RW;
  • /etc/systemでno_exec_userstackを指定するとほぼ全てのアプリケーションでスタック領域からの実行が出来なくなる
  • no_exec_userstackはSPARC環境ではかなり以前から有効だったが,32ビットx86環境ではSolaris9以前有効ではなかった.Solaris10では32ビットでも有効になった(?)
  • リンク