タグ

ブックマーク / mkosaki.blog46.fc2.com (7)

  • 革命の日々! a.out からコンパイラバージョンを取得する方法

    忘れないうちにメモ Linuxで普通に実行ファイルつくると.commentセクションとデバッグインフォメーションの 二箇所にコンパイラのバージョンが入ってる。これはobjdumpやreadelfで観測できる。 なぜこんなテクニックを知る必要があるかというとバグ報告で嘘のコンパイラバージョンを 報告してくる輩はけしてレアではないからである 1つめ。.comment セクションを objdumpで表示 % objdump -s -j .comment a.out a.out: file format elf64-x86-64 Contents of section .comment: 0000 4743433a 2028474e 55292034 2e342e36 GCC: (GNU) 4.4.6 0010 20323031 32303330 35202852 65642048 2012030

    革命の日々! a.out からコンパイラバージョンを取得する方法
  • 革命の日々! glibc の malloc hookが消える?

    なんか、glibc 2.14のリリースノートでmalloc hookはthread unsafeだから そのうち消すよーとか言ってますな http://sourceware.org/ml/libc-alpha/2011-05/msg00103.html * The malloc hook implementation is marked deprecated and will be removed from the default implementation in the next version. The design never worked ever since the introduction of threads. Even programs which do not create threads themselves can use multiple threads crea

    embedded
    embedded 2013/02/11
    malloc_hookはthread unsafe。ハマる前によく検索すればよかった。
  • 革命の日々! シーケンスロック その4(コンパイラの野望を打ち砕け!)

    引きだけで終わってしまった前回のつづきです。 最近2件つづけて「トイレ スピンロック」というキーワードでうちのサイトにやってきた人がいました。 どうやらLinuxでロック=トイレという常識は予想以上に広まっているようです。 赤レンジャーも負けてはいられません(マテ さて、今回からいよいよ rmb(), wmb() の謎に迫っていくわけであるが、そもそも、なぜにこげなモノが必要なのだろう? Why? それは、プログラムは人間が書いた順番では動かないからである。 プログラムは決して思ったとおりには動かない――― 書いたとおりには動くけど。 -- 詠み人不明 という古の格言を無視するような発言であるが、これは一面において事実である。 なぜなら、コンパイラには最適化、CPUにはアウトオブオーダ実行というものがあるからだ。 これが普段問題にならないのは、ソースコードに書いた順番に実行したときと異なる

    embedded
    embedded 2012/09/08
    smp_rmb(), smp_wmb()はコンパイラの過度な最適化を防ぐ。
  • 革命の日々! PSSとUSS

    http://journal.mycom.co.jp/news/2008/04/18/007/index.html プロセス管理機構も見直され、プロセスごとのメモリ使用量をかんたんに測定できる機能が追加された。カーネル2.6.25では、プロセスが使用するページに対応する物理ページ配置をプロセスごとに/proc/$PID/pagemapsとして作成、これを他のプロセスと比較することで共有するページを判別できる。共有ページを共有しているプロセスの数で除した数値を持つ「proportional set size (PSS)」と、共有されていないページをカウントした「unique set size (USS)」という2つの統計値も新設された。 この説明はへんだ。 カーネル内にUSSという統計値は存在しない。また、pagemapsというファイルは存在しない(pagemapだ) pagemapはページ

    embedded
    embedded 2011/09/27
    USS、PSSは/proc/$PID/smaps を見る
  • 革命の日々! A new GCC runtime library license snag?

    http://lwn.net/Articles/343608/rss 新しいgccで、GPLv2のプログラムをコンパイルすると再配布不可能になるよ。という話。よく知られているように、gccはコンパイル時に(勝手に)libgccをリンクする。これは除算のサポート等が含まれている。うろ覚えだけどC++の例外の補助コード等もここ。 んで、勝手にリンクされる都合上、あんまりきつい制約に出来ないのでGPLなんだけど、特別免除としてプロプラなライセンスとリンクしてもOKということにしてあげるよ。ということになっている。 で、このGCC runtimeのライセンスが、gcc 4.4からGPLv3になった。で、プロプラなライセンスは従来の特赦条項で救われるのでOKだけど、GPLv2は再配布時にライセンス変更しちゃダメ条項があり、かつ、GPLv2とGPLv3はincompatibleなので、自動的にライセン

  • 革命の日々! /proc/[pid]/maps ファイルの見方

    何回もソース読んだはずなのにすぐ忘れてしまう。 08048000-08049000 r-xp 00000000 16:44 66267 /home/foo/a.out 08049000-0804a000 rw-p 00000000 16:44 66267 /home/foo/a.out 40000000-40016000 r-xp 00000000 16:42 442401 /lib/ld-2.2.4.so 40016000-40017000 rw-p 00015000 16:42 442401 /lib/ld-2.2.4.so 40017000-40019000 rw-p 00000000 00:00 0 40033000-40166000 r-xp 00000000 16:42 327696 /lib/i686/libc-2.2.4.so 40166000-4016b000 rw-p

  • 革命の日々! カーネル読書会で講演してきました

    7月にLMSで発表したglibc mallocの解説を、ブラッシュアップしてYLUG・カーネル読書会でも発表してきた。 人の知らない間にビデオ撮影をして、YouTubeにアップするとかいう話になっていたので、「ちょ・・業務用です・・・か??」とでも言わんばかり、かなり格的ビデオカメラが会場に設置されていた。 もうダメである。 緊張しまくり、用意しておいた小ネタギャグは一切言えなかった。 熱いトークを期待したいた皆さん(いるのか?)ごめんなさい。 てゆーか、ネクタイに指す、アナウンサー向けっぽげなマイクが用意されているあたりがYLUGスゴス。と思った。 まあ、それはさて置き、当日の感想としてはhyoshiokさんのBlogあたりの感想がよくまとまっていていい感じなのではないかと思う。 結論: みんなRubyが好きなんだよ。 kernel hackerもLL hackerも交流しようよ と

  • 1