0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LLVMでアセンブリから実行ファイルを作成する際にPIEオブジェクト作成エラーが出る

Last updated at Posted at 2024-10-03

適当にC言語でhello.cを書き、

次のコマンドでC言語のファイルをLLVM IRに変換する

clang -S -emit-llvm -O3 hello.c

次のコマンドでLLVM IRからアセンブリファイルにコンパイルする

llc helloworld.ll

次でアセンブリファイルを実行ファイル(バイナリファイル)に変換

clang hello.s -o hello

ここでエラーが出た場合

これすれば変換できました

clang hello.s -no-pie -o hello

リンカに対して、PIEを生成しないよう指示します。つまり、コードは固定されたメモリアドレスで実行されることを前提とします。この形式では、実行ファイルがメモリの特定の位置にロードされる必要がありますが、アドレス空間配置ランダム化(ASLR) などのセキュリティ機能の恩恵は受けません。


実行

./hello

参考サイト
https://qiita.com/Anko_9801/items/df4475fecbddd0d91ccc

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?