2013年1月24日木曜日

gobjdump elfdump

コンパイルしたgccnバージョンを知りたい。

gobjdump -s --section .comment /path/binary


プログラム(バイナリ)が一致するのか。
elfdump -k program
checksum値を比較してみる。

gobjdump -d program
逆アセンブルして比較してみる。



2013年1月22日火曜日

Toast 11 Titanium 再インストール

Mac OSクリーンインストール後、
Toast 11 Titaniumをインストールしようとした。

アプリバンドルで購入。
販売元のダウンロードサービスが期限切れでダウンロードできない。
開発元のダウンロードサービスは、購入コードが必要。
直接購入していないので該当するような購入コードを持っていない。

Time Machine からコピー。
・アプリケーションフォルダ内のToast11フォルダ
・ライブラリ内のToast11のメニューテンプレライブラリ(場所は...)
 これがないとメニューテンプレ選択でない(1種類のみとなる)

Time Machineから単純にコピーしただけだと、
Toast11起動時に常に
xxxが変更を加えようとしています
とMacの管理者パスワード入力を尋ねられる。
パスワード入力すると起動はする(使えるのかは未確認)

アプリケーションフォルダ内のtoast11フォルダを
圧縮解凍すると特権等カレントユーザーに合致した状態と
なったようで起動した。

iDVDで作成したTSフォルダをDVDに焼くことができた。


iDVDをMountain Lionで使用する方法はあとで追記する。



2012年12月27日木曜日

C言語 デバッグ用マクロ

http://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html#Variadic-Macros

#define DMSG_ERR( p_fmt, ...) printk(KERN_ERR "cpu:%d %s:%d (%s) " p_fmt, smp_processor_id(), __BASENAME__, __LINE__, __func__, ## __VA_ARGS__)
#define DMSG_WARNING(p_fmt, ...) printk(KERN_WARNING "cpu:%d %s:%d (%s) " p_fmt, smp_processor_id(), __BASENAME__, __LINE__, __func__, ## __VA_ARGS__)
#define DMSG_NOTICE( p_fmt, ...) printk(KERN_NOTICE "cpu:%d %s:%d (%s) " p_fmt, smp_processor_id(), __BASENAME__, __LINE__, __func__, ## __VA_ARGS__)
#define DMSG_INFO( p_fmt, ...) printk(KERN_INFO "cpu:%d %s:%d (%s) " p_fmt, smp_processor_id(), __BASENAME__, __LINE__, __func__, ## __VA_ARGS__)



2012年12月20日木曜日

Programing memo

・デバッグ分出力のバイナリをデフォルトで生成するようにしておく。
・いたるところに、デバッグ文出力用マクロを挿入しておく。
 どこまで通過したか判るように。



2012年12月19日水曜日

zip unzip 指定ファイルの解凍

zip unzip 指定ファイルの解凍

$ unzip archives.zip mydir/my.iso -d /home/user



(DVD)メディアのチェックサム md5sum

チェックサム md5sum

(DVD)メディアは単純にチェックサムを比較することが出来ない。
http://www.debian.org/CD/faq/index.ja.html

$ /usr/bin/isosize -x /dev/hdc
sector count: 4425, sector size: 2048
$ dd if=/dev/hdc count=4425 bs=2048 | md5sum




書き込み済みの光学メディアを検証する場合
メディアの種類によっては ISO イメージにあるものよりも多くのバイト数を返してくる可能性
この後方に付くゴミは TAO モードで書き込まれた CD、追記された DVD-R[W]、
フォーマット済みの DVD-RW, DVD+RW, BD-RE、さらに USB キーの場合不可避
ISO イメージ自体にあるのと正確に同数のセクタのデータをメディアから読み込む必要があり
メディアからそれ以上に多くのバイトを読み込んだ場合チェックサムの結果は違うものになる



2012年12月14日金曜日

環境変数

forkした子プロセスは、環境変数も引き継ぐ。
getenv
putenv
setenv
unsetenv
environ (7) 大域変数
clearenv すべての環境変数をクリアする(空にする)posixでない!?

su コマンドを '-' 付加して実行すると、環境変数は引き継がない。
シェルをログインシェルにする。


/etc/profile.d/*.sh に環境変数を設定する各種スクリプトがある。


すべての環境変数を表示する。
$ gcc -Wall -o my_printenv my_printenv.c
#include <stdio.h>

extern char **environ;

int main()
{
char **ep = environ;
char *p;

FILE *fptr;

fptr = fopen("/tmp/xxx.txt", "a");

fprintf(fptr, "-------------\n");

while ((p = *ep++))
fprintf(fptr, "%s\n", p);

fclose(fptr);

return 0;
}