タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

UNIXとプログラミングに関するhitsujibaneのブックマーク (7)

  • Makefile の関数一覧

    Makefile の組み込み関数の一覧です。 公式のドキュメントを読みながら、関数の引数と使い方について備忘録としてまとめました。 Makefile での関数の書き方は $(関数名 引数,...) または ${関数名 引数,...} です。 文字列操作・検索の関数 subst 文字列の置換です。使い方は $(subst 置換前,置換後,対象) FILES := hoge.c hoge.h fuga.c fuga.h all: @echo $(subst hoge,piyo,$(FILES)) # => piyo.c piyo.h fuga.c fuga.h patsubst パターンマッチによる文字列の置換です。使い方は $(patsubst 置換前,置換後,対象) FILES := hoge.c hoge.h fuga.c fuga.h all: @echo $(patsubst %.c

    Makefile の関数一覧
  • Wataru's memo(2006-07-30)

    ● [UNIX] malloc failure (その4) いよいよ、malloc failureシリーズも最終回。前回作成した malloc_null.c は、ライブラリ中の malloc をハイジャックし、ゼロを呼び出し元に返すだけでしたが、今回は来の malloc を内部で呼び出し、メモリ割り当てを実行できる wrapper function に挑戦してみましょう。 Wrapper function を実装するためには、malloc ライブラリ関数のエントリアドレスの取得など初期化処理が必要になります。一般のアプリケーションであれば、処理の前後で初期化・終了処理を行うことは簡単ですが、共有オブジェクトで実現するとなると、はてと悩んでしまいます。 実は、GCCにはこのような場合のために、特別な仕掛けが用意されているのです。 __attribute__((constructor)),

  • Wataru's memo(2006-07-22)

    ● [UNIX] malloc failure (その3) libc hijack は楽し 今回は、いよいよ malloc failure シリーズの最終回第3回。楽しい "libc hijack" を始める前に、軽く準備体操をしておきましょう。次に示す、puts_test.c をご用意ください。 int puts(const char*); int main() { puts("Hello, world!"); return 0; } printf 関数の代わりに puts 関数を用いた、簡易版 Hello, world! プログラムです。 $ gcc -Wall -o puts_test puts_test.c $ ./puts_test Hello, world! $ nm -u puts_test w __gmon_start__ w _Jv_RegisterClasses U _

  • Wataru's memo(2006-07-18)

    ● [UNIX] malloc failure (その2) リンク方式に見る Linux と BSD の違い failmalloc の仕組みを理解するためには、"動的リンク" に関する知識が必要になります。C言語によるプログラム開発は、プリプロセス・コンパイル・アセンブル・リンクの4工程を経ますが、最後のリンクはその方式により、動的リンクと静的リンクのふたつに分類されます。 BSD 環境では、危機管理のためにシステムの基幹部分に関するプログラムは静的リンク、それ以外の一般ユーザーアプリケーションは動的リンクにより作成されています。 これに対して、Linux 環境ではほぼ全てのプログラムが動的リンクにより作成されています(Debian Sarge で確認したところ、静的リンクで作成された実行可能ファイルは /sbin/ldconfig ただひとつでした)。この事実が意味するところは、これから

  • malloc failure (その1) - Wataru's memo(2006-07-15)

    ● [UNIX] malloc failure (その1) failmalloc と危機管理 奥地氏の enbug diary で、とても刺激的なお題を見つけました。failmalloc と呼ばれる共有ライブラリパッケージを使ったお話ですが、要は "意図的にメモリ確保に失敗する malloc 共有ライブラリ" を使い、メモリ管理を内部で正しく行っているかどうか、"外部から" 簡単に検証してみようというものです。 failmalloc は英文の紹介ページですが、その内容はさすがです。なぜ、氏がこのような事を思いついたのかは、次の一言に集約されています。 経験不足な人が書いたコードはエラーチェックが無茶苦茶である。 要するに、失敗することを考えていない。 後で述べますが、私は Linux 環境もまた「失敗することを考えておらず、危機意識に欠けている」と常々感じていましたので、failmallo

  • The Art of Unix Programming

    This book and its on-line version are distributed under the terms of the Creative Commons Attribution-NoDerivs 1.0 license, with the additional proviso that the right to publish it on paper for sale or other for-profit use is reserved to Pearson Education, Inc. A reference copy of this license may be found at http://creativecommons.org/licenses/by-nd/1.0/legalcode. AIX, AS/400, DB/2, OS/2, System/

  • Secure Programming HOWTO

    Secure Programming HOWTODavid A. WheelerCopyright © 1999, 2000, 2001, 2002, 2003, 2004, 2015 David A. Wheeler v3.72, 2015-09-19 This book provides a set of design and implementation guidelines for writing secure programs. Such programs include application programs used as viewers of remote data, web applications (including CGI scripts), network servers, and setuid/setgid programs. Specific guideli

  • 1