2012-01-01から1年間の記事一覧

自作の関数に対して、簡易コールグラフを出力する。

はじめに 本記事は、自作の関数(システムコールや、ライブラリ関数ではない)を呼び出した際に、その関数名を出力できないか調べてみた結果を記載したものである。 今回作成したものは、こちらから。 結論 GCCにおけるオプションの一つに「-finstrument-fun…

Flawfinderを試す。〜セキュアコーディングを目指して〜

はじめに コーディング中に、バッファオーバフローをどうやって未然に防ぐか。 Flawfinderというツールがあるとわかったので、試してみた。 インストール sudo apt-get install flawfinder サンプルソース 本家にあるサンプルソースに対し、ツールを実行して…

Helgrindのサンプルを試す

はじめに マルチスレッドでプログラムを動かすことが多くある。性能向上のために。Helgrindは、マルチスレッドでのバグを発見するために使用するツールである。今回は、このツールを動かす。簡単なサンプルを使用して。今回使用したサンプルはこちら。なお、…

FlawFinderを試す。〜セキュアコーディングを目指して〜

はじめに コーディング中に、バッファオーバフローをどうやって未然に防ぐか。 Flawfinderというツールがあるとわかったので、試してみた。 インストール sudo apt-get install flawfinder サンプルソース 本家にあるサンプルソースに対し、ツールを実行して…

Electric Fenceを試す。

はじめに メモリ系のバグには、問題点を発見するまでに苦労する。早期発見にツールを活用できればと思い、Electric Fenceを試してみた。 今回のサンプルはこちら 問題のあるソース 下記ソースは、サイズが2である配列を動的に確保し、存在しない3つ目の配…

pthread_cancelを試す。

はじめに メインスレッドから生成したスレッドを途中で終了させるにはどうするのかを調査中、pthread_killが使えることがわかったが、 【POS44-C. シグナルを使用してスレッドを終了しない】 では、pthread_cancelを使用せよとあった。使ったことがないので…

安全ではないマクロ関数

はじめに 安全なコーディング(セキュアコーディング)の勉強中である。 セキュアコーディングのサイトを見つけたので、勉強中に試したものを記事として残す。 記事概要 マクロ関数は、安全ではない1例が記載されていた(PRE31-C)ので、試してみた。 安全…

マクロ展開の注意点を試す。

はじめに 本記事は、マクロについての注意点を実際に試したことをまとめたものである。 概要 下記のページに書かれているマクロについての違反コードと適合コードを試してみた。 PRE05-C 違反コード マクロで展開された結果が"4"(数字の4の文字列)の想定が…

LD_PRELOAD を試したら、Segv した。

はじめに 本記事は、Binary Hackの第3章#22に出てくる【LD_PRELOAD】を簡単に試した結果、Segvしたので、その原因追求について、記述したものである。 作成したソースはGithubに置いておく。 https://github.com/tomohikoseven/LD_PRELOAD LD_PRELOADとは …

CUnit を試す。

はじめに 本記事は、CUnitの入門してみた結果をまとめてみたものである。 使用したソース等は、https://github.com/tomohikoseven/cunit_sample テスト環境概要 CUnitのテスト環境は、下記のような階層的な構造になっている。 テスト・レジストリ |- テスト…

実行可能形式そのものに共有ライブラリパスを指定させる

はじめに 共有ライブラリの場所は、LD_LIBLARY_PATHだけだと思っていたが、実行可能形式そのものに指定することもできると知った。それを試した。 今回試すために使ったファイル群を下記に置く。 https://github.com/tomohikoseven/rpath 実行可能形式に指定…

GDB でのコマンド実行を自動化する。

はじめに 本記事は、GDBのコマンドを自動化するやり方を説明するものである。 本記事で使用したファイルは下記に置く。 https://github.com/tomohikoseven/autorun 自動化の方法 3つのやり方がある。 .gdbinit に記述する。 -x オプションで指定したファイ…

rpmパッケージを1から作る(最後はdpkgでインストール編)

はじめに 本記事は、rpmパッケージを1から作り、実際にシステムへインストールしてみたものをまとめたものである。(※インストール時にlibc.so.6 が必要だとエラーが出て、alienコマンドでdebパッケージに変換して、インストールした。) 今回作成したもの…

automakeを突っ込んで勉強してみる(その1 〜 全体像 〜)

はじめに autoreconfでhello worldを試してみて、もう少し突っ込んでいこうと思い、少し複雑にしたバージョンを試した。 その結果を記す。 全体でやりたいこと 複数のディレクトリを利用し、機能単位に分ける。 ソース、インクルードファイルおよび生成物は…

automakeを突っ込んで勉強してみる(その5 〜 ビルドおよび実行 〜)

はじめに automakeを突っ込んで勉強してみる(その4 〜 メイン機能 〜) - tomohikosevenの日記 の続きである。 目標 全体のビルド トップディレクトリとファイル ディレクトリ構造は以下のとおり test2 ★ トップディレクトリ +- Makefile.am ★ Makefile +-…

automakeを突っ込んで勉強してみる(その4 〜 メイン機能 〜)

はじめに automakeを突っ込んで勉強してみる(その3 〜 サブ機能 〜) - tomohikosevenの日記 からの続きである。 目標 メイン機能でやりたいことは以下の2点である。 動的ライブラリのリンク 静的ライブラリのリンク メイン機能の全体像とファイル メイン…

automakeを突っ込んで勉強してみる(その3 〜 サブ機能 〜)

はじめに automakeを突っ込んで勉強してみる(その2 〜 共通機能 〜) - tomohikosevenの日記 からの続きである。 目標 サブ機能でやりたいことは以下の2点である。 動的ライブラリの生成 ライブラリのインストール ★ 相対パスではダメ(下記Makefile.amの…

automakeを突っ込んで勉強してみる(その2 〜 共通機能 〜)

はじめに automakeを突っ込んで勉強してみる(その1 〜 全体像 〜) - tomohikosevenの日記 からの続きである。 目標 共通機能でやりたいことは以下の2点である。 静的ライブラリの生成 ライブラリのインストール ★ ここのやり方を見つけるのに時間がかか…

OpenMP 並列化

はじめに GCCのオプションで、並列コンパイルのオプションがないものかと調べていたら、実行の並列化オプションがあった。 それを試してみようと思い、その結果を残す。参考サイト OpenMPの使い方:tech.ckme.co.jpソース等一式 https://github.com/tomohiko…

ツール autoreconf を試す。

はじめに Makefileの直接編集によるビルドが、ちょっと手間かかると思った。 そこで、いろいろなツールを試してみようとしている。 以下 autoreconf で hello world を実行させるまでの手順を示す。ソース等一式置いてある。 https://github.com/tomohikosev…

vim ステータス表示 設定

vim

はじめに 仕事場では、Linux系環境で作業している。 テストの準備のため、既存のシェルスクリプトを実行させたが、よくわからないエラーを表示し、停止した。 結局、シェルスクリプトの文字コードと改行コードがWindows(Shift-JIS、CR+LF)だったためだとわ…

functree を linux でビルドする

はじめに 本記事は、functree をlinux で利用できるようにする手順を示したものである。 手順 1.下記URLからパッチ一式をダウンロード tomohikoseven/patch_functree=tomohikoseven/patch_functree 2.ダウンロードしたREADMEを読む(5行くらいの手順)。…

pthread_join()をしなければメモリリークする。

はじめに pthread_join()のManpageにあるこの一文を検証すべく、valgrindでメモリリークをチェックしてみた。 「合流可能なスレッドが終了しても、 別のスレッドがそのスレッドに対して pthread_join を呼び出すまでは、 そのメモリ資源 (スレッドディスクリ…

valgrindをソースからインストールする。

はじめに メモリリークを調べるために、valgrindをインストールしようとした。しかし、[sudo apt-get install valgrind]でインストールしたら、valgrind のコマンドでこける。また、ソースから再インストールしようとしたら、configureでこける。以下に、val…

pthread_join() の第2引数の値を参照するサンプル

はじめに pthread_join()の第2引数の値をうまく参照することができなかった。最終的にはうまくできたが、そのときに作成したサンプルを示す。 サンプル 下記にサンプル一式のURLとメインソースを示す。 サンプル一式 tomohikoseven/pthread_join メインソー…

インサートモードからノーマルモードへ移行時、日本語入力を自動的にOFFにする。

vim

はじめに vim で [ インサートモード+日本語入力モード ] から [ ノーマルモード ] へ移行したとき、 日本語モードを自動的にOFFにできないかという問題を解決するための作業記録だ。 作業 インストール uimのインストールだ。なんで、uimのインストール?…

Ubuntu のlibc 辺りの依存関係が壊れたので、修復を試みる。

はじめに この記事のトリガーは 「vim で ]インサートモード+日本語入力モード] からESCキーで [ノーマルモード] への移行時に日本語入力(IME)をOFFにできないか」 という問題を解決しようとして、立ちはだかった壁を乗り越えた記録である。 作業 libcの依…

teratermでUbuntu( on VirtualBox )ログイン時、lsがカラー表示されない。

はじめに タイトルどおり、teraterm でUbuntu(on VirtualBox )にログインしたとき、ファイルとかがカラーで表示されない。 作業上困るので、そのときの解決策を記す。 原因 ログイン後、~/.bashrcが実行されていないから 解決策 teratermマクロで自動ログイ…

自動ログイン(公開鍵あり設定)

はじめに teraterm で Ubuntu ( on VirtualBox )に接続する際、ワンクリックで接続できたら楽だと思った。 そのときの作業記録を残す。 作業 Tera Termマクロ活用入門(1):各種ログインを自動化する上記サイトの「リスト5」を丸写しした。

文字列の自動コピー禁止

はじめに teraterm の端末を複数起動して、端末間で作業することはよくある。クリップボードにコピー(端末A) → ペースト(端末B) するとき、端末B上で、誤って何かを(マウスで)選択した場合、 クリップボードにコピーしたものが上書きされ、マウスで選択…