PIEとは PIE(Position Independent Executable)はプログラムをロードするアドレスが固定ではない実行ファイルです。OSはロードアドレスをランダム化することで安全性を上げることができます。 gccに-pieというオプションがかなり昔からありましたが、単にこのオプションをつけるだけでPIEとして実行できるわけではなく、実行直前にダイナミックリンカがアドレスを解決する必要があったので、スタティックリンクした場合にはPIEにはなりませんでした。 しかし、最近gccに-static-pie というオプションがいつの間にか追加されていることに気がつきました。 hello worldでmain関数のアドレスを調べてみる AArch64のUbuntu 22.04を使用しています。 テストプログラムはこちら。