DrumatoのBlog

CS/Network/Infraが好きな桃です.

readelf -hの簡易版・省略版を作成するミニ記事

目次

  • 目次
    • 注意
  • 概要
  • 本題:ELFヘッダを見る
  • 本題2:GoでELFヘッダを解析する
  • 総評

注意

readelf 実装 で検索すると未だに一番上に出てきてしまっているので注意.
これはelfについて全然詳しくない時期に書いたものです.
一応入門的内容についてまとめたものがあるので,
よろしければそちらを.

zenn.dev

概要

コンパイラ自作をとても楽しくやっている私ですが、
どうせコンパイラを作るならバイナリ生成までやらせたいものです。

もっと具体的に言うと、
アセンブリから機械語を生成するアセンブラ( ソフトウェアとしての )を作ってみたいですよね。

アセンブラ自作への欲求はコンパイラ自作を楽しんでる人たちで共有していると思いますが、
これはかなり難しくて、少なくとも次の知識が 必須 になります。
必要な知識のごく一部のみを取り上げます。

まずはELFの理解を深めようということで、
readelfの自作を始めました。

readelfLinuxで用いることができるコマンドで、
elfフォーマットのファイルを見やすく表示したり、
いろんな情報を簡単に見ることができるというものです。

一番有名なのは

$ readelf -h hello

のように、
ELFヘッダを解析するオプション-hを付けた出力ですね。

この ELFヘッダ解析 に焦点を当てて、
ミニ記事ではありますがお話をしていきたいと思います。

今回用いているコードは

https://github.com/drumato/goccgithub.com

elf/以下に置いてあるので参考までに。

続きを読む