2007年6月18日月曜日

term memo

以下のマシンを用意

Thinkpad T41p
CPU: Pentium M 1.7GHz
Mem: 1GB
Swap: 2GB

Fedora Core6上にhttpd環境を設定.
設定内容は全てデフォルト.

PHP/libcurlでスクリプトを走らせる.
内容はDocumentRootをひたすら参照するもの.マルチアクセスはしない.Clientの数を増やしていって動作速度のチェックを行う.

Client:
MacBook Pro
CPU: Core Duo 2.0GHz
Mem: 2GB
OS: Mac OS X 10.4.9

・・・どうやら,デフォルト設定では2GB>と2GB<でパフォーマンスは変わらない様だ.
今後の展開
-> MaxConnectionsを増やして,Disk I/Oがボトルネックになる様にしてみる?
-> mod_phpがボトルネックの原因だとすると,そちらもOnにしてみる?

2007年5月22日火曜日

5/15分の宿題

  1. Experimentally construct a rough memory map for an application on your operating system.
    1. Write a program that prints out (in hexadecimal) the addresses of the following:
      1. main()
      2. a variable on the outermost stack frame (main()'s stack frame)
      3. a variable on the stack frame of a recursively-called function, called to a depth of five times
      4. a statically-defined but uninitialized variable
      5. a statically-defined, initialized variable
      6. several large chunks of malloc()ed memory
      7. a library routine, such as strcpy()
      8. a system call wrapper, such as the one for write()
    2. Take that information and draw a memory map for your OS. It should indicate which direction the stack and the heap grow in. An ASCII picture is okay, or you can use a drawing program of some sort if you wish.
      1. How big is the distance between your stack and your heap?
      2. Was your program compiled with static libraries or shared libraries?

A:
1: 0x8048454
2: 0xbfd8cc70
3: 0xbfd8cc04
4: 0x80497e0
5: 0x80497d8
6: 0xb5fc6008
7: 0x8048364
8: 0x8048334

source code:
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#define ALLOC_SIZE (1024 * 1024 * 32)

void rec_call(int);

int uninitialized_int;
int initialized_int = 0xbeaf;

int main(){
char *buff;
printf("main: 0x%x\n", main);
printf("uninitialized_int: 0x%x\n", &uninitialized_int);
printf("initialized_int: 0x%x\n", &initialized_int);
printf("calling recursive function...\n");
rec_call(5);
printf("...done.\n");
buff = malloc(sizeof(char) * ALLOC_SIZE);
printf("32MB malloc() address: 0x%x\n", buff);
free(buff);
printf("strcpy() address: 0x%x\n", strcpy);
printf("write() address: 0x%x\n", write);
}

void rec_call(int count){
if(count > 0){
rec_call(--count);
}
}

result:
$ ./a.out
main: 0x8048454 (1)
uninitialized_int: 0x80497e0 (4)
initialized_int: 0x80497d8 (5)
calling recursive function...
...done.
32MB malloc() address: 0xb5f34008 (6)
strcpy() address: 0x8048364 (7)
write() address: 0x8048334 (8)

GDB result:
$ gdb ./a.out
GNU gdb Red Hat Linux (6.5-15.fc6rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

(gdb) b main
Breakpoint 1 at 0x8048465: file HWA.c, line 14.
(gdb) run
Starting program: /home/morimori/SS/06/a.out

Breakpoint 1, main () at HWA.c:14
14 printf("main: 0x%x\n", main);
(gdb) info f
Stack level 0, frame at 0xbff57f30 (2):
eip = 0x8048465 in main (HWA.c:14); saved eip 0xbcff2c
source language c.
Arglist at 0xbff57f28, args:
Locals at 0xbff57f28, Previous frame's sp at 0xbff57f24
Saved registers:
ebp at 0xbff57f28, eip at 0xbff57f2c
(gdb) b rec_call
Breakpoint 2 at 0x8048529: file HWA.c, line 28.
(gdb) c
Continuing.
main: 0x8048454
uninitialized_int: 0x80497e0
initialized_int: 0x80497d8
calling recursive function...

Breakpoint 2, rec_call (count=5) at HWA.c:28
28 if(count > 0){
(gdb) c
Continuing.

Breakpoint 2, rec_call (count=4) at HWA.c:28
28 if(count > 0){
(gdb) c
Continuing.

Breakpoint 2, rec_call (count=3) at HWA.c:28
28 if(count > 0){
(gdb) c
Continuing.

Breakpoint 2, rec_call (count=2) at HWA.c:28
28 if(count > 0){
(gdb) c
Continuing.

Breakpoint 2, rec_call (count=1) at HWA.c:28
28 if(count > 0){
(gdb) c
Continuing.

Breakpoint 2, rec_call (count=0) at HWA.c:28
28 if(count > 0){
(gdb) info f
Stack level 0, frame at 0xbfbac324 (3):
eip = 0x8048529 in rec_call (HWA.c:28); saved eip 0x804853e
called by frame at 0xbfbac330
source language c.
Arglist at 0xbfbac31c, args: count=0
Locals at 0xbfbac31c, Previous frame's sp is 0xbfbac324
Saved registers:
ebp at 0xbfbac31c, eip at 0xbfbac320

B:Mac OS Xの場合
カーネルアドレススペース(32bit,PowerPC, Mac OS X 10.4 Mac OS X Internals pp.910 TABLE 8-3)

0x00000000-0x00004fff : Exception vectors and low-memory code
0x00005000-0x00005fff: Low-memory globals
0x00006000-0x00006fff: Low-memory shared page used for low-level debugging
0x00007000-0x0000dfff: Boot processor interrupt and debug stacks
0x0000e000-0x0fffffff: Kernel code and data
0x10000000-0xdfffffff: Physical memory window
0xe0000000-0xffffffff: User memory window

ユーザアドレススペース(Mac OS X Internals pp.910-911 TABLE 8-4)
0x00000000-0x00001000: So-called zero page(__PAGEZERO)--inaccessible by default so that dereferencing a NULL pointer(including small offsets from a NULL pointer) causes a protection fault
0x00001000-0x8fdfffff: Application address range(about 2.3GB)
0x8fe00000-0x8fffffff: Space reserved exclusively for Apple system libraries; e.g., the dynamic linker's text segment, mapped starting at 0x8fe00000
0x90000000-0x9fffffff: Global shared text segment, reserved exclusively for Apple system libraries; e.g., the system library's text segment, mapped starting at 0x90000000
0xa0000000-0xafffffff: Global shared data segment, reserved exclusively for Apple system libraries; e.g., the system library's data segment, mapped starting at 0xa0000000
0xb0000000-0xbfffffff: Preferred address range for the application's main thread
0xc0000000-0xebffffff: Additional space available for third-party applications and framework code
0xf0000000-0xfdffffff: Range preferred for use by additional thread stacks, although applications may use this range as necessary
0xfe000000-0xffbfffff: Range reserved for use by the pasteboard and other system services; not to be used by user programs
0xffc00000-0xfffdffff: Range preferred for use by other system services, although applications may use this range as necessary
0xfffe0000-0xffff7fff: Range reserved for use by system services and not to be used by user programs; e.g., a portion of the address range starting at 0xfffec000 is used by the Objective-C library as a commpage for optimizing message dispatch
0xffff8000-0xffffefff: System-shared commpage(seven pages)
0xfffff000-0xffffffff: Last page of a 32-bit address space; cannot be mapped by the Mack VM subsystem

1.メモリマップを調べた限りでは,スタックフレームとヒープのアドレスは分からなかったので,プログラムを書いて推測した.


source:
#include

void func();

int main(){
char *c, *c2;
c = malloc(sizeof(char));
c2 = malloc(sizeof(char));
printf("heap c: 0x%x\n", c);
printf("heap c2: 0x%x\n", c2);
func();
free(c);
free(c2);
printf("Hello, world.\n");
}

void func(){
int tmp;
tmp = 1;
}


result:
$ ./a.out
heap c: 0x3000f0
heap c2: 0x300100
Hello, world.


$ gdb ./a.out
GNU gdb 6.3.50-20050815 (Apple version gdb-563) (Wed Jul 19 05:10:58 GMT 2006)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin"...Reading symbols for shared libraries .. done

(gdb) b main
Breakpoint 1 at 0x1efa: file ./hello.c, line 7.
(gdb) run
Starting program: /Users/mmori/tmp/a.out
Reading symbols for shared libraries . done

Breakpoint 1, main () at ./hello.c:7
7 c = malloc(sizeof(char));
(gdb) info f
Stack level 0, frame at 0xbffffa50:
eip = 0x1efa in main (./hello.c:7); saved eip 0x1ed2
source language c.
Arglist at 0xbffffa48, args:
Locals at 0xbffffa48, Previous frame's sp is 0xbffffa50
Saved registers:
ebx at 0xbffffa44, ebp at 0xbffffa48, eip at 0xbffffa4c
(gdb) b func
Breakpoint 2 at 0x1f77: file ./hello.c, line 19.
(gdb) c
Continuing.
heap c: 0x3000f0
heap c2: 0x300100

Breakpoint 2, func () at ./hello.c:19
19 tmp = 1;
(gdb) info f
Stack level 0, frame at 0xbffffa20:
eip = 0x1f77 in func (./hello.c:19); saved eip 0x1f47
called by frame at 0xbffffa50
source language c.
Arglist at 0xbffffa18, args:
Locals at 0xbffffa18, Previous frame's sp is 0xbffffa20
Saved registers:
ebp at 0xbffffa18, eip at 0xbffffa1c
(gdb) c
Continuing.
Hello, world.

Program exited with code 016.


実行結果から,ヒープの開始アドレスは0x3000f0か,それよりも手前から下方向にのびていくことが分かる.
また,スタックフレームは,0xbffffa50から,上方向にのびていることがわかる.
スタックとヒープの間の距離は,0xbfcff960,すなわち10進で3218078048,3068MBとなる.

2.GCCでは,通常明示的にstaticオプションを付けない限りはshared libraryとしてコンパイルされる.そのため,今回使用したプログラムは全てshared libraryである.

2. Extend your project proposal to answer the questions above.

調査内容: Apacheのログファイルが2GBを超えた際に,システムのLoadが非常に高くなるのはなぜか調べる.
詳細: Redhat系Linuxで,Apache 2.0系を利用してサーバを運用していた際,ログファイルaccess_logのファイルサイズが2GBを超えた時点で極端にシステムの負荷が高くなった.恐らくEXT3ファイルシステムの問題か何かであると予想されるが,この原因について調査する.

Output: システム負荷増大の原因と,その対策
Midterm Milestones: 実験環境の構築と再現性の確認
Equipment and Skills: サーバ構築,及びファイルシステムに関する技術.必要であればソースコードを参照することで原因を調査したい
What will you learn if the project is successful? : ファイルシステムに関する動作の詳細,及び実際の挙動を知ることができる
What will you learn if the project fails? : システム障害の原因を辿るプロセスを学ぶことができる.

2007年5月14日月曜日

5/8分の宿題

1.Take last week's memory copy program, and modify it to fork() to a certain depth, then have each one of the processes time the copy of a certain amount of memory. Your program should take three arguments, the depth, the amount of memory to copy, and the number of times to copy the memory. Ideally, the amount of memory to copy should be large enough to require several seconds, but that's not practical, so have it repeat the copy some number of times. For example, fork five processes, malloc() ten megabytes each, and have the processes copy that memory one hundred times.

program source:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

#define TMP_FILE ".tmpfile"
#define LINE_BUFFSIZE (40)
#define COPY_SOURCE (1024 * 1024) /* 1M Bytes */

double cputime();
void add_count();
void print_result();
void usage();
void do_alloc(int, size_t, int);
void die(char*);

int count, depth;
char source[COPY_SOURCE];

typedef struct statistics{
double time;
int process_number;
} statistics_t;

int main(int argc, char **argv){
int i;
if(argc != 4){
usage();
return 0;
}

count = 0;
signal(SIGUSR1, add_count);/* counter signal */
int times;
size_t amount;/* amount may be bigger than int */
depth = atoi(argv[1]);/* number of processes */
amount = atol(argv[2]);/* amount of memory(per process) */
times = atoi(argv[3]);/* times of copy */

if(depth < 1 || amount < 1 || times < 1){
usage();
return -1;
}

char *ptr;
int current_processes = 0;

for(i = 0;i < depth;i++){
pid_t child_pid = fork();
if(child_pid == -1){
die("fork() failed.\n");
}
if(child_pid == 0){
do_alloc(i, amount, times);
return 0;
}
// printf("fork() successed, pid: %d\n", child_pid);
}
wait();
}

void add_count(){
count++;
if(count == depth){
print_result();
}
}

void print_result(){
FILE *fp;
int i, index;
double tmpd;
char buff[LINE_BUFFSIZE];
char *cp;
statistics_t *statistics;

if((statistics = malloc(sizeof(statistics_t) * depth)) == NULL){
die("statistics memory allocation fault.");
}

if((fp = fopen(TMP_FILE, "r")) == NULL){
die("file read error.\n");
}
for(i = 0;i < depth;i++){
if((cp = fgets(buff, LINE_BUFFSIZE, fp)) == NULL){
die("file read error.\n");
}
printf("%s", buff);
/*
sscanf(buff, "%d,%.10f\n", &index, &amp;amp;amp;amp;amp;amp;amp;amp;amp;tmpd);
statistics[index].time = tmpd;
statistics[index].process_number = index;
*/
}
fclose(fp);
remove(TMP_FILE);
/*
tmpd = .0;
for(i = 0;i < depth;i++){
printf("%d -> %.10f ms\n", statistics[i].process_number, statistics[i].t\
ime);
tmpd += statistics[i].time;
}
*/
}

/**
* do_alloc() : allocate memory
*/

void do_alloc(int process, size_t size, int times){
int i, j;
double stime, etime;
char *ptr;
size_t remain;
int current_offset;

/* start memory allocation */
stime = cputime();
for(i = 0;i < times;i++){
/* allocate memory */
if((ptr = malloc(size)) == NULL){
printf("malloc() allocation fault!!\n");
}
current_offset = 0;
for(remain = size;remain > 0;){
if(remain >= COPY_SOURCE){
memcpy(ptr, source, COPY_SOURCE);
remain -= COPY_SOURCE;
}else{
memcpy(ptr, source, remain);
remain = 0;
}
}
free(ptr);
}
etime = cputime();
/* end memory allocation */

FILE *fp;
if((fp = fopen(TMP_FILE, "a")) == NULL){
die("can't open temporary file.");
}
char result[LINE_BUFFSIZE];
sprintf(result, "%d,%.10f\n", process, etime - stime);
if(fputs(result, fp) == EOF){
die("can't write file.");
}
fclose(fp);

kill(getppid(), SIGUSR1);/* termination of process */
return;
}

/**
* usage() : print usage.
*/
void usage(){
printf("Usage: forkmemcopy DEPTH AMOUNT_OF_MEMORY_TO_COPY NUMBER_OF_TIMES\n")\
;
}

/**
* get cputime
*/
double cputime(){
struct timeval t;
// void *v;
gettimeofday(&t, NULL);
return t.tv_sec + (double)t.tv_usec*1e-6;
}

/**
* common error function
*/
void die(char *s){
printf(s);
perror("ERROR(die)");
exit(-1);
}

補足: 最初に立ち上げたプロセスがManagerプロセスとなり,子プロセスをfork()していき,子プロセスがdo_alloc()内でmemcpy()を実行する.
do_alloc()は内部で結果をTMP_FILEへ追記書き込みし,終了時にManagerプロセスにSIGUSR1を送る.
ManagerプロセスはSIGUSR1の数をカウントしており,depthの数だけのSIGUSR1を受け取ったらTMP_FILEの内容を読み込み表示する.
データのやりとりにファイルを使っているが,追記モード("a")でのみ書き込みを行っているため,書き込み時に競合が起こる心配は無いと考えている.

当初,平均値の計算などもTMP_FILEから読み出した値から計算するよう実装しようとしたが,sscanf()によってdoubleの値がうまく読み込めなかったため,急遽結果を出力するだけのプログラムとした.
平均値計算には,5〜6行のPHPスクリプトを用いた.

A. Run the program with a depth of one, and report how long it takes. Repeat this program twenty-five times and report the average and the individual times.

Result:
0.8175361156
0.9691882133
0.7505040169
0.4270858765
0.3950059414
0.4412739277
0.4337899685
0.4545879364
0.3823759556
0.6414270401
0.4668221474
0.3328568935
0.3372659683
0.3725678921
0.3376910686
0.3227369785
0.3254480362
0.4398460388
0.3319430351
0.3406119347
0.6110649109
0.3521721363
0.3620688915
0.3821530342
0.3682980537

Average: 0.45585288

B. Now run the program with a depth of five. Again, repeat at least five times and report the average. Is the average higher than five times the depth one case? Why?
Result:
1.9947190285
2.0967659950
2.1174561977
2.1399757862
2.3340249062
1.6144938469
2.1689970493
2.3224248886
2.5233850479
2.6110658646
0.7902989388
1.9660778046
2.2923190594
2.4991791248
2.4989440441
0.8868319988
1.9140131474
2.2147798538
2.3721489906
2.4381871223
0.7857530117
1.3553609848
2.0533030033
2.3023898602
2.3273780346

Average: 2.024810944
Aに比べて4倍以上の実行時間がかかっている。これは、メモリ確保を同時に行うことで、メモリに対するI/Oの負荷が高まり、動作に時間がかかったことが理由に考えられる。

C. Plot the density function for the execution time. (You should have twenty-five data points here for copying a gigabyte of memory each, for the depth one and depth five cases.) Is there more variability in the depth five case?

グラフの生成にはRを用いた.
> dataA <- read.table("dataA.txt")
> hist(dataA$V1)

> dataB <- read.table("dataB.txt")
> hist(dataB$V1)




2. Run one copy of your program at the normal priority, and at the same time a second copy at lower priority, e.g. by using nice. Does the first one completely monopolize the CPU until it is finished?

以下の様なシェルスクリプトを作り実験した。

#!/bin/bash

./a.out 1 10240000 1000 > nice10.out &
nice -n 5 ./a.out 1 10240000 1000 > nice5.out &

結果、nice5.outは8.2090461254 sec, nice10.outは8.3474671841 secとなった。
なぜこうなったか考えてみると、プログラム中のメモリコピー部分(時間を計測している部分)に入る前の時点でnice10のプロセスがnice5のプロセスに実行を譲っているため、このような結果となったのではないかと考える。
そして、実際にそうであるのかどうか、timeコマンドを間に挟んで以下の様に実行した

#!/bin/bash

time ./a.out 1 10240000 1000 > nice10.out &
time nice -n 0 ./a.out 1 10240000 1000 > nice5.out &

結果、
real 0m7.870s
user 0m3.102s
sys 0m0.769s

real 0m8.384s
user 0m3.499s
sys 0m0.830s

という出力が得られた、これではやはり優先度制御がうまく行われていないのではないかと考える。


3. Find and report the time quantum for your particular system.

# cat /proc/driver/rtc
rtc_time : 15:05:37
rtc_date : 2007-05-14
rtc_epoch : 1900
alarm : 02:17:18
DST_enable : no
BCD : yes
24hr : yes
square_wave : no
alarm_IRQ : no
update_IRQ : no
periodic_IRQ : no
periodic_freq : 1024
batt_status : okay

以上より、1024HzでRTCのクロックが取れていることがわかる。


参考: プログラミング言語C,B.W.カーニハン/D.M.リッチー : http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9EC-ANSI%E8%A6%8F%E6%A0%BC%E6%BA%96%E6%8B%A0-B-W-%E3%82%AB%E3%83%BC%E3%83%8B%E3%83%8F%E3%83%B3/dp/4320026926/ref=pd_bbs_1/250-6458066-9954607?ie=UTF8&s=books&qid=1179155847&sr=8-1

RjpWiki: http://www.okada.jp.org/RWiki/

2007年5月11日金曜日

5/1分の宿題

すっかり遅れてしまったが,5/1出題分の宿題について.

1:Ignoring the deadlock for a moment, what happens at the philosophers' table when one philosopher dies while hold a fork?

->死んだ時にフォークを手放すかどうかによる.フォークを手放さない場合,当然全ての哲学者は飢え死ぬことになるだろう.
死んだ際に左手に持っていたフォークを手放す場合,その死んだ哲学者の両隣の哲学者LとRは,それぞれLなら右側,Rなら左側のフォークを独占できる.
この場合,左のフォークを先に確保するアルゴリズムのため,Rは相変わらず右のフォークを獲得できないでロックする事があるが,Lは左のフォークを確保した地点で右のフォークを確実に確保できる.そのため,Lから順々にデッドロックの輪が解放されていき,結果としてRのロックは解放される.
しかし,このケースでは,生き残った哲学者全ては平等な立場では無くなる.すなわち,Lが最も有利であり,Rが最も不利な立場になる.

2:One possible solution to the dining philosophers problem is to number the forks, and require the philophers to always pick up an even-numbered fork first.
  • Does this scheme work?
  • What happens when there are an odd number of forks?
  • Can this scheme be extended to work when you need three forks to eat?
このアルゴリズムは哲学者の人数が偶数の場合,正常に動作する.
人数が奇数の場合,正常に動作しない.なぜならば1番のフォークとMAX_COUNTのフォークに囲まれている哲学者はフォークを一生取ることができない(1からナンバリングした場合,両方奇数となる)か,0番のフォークとMAX_COUNTのフォークに囲まれている哲学者はどちらのフォークを取れば良いか分からない(0からナンバリングした場合,両方偶数となる)からである.
3つのフォークをどの位置から取ってくるのかがよく分からないが,恐らくうまく動かないのではないかと思う.3つ目のフォークを確保する際に最大2つのフォークを確保済みで無ければならず,それがロックの原因になるのではないかと思う.

3:
  • Another possible solution, since all forks are identical, is to pile all of the forks in the middle of the table, and have the philosophers grab any two when they want to eat. Does this work better?
    • Analyze the probability of deadlock, treating time as discrete, based on the number of philosophers, probability of a philospher wanting to eat, and number of forks.
うまく動作しない.哲学者の数とフォークの数が同じ以上,全員が一つのフォークを持って立ち往生するという本質は変わらないからである.
以下に哲学者が4人(A,B,C,D)の場合を例示する.
  1. A,B,C,Dが同時にフォークを一つ取る
  2. テーブルの上にフォークは一つも残らない(デッドロック)
4:I give you a red disk that you can use as a marker. How would create a protocol that guarantees deadlock avoidance? Is it robust against the death of one of the philosophers?
  • 二つめのフォークが取れなかった場合に,マークされた哲学者であれば一度食べることをあきらめてフォークを机に戻す.
  • フォークを机に戻した後,左の哲学者にマークを渡す
これで不平等さはほとんど無いのではないかと思う.

5:Describe how the original Ethernet CSMA/CD scheme is like the dining philosophers problem.

フォークを確保する際,取りたいフォークが机の上に無ければ手に持ったフォークを全て机に置き(Reset),ランダムな時間空腹を我慢する.その後またフォークを取りに行けば良い.

6:Find the synchronization primitive used in an Intel Core Duo dual-processor or an AMD on-chip multiprocessor.

Core2 DuoではLOCK命令が該当する命令だと思われる.
参照元: Intel® 64 and IA-32 Architectures Software Developer's Manuals: http://www.intel.com/products/processor/manuals/index.htm
 Volume 2A: Instruction Set Reference, A-MにLOCK命令の詳細が記述されている.

7:Write a program that copies one chunk of memory to another (your OS certainly provides some memory copy library routine). Measure its performance. (We will use this information in later exercises in the course.)

source:

$ cat memorycopy.c
#include <stdio.h>
#include <string.h>
#include <sys/time.h>

#define SIZE 1024000

double cputime();

int main(){
unsigned char buff[SIZE] = "homework no.7";
unsigned char buff2[SIZE];
double stime, etime;
stime = cputime();
memcpy(buff2, buff, SIZE);
etime = cputime();
printf("%d Bytes memcpy() time: %10.6f ms.\n", SIZE, etime - stime);
}

double cputime(){
struct timeval t;
gettimeofday(&t, NULL);
return t.tv_sec + (double)t.tv_usec*1e-6;
}

output:
$ ./a.out
1024000 Bytes memcpy() time: 0.003304 ms.

2007年4月24日火曜日

printf()補足

Mac OS Xのprintf()のソースコードをhttp://developer.apple.com/macosx/からDownload(Libc-391.5.21)してきて,除いてみた.
すると,stdio/FreeBSD/printf.cに実装があった.中身は

int
printf(char const * __restrict fmt, ...)
{
int ret;
va_list ap;

va_start(ap, fmt);
ret = vfprintf(stdout, fmt, ap);
va_end(ap);
return (ret);
}

となっており,単にvfprintf()のwrapperのようだ..

Mac OS Xのシステムコール

Mac OS Xのシステムコールの種類について調べた.
まず,BSD互換のシステムコールが存在する./usr/include/sys/syscall.hに定義が書かれている.

#define SYS_syscall 0
#define SYS_exit 1
#define SYS_fork 2
#define SYS_read 3
#define SYS_write 4
#define SYS_open 5
#define SYS_close 6
#define SYS_wait4 7
/* 8 old creat */
#define SYS_link 9
#define SYS_unlink 10
/* 11 old execv */
#define SYS_chdir 12
#define SYS_fchdir 13
#define SYS_mknod 14
#define SYS_chmod 15
#define SYS_chown 16
#define SYS_obreak 17
#if COMPAT_GETFSSTAT
#define SYS_ogetfsstat 18
#else
#define SYS_getfsstat 18
#endif
/* 19 old lseek */
#define SYS_getpid 20
/* 21 old mount */
/* 22 old umount */
#define SYS_setuid 23
#define SYS_getuid 24
#define SYS_geteuid 25
#define SYS_ptrace 26
#define SYS_recvmsg 27
#define SYS_sendmsg 28
#define SYS_recvfrom 29
#define SYS_accept 30
#define SYS_getpeername 31
#define SYS_getsockname 32
#define SYS_access 33
#define SYS_chflags 34
#define SYS_fchflags 35
#define SYS_sync 36
#define SYS_kill 37
/* 38 old stat */
#define SYS_getppid 39
/* 40 old lstat */
#define SYS_dup 41
#define SYS_pipe 42
#define SYS_getegid 43
#define SYS_profil 44
#define SYS_ktrace 45
#define SYS_sigaction 46
#define SYS_getgid 47
#define SYS_sigprocmask 48
#define SYS_getlogin 49
#define SYS_setlogin 50
#define SYS_acct 51
#define SYS_sigpending 52
#define SYS_sigaltstack 53
#define SYS_ioctl 54
#define SYS_reboot 55
#define SYS_revoke 56
#define SYS_symlink 57
#define SYS_readlink 58
#define SYS_execve 59
#define SYS_umask 60
#define SYS_chroot 61
/* 62 old fstat */
/* 63 used internally , reserved */
/* 64 old getpagesize */
#define SYS_msync 65
#define SYS_vfork 66
/* 67 old vread */
/* 68 old vwrite */
#define SYS_sbrk 69
#define SYS_sstk 70
/* 71 old mmap */
#define SYS_ovadvise 72
#define SYS_munmap 73
#define SYS_mprotect 74
#define SYS_madvise 75
/* 76 old vhangup */
/* 77 old vlimit */
#define SYS_mincore 78
#define SYS_getgroups 79
#define SYS_setgroups 80
#define SYS_getpgrp 81
#define SYS_setpgid 82
#define SYS_setitimer 83
/* 84 old wait */
#define SYS_swapon 85
#define SYS_getitimer 86
/* 87 old gethostname */
/* 88 old sethostname */
#define SYS_getdtablesize 89
#define SYS_dup2 90
/* 91 old getdopt */
#define SYS_fcntl 92
#define SYS_select 93
/* 94 old setdopt */
#define SYS_fsync 95
#define SYS_setpriority 96
#define SYS_socket 97
#define SYS_connect 98
/* 99 old accept */
#define SYS_getpriority 100
/* 101 old send */
/* 102 old recv */
/* 103 old sigreturn */
#define SYS_bind 104
#define SYS_setsockopt 105
#define SYS_listen 106
/* 107 old vtimes */
/* 108 old sigvec */
/* 109 old sigblock */
/* 110 old sigsetmask */
#define SYS_sigsuspend 111
/* 112 old sigstack */
/* 113 old recvmsg */
/* 114 old sendmsg */
/* 115 old vtrace */
#define SYS_gettimeofday 116
#define SYS_getrusage 117
#define SYS_getsockopt 118
/* 119 old resuba */
#define SYS_readv 120
#define SYS_writev 121
#define SYS_settimeofday 122
#define SYS_fchown 123
#define SYS_fchmod 124
/* 125 old recvfrom */
/* 126 old setreuid */
/* 127 old setregid */
#define SYS_rename 128
/* 129 old truncate */
/* 130 old ftruncate */
#define SYS_flock 131
#define SYS_mkfifo 132
#define SYS_sendto 133
#define SYS_shutdown 134
#define SYS_socketpair 135
#define SYS_mkdir 136
#define SYS_rmdir 137
#define SYS_utimes 138
#define SYS_futimes 139
#define SYS_adjtime 140
/* 141 old getpeername */
/* 142 old gethostid */
/* 143 old sethostid */
/* 144 old getrlimit */
/* 145 old setrlimit */
/* 146 old killpg */
#define SYS_setsid 147
/* 148 old setquota */
/* 149 old qquota */
/* 150 old getsockname */
#define SYS_getpgid 151
#define SYS_setprivexec 152
#define SYS_pread 153
#define SYS_pwrite 154
#if NFSSERVER
#define SYS_nfssvc 155
#else
/* 155 */
#endif
/* 156 old getdirentries */
#define SYS_statfs 157
#define SYS_fstatfs 158
#define SYS_unmount 159
/* 160 old async_daemon */
#if NFSCLIENT
#define SYS_getfh 161
#else
/* 161 */
#endif
/* 162 old getdomainname */
/* 163 old setdomainname */
/* 164 */
#define SYS_quotactl 165
/* 166 old exportfs */
#define SYS_mount 167
/* 168 old ustat */
/* 169 */
#define SYS_table 170
/* 171 old wait3 */
/* 172 old rpause */
#define SYS_waitid 173
/* 174 old getdents */
/* 175 old gc_control */
#define SYS_add_profil 176
/* 177 */
/* 178 */
/* 179 */
#define SYS_kdebug_trace 180
#define SYS_setgid 181
#define SYS_setegid 182
#define SYS_seteuid 183
#define SYS_sigreturn 184
#define SYS_chud 185
/* 186 */
/* 187 */
#define SYS_stat 188
#define SYS_fstat 189
#define SYS_lstat 190
#define SYS_pathconf 191
#define SYS_fpathconf 192
#if COMPAT_GETFSSTAT
#define SYS_getfsstat 193
#else
/* 193 */
#endif
#define SYS_getrlimit 194
#define SYS_setrlimit 195
#define SYS_getdirentries 196
#define SYS_mmap 197
/* 198 __syscall */
#define SYS_lseek 199
#define SYS_truncate 200
#define SYS_ftruncate 201
#define SYS___sysctl 202
#define SYS_mlock 203
#define SYS_munlock 204
#define SYS_undelete 205
#define SYS_ATsocket 206
#define SYS_ATgetmsg 207
#define SYS_ATputmsg 208
#define SYS_ATPsndreq 209
#define SYS_ATPsndrsp 210
#define SYS_ATPgetreq 211
#define SYS_ATPgetrsp 212
/* 213 Reserved for AppleTalk */
#define SYS_kqueue_from_portset_np 214
#define SYS_kqueue_portset_np 215
#define SYS_mkcomplex 216
#define SYS_statv 217
#define SYS_lstatv 218
#define SYS_fstatv 219
#define SYS_getattrlist 220
#define SYS_setattrlist 221
#define SYS_getdirentriesattr 222
#define SYS_exchangedata 223
#ifdef __APPLE_API_OBSOLETE
#define SYS_checkuseraccess 224
#else
/* 224 HFS checkuseraccess check access to a file */
#endif /* __APPLE_API_OBSOLETE */
#define SYS_searchfs 225
#define SYS_delete 226
#define SYS_copyfile 227
/* 228 */
/* 229 */
#define SYS_poll 230
#define SYS_watchevent 231
#define SYS_waitevent 232
#define SYS_modwatch 233
#define SYS_getxattr 234
#define SYS_fgetxattr 235
#define SYS_setxattr 236
#define SYS_fsetxattr 237
#define SYS_removexattr 238
#define SYS_fremovexattr 239
#define SYS_listxattr 240
#define SYS_flistxattr 241
#define SYS_fsctl 242
#define SYS_initgroups 243
/* 244 */
/* 245 */
/* 246 */
#if NFSCLIENT
#define SYS_nfsclnt 247
#define SYS_fhopen 248
#else
/* 247 */
/* 248 */
#endif
/* 249 */
#define SYS_minherit 250
#define SYS_semsys 251
#define SYS_msgsys 252
#define SYS_shmsys 253
#define SYS_semctl 254
#define SYS_semget 255
#define SYS_semop 256
/* 257 */
#define SYS_msgctl 258
#define SYS_msgget 259
#define SYS_msgsnd 260
#define SYS_msgrcv 261
#define SYS_shmat 262
#define SYS_shmctl 263
#define SYS_shmdt 264
#define SYS_shmget 265
#define SYS_shm_open 266
#define SYS_shm_unlink 267
#define SYS_sem_open 268
#define SYS_sem_close 269
#define SYS_sem_unlink 270
#define SYS_sem_wait 271
#define SYS_sem_trywait 272
#define SYS_sem_post 273
#define SYS_sem_getvalue 274
#define SYS_sem_init 275
#define SYS_sem_destroy 276
#define SYS_open_extended 277
#define SYS_umask_extended 278
#define SYS_stat_extended 279
#define SYS_lstat_extended 280
#define SYS_fstat_extended 281
#define SYS_chmod_extended 282
#define SYS_fchmod_extended 283
#define SYS_access_extended 284
#define SYS_settid 285
#define SYS_gettid 286
#define SYS_setsgroups 287
#define SYS_getsgroups 288
#define SYS_setwgroups 289
#define SYS_getwgroups 290
#define SYS_mkfifo_extended 291
#define SYS_mkdir_extended 292
#define SYS_identitysvc 293
/* 294 */
/* 295 */
#define SYS_load_shared_file 296
#define SYS_reset_shared_file 297
#define SYS_new_system_shared_regions 298
#define SYS_shared_region_map_file_np 299
#define SYS_shared_region_make_private_np 300
/* 301 */
/* 302 */
/* 303 */
/* 304 */
/* 305 */
/* 306 */
/* 307 */
/* 308 */
/* 309 */
#define SYS_getsid 310
#define SYS_settid_with_pid 311
/* 312 */
#define SYS_aio_fsync 313
#define SYS_aio_return 314
#define SYS_aio_suspend 315
#define SYS_aio_cancel 316
#define SYS_aio_error 317
#define SYS_aio_read 318
#define SYS_aio_write 319
#define SYS_lio_listio 320
/* 321 */
/* 322 */
/* 323 */
#define SYS_mlockall 324
#define SYS_munlockall 325
/* 326 */
#define SYS_issetugid 327
#define SYS___pthread_kill 328
#define SYS_pthread_sigmask 329
#define SYS_sigwait 330
#define SYS___disable_threadsignal 331
#define SYS___pthread_markcancel 332
#define SYS___pthread_canceled 333
#define SYS___semwait_signal 334
#define SYS_utrace 335
#define SYS_proc_info 336
/* 337 */
/* 338 */
/* 339 */
/* 340 */
/* 341 */
/* 342 */
/* 343 */
/* 344 */
/* 345 */
/* 346 */
/* 347 */
/* 348 */
/* 349 */
#define SYS_audit 350
#define SYS_auditon 351
/* 352 */
#define SYS_getauid 353
#define SYS_setauid 354
#define SYS_getaudit 355
#define SYS_setaudit 356
#define SYS_getaudit_addr 357
#define SYS_setaudit_addr 358
#define SYS_auditctl 359
/* 360 */
/* 361 */
#define SYS_kqueue 362
#define SYS_kevent 363
#define SYS_lchown 364
#define SYS_stack_snapshot 365
/* 366 */
/* 367 */
/* 368 */
/* 369 */
#define SYS_MAXSYSCALL 370

未使用の予約番号がいくつかあるが,370を最大値に約300強のシステムコールが存在する.

また,Mac OS Xでは,BSD互換レイヤより低位にmach用のシステムコール(trap)が定義されているらしい.Mac OS X Internalsによると,BSDシステムコールの10倍程度の数があるとのことである.

今週の参考書籍
Mac OS X Internals: Amit Singh
GNU Development Tools: 西田 亙

2007年4月23日月曜日

write()を追いかける

前回行ったHelloWorldと同様,ktrace/kdumpによって追いかける.

ソースコード
#include

int main() {
char *buf = "123";
write(1, buf, 3);
return 0;
}
以下はkdumpの出力である.

$ kdump
8246 ktrace RET ktrace 0
8246 ktrace CALL execve(0xbffffacb,0xbffffa58,0xbffffa60)
8246 ktrace NAMI "./a.out"
8246 ktrace NAMI "/usr/lib/dyld"
8246 a.out RET execve 0
8246 a.out CALL open(0x8fe45d8c,0,0xbffff928)
8246 a.out NAMI "/dev/urandom"
8246 a.out RET open 3
8246 a.out CALL read(0x3,0x8fe4f460,0x20)
8246 a.out GIO fd 3 read 32 bytes
"\M-*\^C?\M-!\M-#\M^E\M-R\^Tm\rWMxGFU\^S\M-9\M-"w\M-!\M-:,\M-S\M-j-r"\M-4\^\vK"
8246 a.out RET read 32/0x20
8246 a.out CALL close(0x3)
8246 a.out RET close 0
8246 a.out CALL getpid
8246 a.out RET getpid 8246/0x2036
8246 a.out CALL __sysctl(0xbffff578,0x3,0xbffff97c,0xbffff978,0,0)
8246 a.out RET __sysctl 0
8246 a.out CALL open(0x8fe41524,0,0)
8246 a.out NAMI "."
8246 a.out RET open 3
8246 a.out CALL fstat(0x3,0xbffff350)
8246 a.out RET fstat 0
8246 a.out CALL fcntl(0x3,0x32,0xbffff578)
8246 a.out RET fcntl 0
8246 a.out CALL close(0x3)
8246 a.out RET close 0
8246 a.out CALL stat(0xbffff578,0xbffff2f0)
8246 a.out NAMI "/Users/mmori/Documents/ht/lecture/System Software/02"
8246 a.out RET stat 0
8246 a.out CALL issetugid
8246 a.out RET issetugid 0
8246 a.out CALL __sysctl(0xbffff494,0x2,0xbffff45c,0xbffff49c,0x8fe3e910,0xa)
8246 a.out RET __sysctl 0
8246 a.out CALL __sysctl(0xbffff45c,0x2,0x8fe51990,0xbffff978,0,0)
8246 a.out RET __sysctl 0
8246 a.out CALL __sysctl(0xbffff494,0x2,0xbffff45c,0xbffff49c,0x8fe3e93c,0xd)
8246 a.out RET __sysctl 0
8246 a.out CALL __sysctl(0xbffff45c,0x2,0x8fe5198c,0xbffff978,0,0)
8246 a.out RET __sysctl 0
8246 a.out CALL open(0x1388,0,0)
8246 a.out NAMI "/usr/lib/libSystem.B.dylib"
8246 a.out RET open 3
8246 a.out CALL fstat(0x3,0xbfffe888)
8246 a.out RET fstat 0
8246 a.out CALL pread(0x3,0xbfffd488,0x1000,0)
8246 a.out GIO fd 3 read 4096 bytes
"\M-J\M-~\M-:\M->\0\0\0\^D\0\0\0\^R\0\0\0\0\0\0\^P\0\0"$\f\0\0\0\f\^A\0\0\^R\0\0\0\0\0"@\0\0\^^\M-vl\0\0\0\f\0\0\0\a\0\0\
\0\^C\0A@\0\0\^\\M-Yx\0\0\0\f\^A\0\0\a\0\0\0\^C\0^ \0\0\^\\^C\^D\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
8246 a.out RET pread 4096/0x1000
8246 a.out CALL pread(0x3,0xbfffd488,0x1000,0x414000)
8246 a.out GIO fd 3 read 4096 bytes
"\M-N\M-z\M-m\M-~\a\0\0\0\^C\0\0\0\^F\0\0\0\v\0\0\0\M-L\a\0\0\M-5\0\0\0\^A\0\0\0$\^C\0\0__TEXT\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M^P\0000\^W\0\0\0\0\0\0000\^W\0\a\0\0\0\^E\0\0\0\v\0\0\0\0\0\0\0__text\0\0\0\0\0\0\0\0\0\0__TEXT\0\0\0\0\0\0\0\0\0\0\
\M-P\f\0\M^P\M-.\M-e\^U\0\M-P\f\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\0\^D\0\M^@\0\0\0\0\0\0\0\0__picsymbol_stub__TEXT\0\0\0\0\0\
\0\0\0\0\0~\M-r\^U\M^PN\0\0\0~\M-r\^U\0\0\0\0\0\0\0\0\0\0\0\0\0\b\^D\0\M^@\0\0\0\0\^Z\0\0\0__cstring\0\0\0\0\0\0\0__TEXT\
\0\0\0\0\0\0\0\0\0\0\M-L\M-r\^U\M^P\M-$\M-F\0\0\M-L\M-r\^U\0\^B\0\0\0\0\0\0\0\0\0\0\0\^B\0\0\0\0\0\0\0\0\0\0\0__textcoal\
_nt\0\0\0__TEXT\0\0\0\0\0\0\0\0\0\0p\M-9\^V\M^P\b\0\0\0p\M-9\^V\0\0\0\0\0\0\0\0\0\0\0\0\0\v\^D\0\M^@\0\0\0\0\0\0\0\0__co\
nst\0\0\0\0\0\0\0\0\0__TEXT\0\0\0\0\0\0\0\0\0\0\M^@\M-9\^V\M^P@f\0\0\M^@\M-9\^V\0\^E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0__literal8\0\0\0\0\0\0__TEXT\0\0\0\0\0\0\0\0\0\0\M-@\^_\^W\M^P8 \0\0\M-@\^_\^W\0\^C\0\0\0\0\0\0\0\0\0\0\
\0\^D\0\0\0\0\0\0\0\0\0\0\0__literal4\0\0\0\0\0\0__TEXT\0\0\0\0\0\0\0\0\0\0\M-x(\^W\M^P\0\^A\0\0\M-x(\^W\0\^B\0\0\0\0\0\
\0\0\0\0\0\0\^C\0\0\0\0\0\0\0\0\0\0\0__StaticInit\0\0\0\0__TEXT\0\0\0\0\0\0\0\0\0\0\M-x)\^W\M^P\^?\0\0\0\M-x)\^W\0\^A\0\
\0\0\0\0\0\0\0\0\0\0\0\^D\0\M^@\0\0\0\0\0\0\0\0__constructor\0\0\0__TEXT\0\0\0\0\0\0\0\0\0\0w*\^W\M^P\0\0\0\0w*\^W\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0__destructor\0\0\0\0__TEXT\0\0\0\0\0\0\0\0\0\0x*\^W\M^P\0\0\0\0x*\^W\0\^A\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0__eh_frame\0\0\0\0\0\0__TEXT\0\0\0\0\0\0\0\0\0\0x*\^W\M^Pd\^E\0\0x*\^W\0\^B\
\0\0\0\0\0\0\0\0\0\0\0\v\0\0h\0\0\0\0\0\0\0\0\^A\0\0\0\M^\\^B\0\0__DATA\0\0\0\0\0\0\0\0\0\0\0\0\0\240\0\^P\^A\0\0000\^W\
\0\0\240\0\0\^C\0\0\0\^C\0\0\0 \0\0\0\0\0\0\0__data\0\0\0\0\0\0\0\0\0\0__DATA\0\0\0\0\0\0\0\0\0\0\0\0\0\240\M-([\0\0\
\0000\^W\0\^E\0\0\0\0\0\0\0\0\0\0\0\0\^C\0\0\0\0\0\0\0\0\0\0__dyld\0\0\0\0\0\0\0\0\0\0__DATA\0\0\0\0\0\0\0\0\0\0\M-([\0\
\240\b\0\0\0\M-(\M^K\^W\0\^B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0__la_symbol_ptr\0__DATA\0\0\0\0\0\0\0\0\0\0\
\M-0[\0\240\f\0\0\0\M-0\M^K\^W\0\^B\0\0\0\0\0\0\0\0\0\0\0\a\^A\0\0\^C\0\0\0\0\0\0\0__const\0\0\0\0\0\0\0\0\0__DATA\0\0\0\
\0\0\0\0\0\0\0\M-@[\0\240\M^H\^R\0\0\M-@\M^K\^W\0\^E\0\0\0\0\0\0\0\0\0\0\0\0\^C\0\0\0\0\0\0\0\0\0\0__nl_symbol_ptr\0__DA\
TA\0\0\0\0\0\0\0\0\0\0Hn\0\2400\0\0\0H\M^^\^W\0\^B\0\0\0\0\0\0\0\0\0\0\0\^F\0\0\0\^F\0\0\0\0\0\0\0__mod_init_func\0__DAT\
A\0\0\0\0\0\0\0\0\0\0xn\0\240\f\0\0\0x\M^^\^W\0\^B\0\0\0\0\0\0\0\0\0\0\0 \^A\0\0\0\0\0\0\0\0\0\0__commpage\0\0\0\
\0\0\0__DATA\0\0\0\0\0\0\0\0\0\0\M^Pn\0\240\M^@#\0\0\M^P\M^^\^W\0\^D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\0\0__bss\
\0\0\0\0\0\0\0\0\0\0\0__DATA\0\0\0\0\0\0\0\0\0\0 \M^R\0\240\M-Pm\0\0\0\0\0\0\^E\0\0\0\0\0\0\0\0\0\0\0\^A\0\0\0\0\0\0\0\0\
\0\0\0__common\0\0\0\0\0\0\0\0__DATA\0\0\0\0\0\0\0\0\0\0\0\0\^A\240|\^A\0\0\0\0\0\0\^E\0\0\0\0\0\0\0\0\0\0\0\^A\0\0\0\0\
\0\0\0\0\0\0\0\^A\0\0\0\M-@\0\0\0__IMPORT\0\0\0\0\0\0\0\0\0\^P\^A\240\0 \0\0\0\M-P\^W\0\0 \0\0\a\0\0\0\a\0\0\0\^B\0\0\0\
\0\0\0\0__jump_table\0\0\0\0__IMPORT\0\0\0\0\0\0\0\0\0\^P\^A\240\M-Z\^V\0\0\0\M-P\^W\0\0\0\0\0\0\0\0\0\0\0\0\0\b\^D\0\
\M^D\^R\0\0\0\^E\0\0\0__pointers\0\0\0\0\0\0__IMPORT\0\0\0\0\0\0\0\0\M-Z&\^A\240\M-l\^B\0\0\M-Z\M-f\^W\0\0\0\0\0\0\0\0\0\
\0\0\0\0\^F\0\0\0\M-$\^D\0\0\0\0\0\0\^A\0\0\08\0\0\0__LINKEDIT\0\0\0\0\0\0\0000\^W\M^Px\M-i\^D\0\0\M-p\^W\0x\M-i\^D\0\^C\
\0\0\0\^A\0\0\0\0\0\0\0\^D\0\0\0\r\0\0\0004\0\0\0\^X\0\0\0#j\M-zE\^F\^CX\0\0\0\^A\0/usr/lib/libSystem.B.dylib\0\0\f\0\0\
\0@\0\0\0\^X\0\0\0#j\M-zE\0\0\M-\\0\0\0\^A\0/usr/lib/system/libmathCommon.A.dylib\0\0\0\^U\0\0\0\^\\0\0\0\f\0\0\0libmath\
Common\0\0\0\^B\0\0\0\^X\0\0\0\M-($\^X\0\M-#\^V\0\0hL\^[\0\^P\M^M\^A\0\v\0\0\0P\0\0\0\0\0\0\0G \0\0G \0\0U\r\0\0\M^\\
\^V\0\0\a\0\0\0\M^DJ\^Y\0U\r\0\0,\M-5\^Y\0\M-A\^D\0\0`\M-,\^Z\0\^B(\0\0\b5\^Y\0_\^E\0\0h4\^Y\0\^T\0\0\0\0\M-p\^W\0\M^U\
\^F\0\0\^V\0\0\0\^P\0\0\0L4\^Y\0\a\0\0\0\^W\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0U\M^I\M-eWVS\M^C\M-l\^\\M-h\M^R\M-,\^V\0\M^KU\b\M^KE\f\M^IE\
\M-d\M^Ku\^P\M^K}\^T\M^KM\^X\M^C:\bt\^R\M^KE\M-d\M^IE\f\M^C\M-D\^\[^_]\M-i\M-@\^N\^A\^P\M^E\M-It\r\M-h1\^C\^A\^P\M-G\0\
\^A\0\0\0\M-k\^Q\M^C}\M-d\^Bt\^U\M-h\^^\^C\^A\^P\M-G\0\^V\0\0\0\M-8\M^?\M^?\M^?\M^?\M-i1\^A\0\0\M^MB\^D\M^Cz\^D\^AuR\M^E\
\M-vt\^E\M^C?\^]vR\M-G\a\^^\0\0\0\M^E\M-v\^O\M^D\^O\^A\0\0\M-G\^F/usr\M-GF\^D/bin\M-GF\b:/bi\M-GF\fn:/u\M-GF\^Psr/s\M-GF\
\^Tbin:\M-GF\^X/sbif\M-GF\^\n\0\M-i\M-T\0\0\0\M^E\M-vt\^R\M^C?\^Cw\r\M-h\M-%\^B\^A\^P\M-G\0\f\0\0\0\M-k\M^E\M-G\a\^D\0\0\
\0\M^E\M-v\^O\M^D\M-0\0\0\0\M^C8\^T\^O\M^Gc\M^?\M^?\M^?\M^K\0\M^K\M^D\M^C\M-j\0\0\0\^A\M-X\M^?\M-`@\0\0\0@\0\0\0>\^A\0\0\
^\^A\0\0>\^A\0\0F\^A\0\0N\^A\0\0V\^A\0\0^\^A\0\0~\^A\0\0f\^A\0\0n\^A\0\0n\^A\0\0n\^A\0\0n\^A\0\0n\^A\0\0n\^A\0\0n\^A\0\0\
n\^A\0\0v\^A\0\0~\^A\0\0\M-G\^Fc\0\0\0\M-k>\M-G\^F\M-h\^C\0\0\M-k6\M-G\^F\^B\0\0\0\M-k.\M-G\^F \0\0\0\M-k&\M-G\^F\0\b\0\
\0\M-k\^^\M-G\^F\M-0\r\^C\0\M-k\^V\M-G\^F\0\0\0\0\M-k\^N\M-G\^F\^T\0\0\0\M-k\^F\M-G\^F\M^?\0\0\0001\M-@\M^C\M-D\^\[^_]\
\M-C\M^P\M^P\M^P\M^P\M-8\M-J\0\0\0\M^P\M^P\M-hd\^B\^Q\0s\^N\M-h\0\0\0\0Z\M^K\M^R\M-E_\0\^P\M^?\M-b\M-C\M^P\M^P\M^PU\M^I\
\M-eVS\M^C\M-l \M-h\M-S\M-*\^V\0\M^Mu\M-w\M^I4$\M-h\M-7\^U\^A\^P\M^K\M^K\M-7\M-o\0\^P\M^E\M-Iu\^X\M^M\M^C\M-7\M-o\0\^P\
\M^ID$\^D\M^M\M^C[\M^]\^V\0\M^I\^D$\M-h\M-.\^U\^A\^P\M^KE\b\M^I\^D$\M^?\M^S\M-7\M-o\0\^P\M^I4$\M-h\M^P\^U\^A\^P\M^C\M-D \
[^]\M-C\M^P\M^P\M^P\M^P\M^P\M^P\M^P\M^P\M^P\M^P\M^PU\M^I\M-e\M-h|\M-*\^V\0\M^M\M^A\M^H\M-n\0\^P\M^IE\b]\M-i\^A\0\0\0\M^P\
U\M^I\M-eV\M^C\M-l\^T\M^Ku\b\M^I4$\M-h\^V\0\0\0\M^I4$\M-h\^O\^B\^A\^P\M^C\M-D\^T^]\M-C\M^P\M^P\M^P\M^P\M^P\M^P\M^P\M^PU\
\M^I\M-eWV\M^C\M-l \M^K}\b\M^@\^?,\0u+\M^Mu\M-l\M^I4$\M-h \^U\^A\^P\M-GD$\^D\^B\0\0\0\M^I4$\M-h\M-~\^T\^A\^P\M^It$\
\^D\M^I<$\M-h\M^T\^D\^A\^P\M-FG,\^A\M^C\M-D ^_]\M-C\M^P\M^PU\M^I\M-eWVS\M^C\M-l\^\\M-h\M-m\M-)\^V\0\M^Ku\b\M^K\^F=XTUMt\
\v=\M-'\M-+\M-*2\^O\M^E(\^A\0\0\M^K\M-;_\^W\^A\^P\M^K\^W\M^E\M-Rt\r\M^MF\^D\M^I\^D$\M-hb\^A\^A\^P\M^K\^F=XTUMtw=\M-'\M-+\
\M-*2t\^Z\M^K\a\M^E\M-@\^O\M^D\M-w\0\0\0\M^MF\^D\M^I\^D$\M-h\^Z\^A\^A\^P\M-i\M-g\0\0\0f\M-GF$\0\0\M^@f\^T\M-pf\M-GF\^V\0\
\0\M-GF\f\0\0\0\0\M-GF\^X\0\0\0\0\M-GF\^\\0\0\0\0"
8246 a.out RET pread 4096/0x1000
8246 a.out CALL __sysctl(0xbfffcb48,0x2,0xbfffcb7c,0xbfffcb78,0,0)
8246 a.out RET __sysctl 0
8246 a.out CALL shared_region_map_file_np(0x3,0x5,0xbfffc9d0,0)
8246 a.out RET shared_region_map_file_np 0
8246 a.out CALL close(0x3)
8246 a.out RET close 0
8246 a.out CALL open(0x90000720,0,0)
8246 a.out NAMI "/usr/lib/system/libmathCommon.A.dylib"
8246 a.out RET open 3
8246 a.out CALL fstat(0x3,0xbfffe7c8)
8246 a.out RET fstat 0
8246 a.out CALL pread(0x3,0xbfffd3c8,0x1000,0)
8246 a.out GIO fd 3 read 4096 bytes
"\M-J\M-~\M-:\M->\0\0\0\^D\0\0\0\^R\0\0\0\0\0\0\^P\0\0\0v4\0\0\0\f\^A\0\0\^R\0\0\0\0\0\0\M^P\0\0\0uD\0\0\0\f\0\0\0\a\0\0\
\0\^C\0\^A\^P\0\0\0H@\0\0\0\f\^A\0\0\a\0\0\0\^C\0\^A`\0\0\0G\M^L\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
8246 a.out RET pread 4096/0x1000
8246 a.out CALL pread(0x3,0xbfffd3c8,0x1000,0x11000)
8246 a.out GIO fd 3 read 4096 bytes
"\M-N\M-z\M-m\M-~\a\0\0\0\^C\0\0\0\^F\0\0\0 \0\0\0\M-D\^C\0\0\M-5\0\0\0\^A\0\0\0\M^L\^A\0\0__TEXT\0\0\0\0\0\0\0\0\0\
\0\0 \^\\M^P\0000\0\0\0\0\0\0\0000\0\0\a\0\0\0\^E\0\0\0\^E\0\0\0\0\0\0\0__text\0\0\0\0\0\0\0\0\0\0__TEXT\0\0\0\0\0\0\0\0\
\0\0\0003\^\\M^P\M-p\^O\0\0\0\^S\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\0\^D\0\M^@\0\0\0\0\0\0\0\0__const\0\0\0\0\0\0\0\0\0__TEXT\
\0\0\0\0\0\0\0\0\0\0\0C\^\\M^P\M-`\v\0\0\0#\0\0\^E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0__literal8\0\0\0\0\0\0__\
TEXT\0\0\0\0\0\0\0\0\0\0\M-`N\^\\M^P\M-p\0\0\0\M-`.\0\0\^C\0\0\0\0\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0__textcoal_nt\0\
\0\0__TEXT\0\0\0\0\0\0\0\0\0\0\M-PO\^\\M^P\b\0\0\0\M-P/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\v\^D\0\M^@\0\0\0\0\0\0\0\0__literal4\
\0\0\0\0\0\0__TEXT\0\0\0\0\0\0\0\0\0\0\M-XO\^\\M^P\^\\0\0\0\M-X/\0\0\^B\0\0\0\0\0\0\0\0\0\0\0\^C\0\0\0\0\0\0\0\0\0\0\0\
\^A\0\0\0\M-@\0\0\0__DATA\0\0\0\0\0\0\0\0\0\0\0 \^\\240\0\^P\0\0\0000\0\0\0\^P\0\0\^C\0\0\0\^C\0\0\0\^B\0\0\0\0\0\0\0__d\
ata\0\0\0\0\0\0\0\0\0\0__DATA\0\0\0\0\0\0\0\0\0\0\0 \^\\240\f\0\0\0\0000\0\0\^B\0\0\0\0\0\0\0\0\0\0\0\0\^A\0\0\0\0\0\0\0\
\0\0\0__dyld\0\0\0\0\0\0\0\0\0\0__DATA\0\0\0\0\0\0\0\0\0\0\f \^\\240\b\0\0\0\f0\0\0\^B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\^A\0\0\0|\0\0\0__IMPORT\0\0\0\0\0\0\0\0\0000\^\\240\0\0\0\0\0\0\0\0\0\0\0\0\a\0\0\0\a\0\0\0\^A\0\0\0\0\0\0\
\0__jump_table\0\0\0\0__IMPORT\0\0\0\0\0\0\0\0\0000\^\\240\0\0\0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\^D\0\M^D\0\0\0\0\^E\
\0\0\0\^A\0\0\08\0\0\0__LINKEDIT\0\0\0\0\0\0\0P\^\\M^P@\b\0\0\0@\0\0@\b\0\0\^C\0\0\0\^A\0\0\0\0\0\0\0\^D\0\0\0\r\0\0\0@\
\0\0\0\^X\0\0\0#j\M-zE\0\0\M-\\0\0\0\^A\0/usr/lib/system/libmathCommon.A.dylib\0\0\0\^B\0\0\0\^X\0\0\0\^X@\0\0M\0\0\0\^T\
E\0\0,\^C\0\0\v\0\0\0P\0\0\0\0\0\0\0004\0\0\0004\0\0\0\^Y\0\0\0M\0\0\0\0\0\0\0\M-4C\0\0\^Y\0\0\0|D\0\0\^A\0\0\0\M-0D\0\0\
\^Y\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0\^C\0\0\0\^V\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\^W\0\0\0\f\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
8246 a.out RET pread 4096/0x1000
8246 a.out CALL shared_region_map_file_np(0x3,0x3,0xbfffcd60,0)
8246 a.out RET shared_region_map_file_np 0
8246 a.out CALL close(0x3)
8246 a.out RET close 0
8246 a.out CALL open(0x9015f7ec,0,0xbffff9a8)
8246 a.out NAMI "/dev/urandom"
8246 a.out RET open 3
8246 a.out CALL read(0x3,0xa0001a80,0x20)
8246 a.out GIO fd 3 read 32 bytes
"\M^W\M-^]|G6G\M--}}R\M^T\M^[\M-W-\^U\M-V\M^P\^A^\M^I\M-r>i\\\M-,UY\M-|\^T\M-9""
8246 a.out RET read 32/0x20
8246 a.out CALL close(0x3)
8246 a.out RET close 0
8246 a.out CALL __sysctl(0xbffff9e8,0x2,0xbffff9f8,0xbffff9f0,0,0)
8246 a.out RET __sysctl 0
8246 a.out CALL __sysctl(0xbffff9e8,0x2,0xbffff9fc,0xbffff9f0,0,0)
8246 a.out RET __sysctl 0
8246 a.out CALL write(0x1,0x1ff8,0x3)
8246 a.out GIO fd 1 wrote 3 bytes
"123"
8246 a.out RET write 3
8246 a.out CALL exit(0)

printf()を使った場合に比べて,write()前のfstat()やioctl()の呼び出しが無い.
つまりは,printf()は標準出力(File Descriptor 0x1)へのwrite()をwrapする関数であることが分かった.