glibcのインストール ユーザー名が表示されなかったり、ホスト名が分からなかったりと、何となくOSっぽくない現在の(仮想)LFSを、そろそろOSらしくしてみるとしよう。そのキモとなるのがglibcである。glibcはLinuxの心臓部ともいえるもので、カーネルとセットで利用されるライブラリ集である。これがなければ、大半のプログラムは動作しない(注)。ユーザー名やホスト名が表示されないのも、本来はbashがglibcを呼び出して表示しているからだ。glibcをコンパイルすれば、かなりLinux(OS)らしくなるはずだ。 注:glibcにもバージョンがあり、バージョンによっては互換性がない。ライブラリの仕様が変わったためにアプリケーションから呼び出すことができず、動かないといった事態が起きてしまうのだ。オープンソースのアプリケーションの多くは、glibcのバージョンアップに合わせてプログラム
プログラムの流れを制御する手段として、いわゆる「構造化構文(for とか if とか)」、悪名高い「goto 文」などがあるのは周知のことだが、かなり特殊なものとして、「setjmp, longjmp」による「非ローカル分岐」と呼ばれるものがある。この「非ローカル分岐」は「非ローカル」と言うだけあって、ある関数の中から、別な関数に制御を移すことができたりする。まあ、そのために乱用すべきではなく、注意して使わなくてはならないライブラリ関数なのだが、実はこれは Java や C++ で言語の上で実装されている「例外」の基礎となるものである。だから、まずこの標準ライブラリ関数「setjmp, longjmp」について解説しよう。 → Java 講座の「例外」 setjmp, longjmp とは どうやって実現してるの? setjmp/longjmp の利用例~インタプリタ 補追1:setjmp
アセンブラで遊ぶ時に便利な ~/.gdbinit を紹介します。まず ~/.gdbinit を次のように記述してください。 # # ~/.gdbinit # # .so を shlib コマンドで手動で読み込む # set auto-solib-add 0 # スレッド生成時のSIG32でブレークしない handle SIG32 nostop # ニモニック構文の選択 # set disassembly-flavor intel set disassembly-flavor att # フラグレジスタの可読化関数 define pf printf "eflags: %s%s%s%s%s%s%s%s%s (= 0x%08u)\n",\ $eflags & 2048 ? "O":"-",\ $eflags & 1024 ? "D":"-",\ $eflags & 512 ? "I":"-",\
Author:あろは (alohakun) WAKATSUKI toshihiro デバッガ開発者見習い(予定) 連絡先 : alohakun ___at___ gmail.com mixi : http://mixi.jp/show_friend.pl?id=182927 twitter : http://twitter.com/alohakun このページはインラインフレームを使用しています とりあえず, gcc が吐くアセンブリコードをいろいろ鑑賞してみようかと. 例題のプログラムは,こんな感じです (static をつけているのは,gcc による最適化が楽になるかなぁ,と思ったから). static int add(int x, int y) {return x + y;} int main() { int z = add(1, 1); return 0; } これを,gcc -
kosaki さんからコメントをいただきました. >> 壊しちゃいけないのが ebx, esi, edi, ebpとセグメントレジスタ ちなみに、壊しちゃいけないレジスタを調べるいちばんいい方法はsetjmpのソースを読むこと。 CPUによらず、こわしちゃいけないレジスタは保存してくれよるので、不慣れなCPUの時は参考になりますえ なるほど.というわけで,さっそく glibc-2.4 のソースを落としてきて,とりあえず glibc-2.4\sysdeps\i386\setjmp.S を開いてみた. /* Save registers. */ movl %ebx, (JB_BX*4)(%eax) movl %esi, (JB_SI*4)(%eax) movl %edi, (JB_DI*4)(%eax) /* スタックポインタ保存 */ leal JMPBUF(%esp), %ecx /* S
The GNU C Library The project website can be found here: https://sourceware.org/glibc The GNU C Library - The project provides the core libraries for the GNU system and GNU/Linux systems, as well as many other systems that use Linux as the kernel. These libraries provide critical APIs including ISO C11, POSIX.1-2008, BSD, OS-specific APIs and more. These APIs include such foundational facilities a
The GNU C Library (glibc) manual The latest manuals for the GNU C Library (glibc) are available here. Last updated August 29, 2023 Return to the GNU Project home page. Please send FSF & GNU inquiries to gnu@gnu.org. There are also other ways to contact the FSF. Please report broken links and other corrections (or suggestions) to the libc maintainers. Copyright 2023 Free Software Foundation, Inc. V
調べごとをしたので blog に書いて理解を深めようのコーナーです。長文です。 Linux でシステム負荷を見る場合にお世話になるのが top や sar (sysstat パッケージに同梱されてるコマンド) などのツールです。 top ではシステム統計のスナップショットを見ることができます。今システムがどういう状態かなーというときは top が便利。 top - 08:16:54 up 3 days, 14:43, 6 users, load average: 0.18, 0.07, 0.03 Tasks: 43 total, 2 running, 41 sleeping, 0 stopped, 0 zombie Cpu(s): 18.2% us, 0.0% sy, 0.0% ni, 81.8% id, 0.0% wa, 0.0% hi, 0.0% si一方の sar では10分ごとのシ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く