1265578519 / OpenTracker

一个linux中开源和免费的BitTorrent Tracker
http://bbs.itzmx.com/thread-18214-1-1.html
76 stars 17 forks source link

kernel messages debug #4

Closed 1265578519 closed 1 year ago

1265578519 commented 1 year ago

运行十年了头一次崩溃,异常原因,猜测是硬件问题? opentracker[13006]: segfault at 7f6031449430 ip 0000000000405f3b sp 00007f60320b00f0 error 4 in opentracker[400000+14000]

1265578519 commented 7 months ago

无法安装

[root@tracker opentracker]# make
cc -c -o opentracker.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_FULLSCRAPE opentracker.c
cc -c -o trackerlogic.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_FULLSCRAPE trackerlogic.c
trackerlogic.c: In function ‘add_peer_to_torrent_and_return_peers’:
trackerlogic.c:129:3: warning: passing argument 2 of ‘vector_find_or_insert_peer’ from incompatible pointer type [enabled by default]
   peer_dest = vector_find_or_insert_peer( &(peer_list->peers), peer_src, peer_size, &exactmatch );
   ^
In file included from trackerlogic.h:118:0,
                 from trackerlogic.c:23:
ot_vector.h:27:10: note: expected ‘const uint8_t (*)[1]’ but argument is of type ‘uint8_t (*)[1]’
 ot_peer *vector_find_or_insert_peer( ot_vector *vector, ot_peer const *peer, size_t peer_size, int *exactmatch );
          ^
trackerlogic.c: In function ‘remove_peer_from_torrent’:
trackerlogic.c:397:5: warning: passing argument 2 of ‘vector_remove_peer’ from incompatible pointer type [enabled by default]
     switch( vector_remove_peer( &peer_list->peers, peer_src, peer_size ) ) {
     ^
In file included from trackerlogic.h:118:0,
                 from trackerlogic.c:23:
ot_vector.h:29:10: note: expected ‘const uint8_t (*)[1]’ but argument is of type ‘uint8_t (*)[1]’
 int      vector_remove_peer( ot_vector *vector, ot_peer const *peer, size_t peer_size);
          ^
cc -c -o scan_urlencoded_query.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_FULLSCRAPE scan_urlencoded_query.c
cc -c -o ot_mutex.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_FULLSCRAPE ot_mutex.c
cc -c -o ot_stats.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_FULLSCRAPE ot_stats.c
cc -c -o ot_vector.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_FULLSCRAPE ot_vector.c
ot_vector.c: In function ‘vector_find_or_insert_peer’:
ot_vector.c:105:5: error: unknown type name ‘ptrdiff_t’
     ptrdiff_t offset = match - (ot_peer*)vector->data;
     ^
ot_vector.c: In function ‘vector_redistribute_buckets’:
ot_vector.c:230:9: warning: passing argument 1 of ‘vector_hash_peer’ from incompatible pointer type [enabled by default]
         bucket_dest += vector_hash_peer(peers_old, OT_PEER_COMPARE_SIZE_FROM_PEER_SIZE(peer_size), num_buckets_new);
         ^
ot_vector.c:53:16: note: expected ‘const uint8_t (*)[1]’ but argument is of type ‘uint8_t (*)[1]’
 static uint8_t vector_hash_peer( ot_peer const *peer, size_t compare_size, int bucket_count ) {
                ^
make: *** [ot_vector.o] Error 1
[root@tracker opentracker]#
erdgeist commented 7 months ago

I fixed the missing include for ptrdiff_t but I have never seen warnings like these. What operating system are you compiling this on?

1265578519 commented 7 months ago

当前我使用的是centos7系统,最新代码会出现大量警告,不过现在可以正常安装生成二进制文件。 希望能把警告修复一下

[root@tracker opentracker]# make
cc -c -o opentracker.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY opentracker.c
cc -c -o trackerlogic.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY trackerlogic.c
trackerlogic.c: In function ‘add_peer_to_torrent_and_return_peers’:
trackerlogic.c:129:3: warning: passing argument 2 of ‘vector_find_or_insert_peer’ from incompatible pointer type [enabled by default]
   peer_dest = vector_find_or_insert_peer( &(peer_list->peers), peer_src, peer_size, &exactmatch );
   ^
In file included from trackerlogic.h:118:0,
                 from trackerlogic.c:23:
ot_vector.h:27:10: note: expected ‘const uint8_t (*)[1]’ but argument is of type ‘uint8_t (*)[1]’
 ot_peer *vector_find_or_insert_peer( ot_vector *vector, ot_peer const *peer, size_t peer_size, int *exactmatch );
          ^
trackerlogic.c: In function ‘remove_peer_from_torrent’:
trackerlogic.c:397:5: warning: passing argument 2 of ‘vector_remove_peer’ from incompatible pointer type [enabled by default]
     switch( vector_remove_peer( &peer_list->peers, peer_src, peer_size ) ) {
     ^
In file included from trackerlogic.h:118:0,
                 from trackerlogic.c:23:
ot_vector.h:29:10: note: expected ‘const uint8_t (*)[1]’ but argument is of type ‘uint8_t (*)[1]’
 int      vector_remove_peer( ot_vector *vector, ot_peer const *peer, size_t peer_size);
          ^
cc -c -o scan_urlencoded_query.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY scan_urlencoded_query.c
cc -c -o ot_mutex.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_mutex.c
cc -c -o ot_stats.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_stats.c
cc -c -o ot_vector.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_vector.c
ot_vector.c: In function ‘vector_redistribute_buckets’:
ot_vector.c:231:9: warning: passing argument 1 of ‘vector_hash_peer’ from incompatible pointer type [enabled by default]
         bucket_dest += vector_hash_peer(peers_old, OT_PEER_COMPARE_SIZE_FROM_PEER_SIZE(peer_size), num_buckets_new);
         ^
ot_vector.c:54:16: note: expected ‘const uint8_t (*)[1]’ but argument is of type ‘uint8_t (*)[1]’
 static uint8_t vector_hash_peer( ot_peer const *peer, size_t compare_size, int bucket_count ) {
                ^
cc -c -o ot_clean.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_clean.c
cc -c -o ot_udp.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_udp.c
cc -c -o ot_iovec.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_iovec.c
cc -c -o ot_fullscrape.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_fullscrape.c
cc -c -o ot_accesslist.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_accesslist.c
cc -c -o ot_http.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_http.c
ot_http.c: In function ‘http_handle_scrape’:
ot_http.c:371:3: warning: passing argument 1 of ‘return_tcp_scrape_for_torrent’ from incompatible pointer type [enabled by default]
   ws->reply_size = return_tcp_scrape_for_torrent( multiscrape_buf, numwant, ws->reply );
   ^
In file included from ot_http.c:24:0:
trackerlogic.h:190:9: note: expected ‘const uint8_t (*)[20]’ but argument is of type ‘uint8_t (*)[20]’
 size_t  return_tcp_scrape_for_torrent( ot_hash const *hash_list, int amount, char *reply );
         ^
cc -c -o ot_livesync.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_livesync.c
cc -c -o ot_rijndael.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_rijndael.c
cc -o opentracker opentracker.o trackerlogic.o scan_urlencoded_query.o ot_mutex.o ot_stats.o ot_vector.o ot_clean.o ot_udp.o ot_iovec.o ot_fullscrape.o ot_accesslist.o ot_http.o ot_livesync.o ot_rijndael.o -L../libowfat -lowfat -pthread -lz
strip opentracker
cc -c -o opentracker.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY opentracker.c
cc -c -o trackerlogic.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY trackerlogic.c
trackerlogic.c: In function ‘add_peer_to_torrent_and_return_peers’:
trackerlogic.c:129:3: warning: passing argument 2 of ‘vector_find_or_insert_peer’ from incompatible pointer type [enabled by default]
   peer_dest = vector_find_or_insert_peer( &(peer_list->peers), peer_src, peer_size, &exactmatch );
   ^
In file included from trackerlogic.h:118:0,
                 from trackerlogic.c:23:
ot_vector.h:27:10: note: expected ‘const uint8_t (*)[1]’ but argument is of type ‘uint8_t (*)[1]’
 ot_peer *vector_find_or_insert_peer( ot_vector *vector, ot_peer const *peer, size_t peer_size, int *exactmatch );
          ^
trackerlogic.c: In function ‘remove_peer_from_torrent’:
trackerlogic.c:397:5: warning: passing argument 2 of ‘vector_remove_peer’ from incompatible pointer type [enabled by default]
     switch( vector_remove_peer( &peer_list->peers, peer_src, peer_size ) ) {
     ^
In file included from trackerlogic.h:118:0,
                 from trackerlogic.c:23:
ot_vector.h:29:10: note: expected ‘const uint8_t (*)[1]’ but argument is of type ‘uint8_t (*)[1]’
 int      vector_remove_peer( ot_vector *vector, ot_peer const *peer, size_t peer_size);
          ^
cc -c -o scan_urlencoded_query.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY scan_urlencoded_query.c
cc -c -o ot_mutex.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_mutex.c
cc -c -o ot_stats.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_stats.c
cc -c -o ot_vector.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_vector.c
ot_vector.c: In function ‘vector_redistribute_buckets’:
ot_vector.c:231:9: warning: passing argument 1 of ‘vector_hash_peer’ from incompatible pointer type [enabled by default]
         bucket_dest += vector_hash_peer(peers_old, OT_PEER_COMPARE_SIZE_FROM_PEER_SIZE(peer_size), num_buckets_new);
         ^
ot_vector.c:54:16: note: expected ‘const uint8_t (*)[1]’ but argument is of type ‘uint8_t (*)[1]’
 static uint8_t vector_hash_peer( ot_peer const *peer, size_t compare_size, int bucket_count ) {
                ^
cc -c -o ot_clean.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_clean.c
cc -c -o ot_udp.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_udp.c
cc -c -o ot_iovec.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_iovec.c
cc -c -o ot_fullscrape.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_fullscrape.c
cc -c -o ot_accesslist.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_accesslist.c
cc -c -o ot_http.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_http.c
ot_http.c: In function ‘http_handle_scrape’:
ot_http.c:371:3: warning: passing argument 1 of ‘return_tcp_scrape_for_torrent’ from incompatible pointer type [enabled by default]
   ws->reply_size = return_tcp_scrape_for_torrent( multiscrape_buf, numwant, ws->reply );
   ^
In file included from ot_http.c:24:0:
trackerlogic.h:190:9: note: expected ‘const uint8_t (*)[20]’ but argument is of type ‘uint8_t (*)[20]’
 size_t  return_tcp_scrape_for_torrent( ot_hash const *hash_list, int amount, char *reply );
         ^
cc -c -o ot_livesync.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_livesync.c
cc -c -o ot_rijndael.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_rijndael.c
cc -o opentracker.debug opentracker.debug.o trackerlogic.debug.o scan_urlencoded_query.debug.o ot_mutex.debug.o ot_stats.debug.o ot_vector.debug.o ot_clean.debug.o ot_udp.debug.o ot_iovec.debug.o ot_fullscrape.debug.o ot_accesslist.debug.o ot_http.debug.o ot_livesync.debug.o ot_rijndael.debug.o -L../libowfat -lowfat -pthread -lz
[root@tracker opentracker]#

经过测试,udp现在正常工作,没有错误不存在的ip地址了 83y6alz3ta17bl9sxcqmkokkgadmtef

不过http现在没有之前视频上的效果了,能不能修复下针对http可以同时返回ipv4+ipv6所有peer? https://github.com/1265578519/OpenTracker/issues/4#issuecomment-2027833048

这是最新版本的代码,他现在只能获得一个peer,无法获得2个ip地址,需要和以前代码一样,可以获得到 38.145.197.79 + 2605:f700:100:4::83

https://github.com/1265578519/OpenTracker/assets/6442439/266efa3f-0920-42f1-9c5c-8a9db8d3ed18

erdgeist commented 7 months ago

UDP

当前我使用的是centos7系统,最新代码会出现大量警告,不过现在可以正常安装生成二进制文件。 希望能把警告修复一下

What does cc -v report? There seem to be some warnings enabled that I do not have. My clang can't even see them.

erdgeist commented 7 months ago

Historically opentracker never returned ipv4 peers to ipv6 announces and vice versa. So I wonder how that worked before. Did you start two tracker instances in the past on ipv6 and ipv4 addresses?

It might be a good idea to start adding both ipv6 and ipv4 addresses to the announce replies, since now everyone out there has ipv6 capabilities.

However, ipv4 udp announces can never be answered with ipv6 addresses of peers, because the spec says that the source of the udp announce determines the kind of peers returned.

1265578519 commented 7 months ago

能不能修复下针对http可以同时返回ipv4+ipv6所有peer?

如果因为一个网络原因无法连接到tracker服务器的ipv6地址,通过ipv4 tracker获得所有的用户那么对BT下载提升速度是很有帮助的 https://ping6.ping.pe/2a00:b700:1::3:1dc https://i.ping.pe/0/X/img_0XqOYICV.png image

What does report? There seem to be some warnings enabled that I do not have. My clang can't even see them.cc -v

我没有看明白你说什么,上一版本的代码没有出现任何警告,我需要做什么?cc -v?

1265578519 commented 7 months ago

Historically opentracker never returned ipv4 peers to ipv6 announces and vice versa. So I wonder how that worked before. Did you start two tracker instances in the past on ipv6 and ipv4 addresses?

我只启动一个opentracker进程

It might be a good idea to start adding both ipv6 and ipv4 addresses to the announce replies, since now everyone out there has ipv6 capabilities.

However, ipv4 udp announces can never be answered with ipv6 addresses of peers, because the spec says that the source of the udp announce determines the kind of peers returned.

可以只对http起效果,udp保持最新代码现状,上一版本代码的http的工作方式是理想的!只是udp会返回错误的ip地址,现在最新代码已经修复udp问题

1265578519 commented 7 months ago

我需要做什么?cc -v?

我在xshell控制台上输入了命令,这是返回结果

[root@tracker ~]# cc -v
Using built-in specs.
COLLECT_GCC=cc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
[root@tracker ~]#
1265578519 commented 7 months ago

我在最新代码的版本出现了崩溃,不知道是否和之前安装过程中提示的警告有关系?

[root@tracker ~]# dmesg|grep opentracker
[2282151.956900] opentracker[26394]: segfault at fffffffffffffffa ip 00007f60a091bb7c sp 00007ffe984e1548 error 5 in libc-2.17.so[7f60a0896000+1c4000]
[root@tracker ~]#
[root@tracker opentracker]# gdb --args ./opentracker.debug -f opentracker.conf.sample -p 8080 -P 8080 -p 6961 -P 6961 -p 2710 -P 2710
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/OpenTracker-master/opentracker/opentracker.debug...done.
(gdb) run
Starting program: /home/OpenTracker-master/opentracker/./opentracker.debug -f opentracker.conf.sample -p 8080 -P 8080 -p 6961 -P 6961 -p 2710 -P 2710
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Blessing ip net 127.0.0.1 may_proxy.
Blessing ip net 173.245.48.0/20 may_proxy.
Blessing ip net 103.21.244.0/22 may_proxy.
Blessing ip net 103.22.200.0/22 may_proxy.
Blessing ip net 103.31.4.0/22 may_proxy.
Blessing ip net 141.101.64.0/18 may_proxy.
Blessing ip net 108.162.192.0/18 may_proxy.
Blessing ip net 190.93.240.0/20 may_proxy.
Blessing ip net 188.114.96.0/20 may_proxy.
Blessing ip net 197.234.240.0/22 may_proxy.
Blessing ip net 198.41.128.0/17 may_proxy.
Blessing ip net 162.158.0.0/15 may_proxy.
Blessing ip net 104.16.0.0/13 may_proxy.
Blessing ip net 104.24.0.0/14 may_proxy.
Blessing ip net 172.64.0.0/13 may_proxy.
Blessing ip net 131.0.72.0/22 may_proxy.
Blessing ip net 2400:cb00::/32 may_proxy.
Blessing ip net 2606:4700::/32 may_proxy.
Blessing ip net 2803:f800::/32 may_proxy.
Blessing ip net 2405:b500::/32 may_proxy.
Blessing ip net 2405:8100::/32 may_proxy.
Blessing ip net 2a06:98c0::/29 may_proxy.
Blessing ip net 2c0f:f248::/32 may_proxy.
Binding socket type TCP to address [::]:8080... success.
Binding socket type UDP to address [::]:8080... success.
Binding socket type TCP to address [::]:6961... success.
Binding socket type UDP to address [::]:6961... success.
Binding socket type TCP to address [::]:2710... success.
Binding socket type UDP to address [::]:2710... success.
Dropping to user nobody.
[New Thread 0x7ffff73c7700 (LWP 1381)]
[New Thread 0x7ffff6bc6700 (LWP 1382)]
 installing 0 workers on udp socket -1

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7660b7c in free () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-326.el7_9.x86_64 zlib-1.2.7-21.el7_9.x86_64
(gdb)
1265578519 commented 7 months ago

最新的代码udp上发现了一点问题,会出现返回异常seed数量 image

只有任务处于做种状态的时候,就会触发这个现象 image

erdgeist commented 7 months ago

我在最新代码的版本出现了崩溃,不知道是否和之前安装过程中提示的警告有关系?

No, it's probably not related to the warnings. It's bad, though. Can you try to catch it in debugger with opentracker.debug?

erdgeist commented 7 months ago

Meanwhile I added code that will return both ipv4 and ipv6 addresses for peers on tcp announces:

https://erdgeist.org/gitweb/opentracker/commit/?id=d9a5f046754581f0edaa0e385f865bcc5ee842e3

1265578519 commented 7 months ago

No, it's probably not related to the warnings.

他现在还有两个警告 image

[root@tracker opentracker]# make
cc -c -o opentracker.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY opentracker.c
cc -c -o trackerlogic.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY trackerlogic.c
cc -c -o scan_urlencoded_query.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY scan_urlencoded_query.c
cc -c -o ot_mutex.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_mutex.c
cc -c -o ot_stats.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_stats.c
cc -c -o ot_vector.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_vector.c
cc -c -o ot_clean.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_clean.c
cc -c -o ot_udp.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_udp.c
cc -c -o ot_iovec.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_iovec.c
cc -c -o ot_fullscrape.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_fullscrape.c
cc -c -o ot_accesslist.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_accesslist.c
cc -c -o ot_http.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_http.c
ot_http.c: In function ‘http_handle_scrape’:
ot_http.c:371:3: warning: passing argument 1 of ‘return_tcp_scrape_for_torrent’ from incompatible pointer type [enabled by default]
   ws->reply_size = return_tcp_scrape_for_torrent( multiscrape_buf, numwant, ws->reply );
   ^
In file included from ot_http.c:24:0:
trackerlogic.h:190:9: note: expected ‘const uint8_t (*)[20]’ but argument is of type ‘uint8_t (*)[20]’
 size_t  return_tcp_scrape_for_torrent( ot_hash const *hash_list, int amount, char *reply );
         ^
cc -c -o ot_livesync.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_livesync.c
cc -c -o ot_rijndael.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_rijndael.c
cc -o opentracker opentracker.o trackerlogic.o scan_urlencoded_query.o ot_mutex.o ot_stats.o ot_vector.o ot_clean.o ot_udp.o ot_iovec.o ot_fullscrape.o ot_accesslist.o ot_http.o ot_livesync.o ot_rijndael.o -L../libowfat -lowfat -pthread -lz
strip opentracker
cc -c -o opentracker.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY opentracker.c
cc -c -o trackerlogic.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY trackerlogic.c
cc -c -o scan_urlencoded_query.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY scan_urlencoded_query.c
cc -c -o ot_mutex.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_mutex.c
cc -c -o ot_stats.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_stats.c
cc -c -o ot_vector.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_vector.c
cc -c -o ot_clean.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_clean.c
cc -c -o ot_udp.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_udp.c
cc -c -o ot_iovec.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_iovec.c
cc -c -o ot_fullscrape.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_fullscrape.c
cc -c -o ot_accesslist.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_accesslist.c
cc -c -o ot_http.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_http.c
ot_http.c: In function ‘http_handle_scrape’:
ot_http.c:371:3: warning: passing argument 1 of ‘return_tcp_scrape_for_torrent’ from incompatible pointer type [enabled by default]
   ws->reply_size = return_tcp_scrape_for_torrent( multiscrape_buf, numwant, ws->reply );
   ^
In file included from ot_http.c:24:0:
trackerlogic.h:190:9: note: expected ‘const uint8_t (*)[20]’ but argument is of type ‘uint8_t (*)[20]’
 size_t  return_tcp_scrape_for_torrent( ot_hash const *hash_list, int amount, char *reply );
         ^
cc -c -o ot_livesync.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_livesync.c
cc -c -o ot_rijndael.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_rijndael.c
cc -o opentracker.debug opentracker.debug.o trackerlogic.debug.o scan_urlencoded_query.debug.o ot_mutex.debug.o ot_stats.debug.o ot_vector.debug.o ot_clean.debug.o ot_udp.debug.o ot_iovec.debug.o ot_fullscrape.debug.o ot_accesslist.debug.o ot_http.debug.o ot_livesync.debug.o ot_rijndael.debug.o -L../libowfat -lowfat -pthread -lz
[root@tracker opentracker]#

Can you try to catch it in debugger with opentracker.debug?

之前的崩溃报告没有用吗? https://github.com/1265578519/OpenTracker/issues/4#issuecomment-2041116411 我尝试重新捕获一次崩溃,等待崩溃后我发上来

Meanwhile I added code that will return both ipv4 and ipv6 addresses for peers on tcp announces:

https://erdgeist.org/gitweb/opentracker/commit/?id=d9a5f046754581f0edaa0e385f865bcc5ee842e3

很好,http现在可以正常工作,正确同时传输ipv4+ipv6 image

但是http对于上传任务,现在错误 Failed to decode tracker response. image

现在还需要修复的问题有

  1. 进程崩溃
  2. http上传任务,发生错误,无法和tracker服务器连接
  3. udp上传任务,显示的种子数量不正确
  4. 编译过程出现的两个警告
erdgeist commented 7 months ago

很好,http现在可以正常工作,正确同时传输ipv4+ipv6 image

但是http对于上传任务,现在错误 Failed to decode tracker response.

Oh no! I am sorry I broke your tracker. Please roll back to 880d5145a0644e348e06f5660de5c2256fdebd25 and I will try to figure out what I broke.

erdgeist commented 7 months ago

之前的崩溃报告没有用吗? #4 (comment) 我尝试重新捕获一次崩溃,等待崩溃后我发上来

No, it's not useless, I just need the backtraces of all threads to know where exactly it crashed. I can only see that the free() libc function did crash, but I do not know what of my functions called it.

1265578519 commented 7 months ago
  • udp上传任务,显示的种子数量不正确

udp上传任务,不只是显示问题,同时获得的ip地址也不正确 image

image

下载任务是正常的没有错误,错误只发生在上传任务

erdgeist commented 7 months ago

I found and fixed the bug that made the tracker response incorrect for seeders:

https://erdgeist.org/gitweb/opentracker/commit/?id=db28465e0c8b30cb7d5e4e9636d4b7a10793656c

1265578519 commented 7 months ago

http上传任务,发生错误,无法和tracker服务器连接 udp上传任务,显示的种子数量不正确 udp上传任务,不只是显示问题,同时获得的ip地址也不正确

db28465e0c8b30cb7d5e4e9636d4b7a10793656c 测试,成功修复了上面的几个问题

erdgeist commented 7 months ago

I managed to catch the crash. It has to do with clean-up code of expired torrents. Will try to fix it.

erdgeist commented 7 months ago

Caught the crash and fixed the code

https://erdgeist.org/gitweb/opentracker/commit/?id=b7b84bdec4c94c459ea67b44b829c495d6144312

erdgeist commented 7 months ago

gcc version 4.8.5

This is a really, really old compiler, introduced in 2015 and exploitable.

Since gcc 5.0 the warning you found about

ot_http.c:371:3: warning: passing argument 1 of ‘return_tcp_scrape_for_torrent’ from incompatible pointer type [enabled by default]

is not enabled anymore, because it doesn't really make sense in daily operations. You might consider upgrading to a newer compiler and since CentOS 7 is also EOL soon

https://cloud.google.com/compute/docs/eol/centos-eol-guidance

you might want to upgrade your operating system, too.

Anyway, to silence the warning for you, I committed:

https://erdgeist.org/gitweb/opentracker/commit/?id=aedd7e30cbadaed7f44af90174094ff868930cf3

1265578519 commented 7 months ago
[root@tracker opentracker]# gdb --args ./opentracker.debug -f opentracker.conf.sample -p 8080 -P 8080 -p 6961 -P 6961 -p 2710 -P 2710
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/OpenTracker-master/opentracker/opentracker.debug...done.
(gdb) run
Starting program: /home/OpenTracker-master/opentracker/./opentracker.debug -f opentracker.conf.sample -p 8080 -P 8080 -p 6961 -P 6961 -p 2710 -P 2710
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Blessing ip net 127.0.0.1 may_proxy.
Blessing ip net 173.245.48.0/20 may_proxy.
Blessing ip net 103.21.244.0/22 may_proxy.
Blessing ip net 103.22.200.0/22 may_proxy.
Blessing ip net 103.31.4.0/22 may_proxy.
Blessing ip net 141.101.64.0/18 may_proxy.
Blessing ip net 108.162.192.0/18 may_proxy.
Blessing ip net 190.93.240.0/20 may_proxy.
Blessing ip net 188.114.96.0/20 may_proxy.
Blessing ip net 197.234.240.0/22 may_proxy.
Blessing ip net 198.41.128.0/17 may_proxy.
Blessing ip net 162.158.0.0/15 may_proxy.
Blessing ip net 104.16.0.0/13 may_proxy.
Blessing ip net 104.24.0.0/14 may_proxy.
Blessing ip net 172.64.0.0/13 may_proxy.
Blessing ip net 131.0.72.0/22 may_proxy.
Blessing ip net 2400:cb00::/32 may_proxy.
Blessing ip net 2606:4700::/32 may_proxy.
Blessing ip net 2803:f800::/32 may_proxy.
Blessing ip net 2405:b500::/32 may_proxy.
Blessing ip net 2405:8100::/32 may_proxy.
Blessing ip net 2a06:98c0::/29 may_proxy.
Blessing ip net 2c0f:f248::/32 may_proxy.
Binding socket type TCP to address [::]:8080... success.
Binding socket type UDP to address [::]:8080... success.
Binding socket type TCP to address [::]:6961... success.
Binding socket type UDP to address [::]:6961... success.
Binding socket type TCP to address [::]:2710... success.
Binding socket type UDP to address [::]:2710... success.
Dropping to user nobody.
[New Thread 0x7ffff73c7700 (LWP 13413)]
[New Thread 0x7ffff6bc6700 (LWP 13414)]
 installing 0 workers on udp socket -1

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff73c7700 (LWP 13413)]
0x00007ffff7660b7c in free () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-326.el7_9.x86_64 zlib-1.2.7-21.el7_9.x86_64
(gdb) bt
#0  0x00007ffff7660b7c in free () from /lib64/libc.so.6
#1  0x0000000000408b11 in vector_clean_list (vector=0x644350, num_buckets=-7) at ot_vector.c:172
#2  0x0000000000408f93 in vector_redistribute_buckets (peer_list=0x644310, peer_size=8) at ot_vector.c:249
#3  0x00000000004093e8 in clean_single_peer_list (peer_list=0x644310, peer_size=8) at ot_clean.c:91
#4  0x00000000004094a7 in clean_single_torrent (torrent=0x7fffe9f1cc58) at ot_clean.c:108
#5  0x0000000000409514 in clean_worker (args=0x0) at ot_clean.c:124
#6  0x00007ffff79b0ea5 in start_thread () from /lib64/libpthread.so.0
#7  0x00007ffff76d9b0d in clone () from /lib64/libc.so.6
(gdb) t 2
[Switching to thread 2 (Thread 0x7ffff73c7700 (LWP 13413))]
#0  0x00007ffff7660b7c in free () from /lib64/libc.so.6
(gdb) bt
#0  0x00007ffff7660b7c in free () from /lib64/libc.so.6
#1  0x0000000000408b11 in vector_clean_list (vector=0x644350, num_buckets=-7) at ot_vector.c:172
#2  0x0000000000408f93 in vector_redistribute_buckets (peer_list=0x644310, peer_size=8) at ot_vector.c:249
#3  0x00000000004093e8 in clean_single_peer_list (peer_list=0x644310, peer_size=8) at ot_clean.c:91
#4  0x00000000004094a7 in clean_single_torrent (torrent=0x7fffe9f1cc58) at ot_clean.c:108
#5  0x0000000000409514 in clean_worker (args=0x0) at ot_clean.c:124
#6  0x00007ffff79b0ea5 in start_thread () from /lib64/libpthread.so.0
#7  0x00007ffff76d9b0d in clone () from /lib64/libc.so.6
(gdb) t 3
[Switching to thread 3 (Thread 0x7ffff6bc6700 (LWP 13414))]
#0  0x00007ffff79b4a35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
(gdb) bt
#0  0x00007ffff79b4a35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000000000405e15 in mutex_workqueue_poptask (tasktype=0x7ffff6bc5ef4) at ot_mutex.c:146
#2  0x00000000004082ca in stats_worker (args=0x0) at ot_stats.c:760
#3  0x00007ffff79b0ea5 in start_thread () from /lib64/libpthread.so.0
#4  0x00007ffff76d9b0d in clone () from /lib64/libc.so.6
(gdb)

我现在去更新代码 b7b84bdec4c94c459ea67b44b829c495d6144312 测试后续还是否还会发生崩溃

1265578519 commented 7 months ago

is not enabled anymore, because it doesn't really make sense in daily operations. You might consider upgrading to a newer compiler and since CentOS 7 is also EOL soon https://cloud.google.com/compute/docs/eol/centos-eol-guidance you might want to upgrade your operating system, too.

对于低版本2.6内核拥有更高的系统性能,但是由于服务器服务商不在提供EOL镜像,只提供iso安装让用户自己手动安装centos6,我又觉得自己安装iso麻烦,所以我才升级到了centos7...如果未来没有内核的安全隐患漏洞公开,那我应该会继续使用centos6和7,在这两系统中,orphaned,nf_conntrack等会提供最可靠的高性能,centos6 能在单核心cpu实现26W tcp并发

Anyway, to silence the warning for you, I committed:

很棒,现在编译安装过程没有警告提示了 2du1j7zm19up3ctlnbfvf5gd73yhz6c

[root@tracker opentracker]# make
cc -c -o opentracker.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY opentracker.c
cc -c -o trackerlogic.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY trackerlogic.c
cc -c -o scan_urlencoded_query.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY scan_urlencoded_query.c
cc -c -o ot_mutex.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_mutex.c
cc -c -o ot_stats.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_stats.c
cc -c -o ot_vector.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_vector.c
cc -c -o ot_clean.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_clean.c
cc -c -o ot_udp.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_udp.c
cc -c -o ot_iovec.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_iovec.c
cc -c -o ot_fullscrape.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_fullscrape.c
cc -c -o ot_accesslist.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_accesslist.c
cc -c -o ot_http.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_http.c
cc -c -o ot_livesync.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_livesync.c
cc -c -o ot_rijndael.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_rijndael.c
cc -o opentracker opentracker.o trackerlogic.o scan_urlencoded_query.o ot_mutex.o ot_stats.o ot_vector.o ot_clean.o ot_udp.o ot_iovec.o ot_fullscrape.o ot_accesslist.o ot_http.o ot_livesync.o ot_rijndael.o -L../libowfat -lowfat -pthread -lz
strip opentracker
cc -c -o opentracker.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY opentracker.c
cc -c -o trackerlogic.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY trackerlogic.c
cc -c -o scan_urlencoded_query.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY scan_urlencoded_query.c
cc -c -o ot_mutex.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_mutex.c
cc -c -o ot_stats.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_stats.c
cc -c -o ot_vector.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_vector.c
cc -c -o ot_clean.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_clean.c
cc -c -o ot_udp.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_udp.c
cc -c -o ot_iovec.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_iovec.c
cc -c -o ot_fullscrape.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_fullscrape.c
cc -c -o ot_accesslist.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_accesslist.c
cc -c -o ot_http.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_http.c
cc -c -o ot_livesync.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_livesync.c
cc -c -o ot_rijndael.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_rijndael.c
cc -o opentracker.debug opentracker.debug.o trackerlogic.debug.o scan_urlencoded_query.debug.o ot_mutex.debug.o ot_stats.debug.o ot_vector.debug.o ot_clean.debug.o ot_udp.debug.o ot_iovec.debug.o ot_fullscrape.debug.o ot_accesslist.debug.o ot_http.debug.o ot_livesync.debug.o ot_rijndael.debug.o -L../libowfat -lowfat -pthread -lz
[root@tracker opentracker]#
1265578519 commented 7 months ago

Caught the crash and fixed the code

运行了10个小时,应该没有崩溃现象了 现在http udp都按照预期工作,没有其它问题了,属于一个完美版

我觉得上游仓库的Makefile文件,应该启用DWANT_IP_FROM_PROXY,这样可以通过-f传递配置文件 同时禁用DWANT_FULLSCRAPE,避免多倍的内存消耗,让需要FULLSCRAPE的人自己在编辑文件打开 比如有人在openwrt路由器中以ipk方式运行软件包,打包ipk的人可能不了解功能作用,FULLSCRAPE会给路由器带来过多的内存消耗,我觉得默认禁用是有必要的 {F561GQ@C5T(786X%6TDKOS

~}LFL5 E52_CC @WO $({Q8

1265578519 commented 7 months ago

哪个参数控制删除torrents列表?一个种子所有用户都停止,已经不存在了,torrents还一直存储为1 image

难道是这个,没有peer后,种子还存储24小时?

define OT_TORRENT_TIMEOUT_HOURS 24

erdgeist commented 7 months ago

哪个参数控制删除torrents列表?一个种子所有用户都停止,已经不存在了,torrents还一直存储为1 image

难道是这个,没有peer后,种子还存储24小时? #define OT_TORRENT_TIMEOUT_HOURS 24

Yes. In order to keep track of the downloaded count in torrents that may have fewer peers, I do not immediately delete the records for the torrent. That helps other sites using the scrape data from your tracker to indicate that it might be worth announcing even though there's no current seeders, but there have been successful completions within the last 24 hours.

1265578519 commented 7 months ago

Yes. In order to keep track of the downloaded count in torrents that may have fewer peers, I do not immediately delete the records for the torrent.

原来是为了统计下载完成数,我明白了!

1265578519 commented 7 months ago

我更新上游最新代码 18a746b89dadf4c5f8ed8b4feec71bcc4d4f3980,一运行立刻发生崩溃

我觉得都完美版了,,不知道这个更新是什么作用,又偷偷写了个bug

Apr  9 04:19:14 tracker kernel: opentracker[15865]: segfault at 18 ip 0000000000404740 sp 00007ffcf3458460 error 4 in opentracker[400000+16000]
Apr  9 04:19:50 tracker kernel: opentracker[15873]: segfault at 18 ip 0000000000404740 sp 00007fffd2d32b40 error 4 in opentracker[400000+16000]

[root@tracker opentracker]#  gdb --args ./opentracker.debug -f opentracker.conf.sample -p 8080 -P 8080 -p 6961 -P 6961 -p 2710 -P 2710
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/OpenTracker-master/opentracker/opentracker.debug...done.
(gdb) run
Starting program: /home/OpenTracker-master/opentracker/./opentracker.debug -f opentracker.conf.sample -p 8080 -P 8080 -p 6961 -P 6961 -p 2710 -P 2710
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Blessing ip net 127.0.0.1 may_proxy.
Blessing ip net 173.245.48.0/20 may_proxy.
Blessing ip net 103.21.244.0/22 may_proxy.
Blessing ip net 103.22.200.0/22 may_proxy.
Blessing ip net 103.31.4.0/22 may_proxy.
Blessing ip net 141.101.64.0/18 may_proxy.
Blessing ip net 108.162.192.0/18 may_proxy.
Blessing ip net 190.93.240.0/20 may_proxy.
Blessing ip net 188.114.96.0/20 may_proxy.
Blessing ip net 197.234.240.0/22 may_proxy.
Blessing ip net 198.41.128.0/17 may_proxy.
Blessing ip net 162.158.0.0/15 may_proxy.
Blessing ip net 104.16.0.0/13 may_proxy.
Blessing ip net 104.24.0.0/14 may_proxy.
Blessing ip net 172.64.0.0/13 may_proxy.
Blessing ip net 131.0.72.0/22 may_proxy.
Blessing ip net 2400:cb00::/32 may_proxy.
Blessing ip net 2606:4700::/32 may_proxy.
Blessing ip net 2803:f800::/32 may_proxy.
Blessing ip net 2405:b500::/32 may_proxy.
Blessing ip net 2405:8100::/32 may_proxy.
Blessing ip net 2a06:98c0::/29 may_proxy.
Blessing ip net 2c0f:f248::/32 may_proxy.
Binding socket type TCP to address [::]:8080... success.
Binding socket type UDP to address [::]:8080... success.
Binding socket type TCP to address [::]:6961... success.
Binding socket type UDP to address [::]:6961... success.
Binding socket type TCP to address [::]:2710... success.
Binding socket type UDP to address [::]:2710... success.
Dropping to user nobody.
[New Thread 0x7ffff73c7700 (LWP 15894)]
[New Thread 0x7ffff6bc6700 (LWP 15895)]
 installing 0 workers on udp socket -1

Program received signal SIGSEGV, Segmentation fault.
0x0000000000405345 in remove_peer_from_torrent (proto=FLAG_TCP, ws=0x7fffffffc2c0) at trackerlogic.c:465
465   peer_count = torrent->peer_list6->peer_count + torrent->peer_list4->peer_count;
Missing separate debuginfos, use: debuginfo-install glibc-2.17-326.el7_9.x86_64 zlib-1.2.7-21.el7_9.x86_64
(gdb) 
1265578519 commented 7 months ago

Caught the crash and fixed the code

https://erdgeist.org/gitweb/opentracker/commit/?id=b7b84bdec4c94c459ea67b44b829c495d6144312

访问stats?mode=everything的时候出现崩溃

[root@tracker opentracker]# gdb --args ./opentracker.debug -f opentracker.conf.sample -p 8080 -P 8080 -p 6961 -P 6961 -p 2710 -P 2710
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/OpenTracker-master/opentracker/opentracker.debug...done.
(gdb) run
Starting program: /home/OpenTracker-master/opentracker/./opentracker.debug -f opentracker.conf.sample -p 8080 -P 8080 -p 6961 -P 6961 -p 2710 -P 2710
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Blessing ip net 127.0.0.1 may_proxy.
Blessing ip net 173.245.48.0/20 may_proxy.
Blessing ip net 103.21.244.0/22 may_proxy.
Blessing ip net 103.22.200.0/22 may_proxy.
Blessing ip net 103.31.4.0/22 may_proxy.
Blessing ip net 141.101.64.0/18 may_proxy.
Blessing ip net 108.162.192.0/18 may_proxy.
Blessing ip net 190.93.240.0/20 may_proxy.
Blessing ip net 188.114.96.0/20 may_proxy.
Blessing ip net 197.234.240.0/22 may_proxy.
Blessing ip net 198.41.128.0/17 may_proxy.
Blessing ip net 162.158.0.0/15 may_proxy.
Blessing ip net 104.16.0.0/13 may_proxy.
Blessing ip net 104.24.0.0/14 may_proxy.
Blessing ip net 172.64.0.0/13 may_proxy.
Blessing ip net 131.0.72.0/22 may_proxy.
Blessing ip net 2400:cb00::/32 may_proxy.
Blessing ip net 2606:4700::/32 may_proxy.
Blessing ip net 2803:f800::/32 may_proxy.
Blessing ip net 2405:b500::/32 may_proxy.
Blessing ip net 2405:8100::/32 may_proxy.
Blessing ip net 2a06:98c0::/29 may_proxy.
Blessing ip net 2c0f:f248::/32 may_proxy.
Binding socket type TCP to address [::]:8080... success.
Binding socket type UDP to address [::]:8080... success.
Binding socket type TCP to address [::]:6961... success.
Binding socket type UDP to address [::]:6961... success.
Binding socket type TCP to address [::]:2710... success.
Binding socket type UDP to address [::]:2710... success.
Dropping to user nobody.
[New Thread 0x7ffff73c7700 (LWP 18848)]
[New Thread 0x7ffff6bc6700 (LWP 18849)]
 installing 0 workers on udp socket -1
*** Error in `/home/OpenTracker-master/opentracker/./opentracker.debug': realloc(): invalid next size: 0x00007ffff00008e0 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7f474)[0x7ffff765a474]
/lib64/libc.so.6(+0x84861)[0x7ffff765f861]
/lib64/libc.so.6(realloc+0x1d2)[0x7ffff7660e12]
/home/OpenTracker-master/opentracker/./opentracker.debug[0x40a027]
/home/OpenTracker-master/opentracker/./opentracker.debug[0x407ee2]
/home/OpenTracker-master/opentracker/./opentracker.debug[0x4082c4]
/lib64/libpthread.so.0(+0x7ea5)[0x7ffff79b0ea5]
/lib64/libc.so.6(clone+0x6d)[0x7ffff76d9b0d]
======= Memory map: ========
00400000-00417000 r-xp 00000000 08:01 390326                             /home/OpenTracker-master/opentracker/opentracker.debug
00616000-00617000 r--p 00016000 08:01 390326                             /home/OpenTracker-master/opentracker/opentracker.debug
00617000-00618000 rw-p 00017000 08:01 390326                             /home/OpenTracker-master/opentracker/opentracker.debug
00618000-01fd8000 rw-p 00000000 00:00 0                                  [heap]
7fffe8000000-7fffe8021000 rw-p 00000000 00:00 0 
7fffe8021000-7fffec000000 ---p 00000000 00:00 0 
7ffff0000000-7ffff0021000 rw-p 00000000 00:00 0 
7ffff0021000-7ffff4000000 ---p 00000000 00:00 0 
7ffff61b0000-7ffff61c5000 r-xp 00000000 08:01 400                        /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7ffff61c5000-7ffff63c4000 ---p 00015000 08:01 400                        /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7ffff63c4000-7ffff63c5000 r--p 00014000 08:01 400                        /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7ffff63c5000-7ffff63c6000 rw-p 00015000 08:01 400                        /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7ffff63c6000-7ffff63c7000 ---p 00000000 00:00 0 
7ffff63c7000-7ffff6bc7000 rw-p 00000000 00:00 0 
7ffff6bc7000-7ffff6bc8000 ---p 00000000 00:00 0 
7ffff6bc8000-7ffff73c8000 rw-p 00000000 00:00 0 
7ffff73c8000-7ffff73d4000 r-xp 00000000 08:01 4387                       /usr/lib64/libnss_files-2.17.so
7ffff73d4000-7ffff75d3000 ---p 0000c000 08:01 4387                       /usr/lib64/libnss_files-2.17.so
7ffff75d3000-7ffff75d4000 r--p 0000b000 08:01 4387                       /usr/lib64/libnss_files-2.17.so
7ffff75d4000-7ffff75d5000 rw-p 0000c000 08:01 4387                       /usr/lib64/libnss_files-2.17.so
7ffff75d5000-7ffff75db000 rw-p 00000000 00:00 0 
7ffff75db000-7ffff779f000 r-xp 00000000 08:01 4369                       /usr/lib64/libc-2.17.so
7ffff779f000-7ffff799e000 ---p 001c4000 08:01 4369                       /usr/lib64/libc-2.17.so
7ffff799e000-7ffff79a2000 r--p 001c3000 08:01 4369                       /usr/lib64/libc-2.17.so
7ffff79a2000-7ffff79a4000 rw-p 001c7000 08:01 4369                       /usr/lib64/libc-2.17.so
7ffff79a4000-7ffff79a9000 rw-p 00000000 00:00 0 
7ffff79a9000-7ffff79c0000 r-xp 00000000 08:01 4395                       /usr/lib64/libpthread-2.17.so
7ffff79c0000-7ffff7bbf000 ---p 00017000 08:01 4395                       /usr/lib64/libpthread-2.17.so
7ffff7bbf000-7ffff7bc0000 r--p 00016000 08:01 4395                       /usr/lib64/libpthread-2.17.so
7ffff7bc0000-7ffff7bc1000 rw-p 00017000 08:01 4395                       /usr/lib64/libpthread-2.17.so
7ffff7bc1000-7ffff7bc5000 rw-p 00000000 00:00 0 
7ffff7bc5000-7ffff7bda000 r-xp 00000000 08:01 4870                       /usr/lib64/libz.so.1.2.7
7ffff7bda000-7ffff7dd9000 ---p 00015000 08:01 4870                       /usr/lib64/libz.so.1.2.7
7ffff7dd9000-7ffff7dda000 r--p 00014000 08:01 4870                       /usr/lib64/libz.so.1.2.7
7ffff7dda000-7ffff7ddb000 rw-p 00015000 08:01 4870                       /usr/lib64/libz.so.1.2.7
7ffff7ddb000-7ffff7dfd000 r-xp 00000000 08:01 4362                       /usr/lib64/ld-2.17.so
7ffff7fc1000-7ffff7ff2000 rw-p 00000000 00:00 0 
7ffff7ff2000-7ffff7ff7000 rw-p 00000000 00:00 0 
7ffff7ff7000-7ffff7ffa000 r--p 00000000 00:00 0                          [vvar]
7ffff7ffa000-7ffff7ffc000 r-xp 00000000 00:00 0                          [vdso]
7ffff7ffc000-7ffff7ffd000 r--p 00021000 08:01 4362                       /usr/lib64/ld-2.17.so
7ffff7ffd000-7ffff7ffe000 rw-p 00022000 08:01 4362                       /usr/lib64/ld-2.17.so
7ffff7ffe000-7ffff7fff000 rw-p 00000000 00:00 0 
7ffffffde000-7ffffffff000 rw-p 00000000 00:00 0                          [stack]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffff6bc6700 (LWP 18849)]
0x00007ffff7611387 in raise () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-326.el7_9.x86_64 libgcc-4.8.5-44.el7.x86_64 zlib-1.2.7-21.el7_9.x86_64
(gdb) bt
#0  0x00007ffff7611387 in raise () from /lib64/libc.so.6
#1  0x00007ffff7612a78 in abort () from /lib64/libc.so.6
#2  0x00007ffff7653f67 in __libc_message () from /lib64/libc.so.6
#3  0x00007ffff765a474 in malloc_printerr () from /lib64/libc.so.6
#4  0x00007ffff765f861 in _int_realloc () from /lib64/libc.so.6
#5  0x00007ffff7660e12 in realloc () from /lib64/libc.so.6
#6  0x000000000040a027 in iovec_fixlast (iovec_entries=0x7ffff6bc5f04, iovector=0x7ffff6bc5ef8, last_ptr=0x7ffff00029bb) at ot_iovec.c:51
#7  0x0000000000407ee2 in stats_make (iovec_entries=0x7ffff6bc5f04, iovector=0x7ffff6bc5ef8, mode=TASK_STATS_EVERYTHING) at ot_stats.c:642
#8  0x00000000004082c4 in stats_worker (args=0x0) at ot_stats.c:761
#9  0x00007ffff79b0ea5 in start_thread () from /lib64/libpthread.so.0
#10 0x00007ffff76d9b0d in clone () from /lib64/libc.so.6
(gdb) t 2
[Switching to thread 2 (Thread 0x7ffff73c7700 (LWP 18848))]
#0  0x00007ffff76a09fd in nanosleep () from /lib64/libc.so.6
(gdb) bt
#0  0x00007ffff76a09fd in nanosleep () from /lib64/libc.so.6
#1  0x00007ffff76d12d4 in usleep () from /lib64/libc.so.6
#2  0x0000000000409540 in clean_worker (args=0x0) at ot_clean.c:133
#3  0x00007ffff79b0ea5 in start_thread () from /lib64/libpthread.so.0
#4  0x00007ffff76d9b0d in clone () from /lib64/libc.so.6
(gdb) t 3
[Switching to thread 3 (Thread 0x7ffff6bc6700 (LWP 18849))]
#0  0x00007ffff7611387 in raise () from /lib64/libc.so.6
(gdb) bt
#0  0x00007ffff7611387 in raise () from /lib64/libc.so.6
#1  0x00007ffff7612a78 in abort () from /lib64/libc.so.6
#2  0x00007ffff7653f67 in __libc_message () from /lib64/libc.so.6
#3  0x00007ffff765a474 in malloc_printerr () from /lib64/libc.so.6
#4  0x00007ffff765f861 in _int_realloc () from /lib64/libc.so.6
#5  0x00007ffff7660e12 in realloc () from /lib64/libc.so.6
#6  0x000000000040a027 in iovec_fixlast (iovec_entries=0x7ffff6bc5f04, iovector=0x7ffff6bc5ef8, last_ptr=0x7ffff00029bb) at ot_iovec.c:51
#7  0x0000000000407ee2 in stats_make (iovec_entries=0x7ffff6bc5f04, iovector=0x7ffff6bc5ef8, mode=TASK_STATS_EVERYTHING) at ot_stats.c:642
#8  0x00000000004082c4 in stats_worker (args=0x0) at ot_stats.c:761
#9  0x00007ffff79b0ea5 in start_thread () from /lib64/libpthread.so.0
#10 0x00007ffff76d9b0d in clone () from /lib64/libc.so.6
(gdb) 
erdgeist commented 7 months ago

Program received signal SIGSEGV, Segmentation fault. 0x0000000000405345 in remove_peer_from_torrent (proto=FLAG_TCP, ws=0x7fffffffc2c0) at trackerlogic.c:465 465 peer_count = torrent->peer_list6->peer_count + torrent->peer_list4->peer_count;

I think this one is due to the problem I just now fixed in

https://erdgeist.org/gitweb/opentracker/commit/?id=ffa7b816905cb99e0395b6b02412ea09946f9105

Thanks for providing the stack trace

1265578519 commented 7 months ago

访问stats?mode=everything的时候出现崩溃

还有这个everything崩溃

[root@tracker opentracker]# gdb --args ./opentracker.debug -f opentracker.conf.sample -p 8080 -P 8080 -p 6961 -P 6961 -p 2710 -P 2710
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/OpenTracker-master/opentracker/opentracker.debug...done.
(gdb) run
Starting program: /home/OpenTracker-master/opentracker/./opentracker.debug -f opentracker.conf.sample -p 8080 -P 8080 -p 6961 -P 6961 -p 2710 -P 2710
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Blessing ip net 127.0.0.1 may_proxy.
Blessing ip net 173.245.48.0/20 may_proxy.
Blessing ip net 103.21.244.0/22 may_proxy.
Blessing ip net 103.22.200.0/22 may_proxy.
Blessing ip net 103.31.4.0/22 may_proxy.
Blessing ip net 141.101.64.0/18 may_proxy.
Blessing ip net 108.162.192.0/18 may_proxy.
Blessing ip net 190.93.240.0/20 may_proxy.
Blessing ip net 188.114.96.0/20 may_proxy.
Blessing ip net 197.234.240.0/22 may_proxy.
Blessing ip net 198.41.128.0/17 may_proxy.
Blessing ip net 162.158.0.0/15 may_proxy.
Blessing ip net 104.16.0.0/13 may_proxy.
Blessing ip net 104.24.0.0/14 may_proxy.
Blessing ip net 172.64.0.0/13 may_proxy.
Blessing ip net 131.0.72.0/22 may_proxy.
Blessing ip net 2400:cb00::/32 may_proxy.
Blessing ip net 2606:4700::/32 may_proxy.
Blessing ip net 2803:f800::/32 may_proxy.
Blessing ip net 2405:b500::/32 may_proxy.
Blessing ip net 2405:8100::/32 may_proxy.
Blessing ip net 2a06:98c0::/29 may_proxy.
Blessing ip net 2c0f:f248::/32 may_proxy.
Binding socket type TCP to address [::]:8080... success.
Binding socket type UDP to address [::]:8080... success.
Binding socket type TCP to address [::]:6961... success.
Binding socket type UDP to address [::]:6961... success.
Binding socket type TCP to address [::]:2710... success.
Binding socket type UDP to address [::]:2710... success.
Dropping to user nobody.
[New Thread 0x7ffff73c7700 (LWP 19023)]
[New Thread 0x7ffff6bc6700 (LWP 19024)]
 installing 0 workers on udp socket -1
*** Error in `/home/OpenTracker-master/opentracker/./opentracker.debug': realloc(): invalid next size: 0x00007ffff0000910 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7f474)[0x7ffff765a474]
/lib64/libc.so.6(+0x84861)[0x7ffff765f861]
/lib64/libc.so.6(realloc+0x1d2)[0x7ffff7660e12]
/home/OpenTracker-master/opentracker/./opentracker.debug[0x40a027]
/home/OpenTracker-master/opentracker/./opentracker.debug[0x407ee2]
/home/OpenTracker-master/opentracker/./opentracker.debug[0x4082c4]
/lib64/libpthread.so.0(+0x7ea5)[0x7ffff79b0ea5]
/lib64/libc.so.6(clone+0x6d)[0x7ffff76d9b0d]
======= Memory map: ========
00400000-00417000 r-xp 00000000 08:01 390326                             /home/OpenTracker-master/opentracker/opentracker.debug
00616000-00617000 r--p 00016000 08:01 390326                             /home/OpenTracker-master/opentracker/opentracker.debug
00617000-00618000 rw-p 00017000 08:01 390326                             /home/OpenTracker-master/opentracker/opentracker.debug
00618000-2c137000 rw-p 00000000 00:00 0                                  [heap]
7fffdc000000-7fffdc021000 rw-p 00000000 00:00 0 
7fffdc021000-7fffe0000000 ---p 00000000 00:00 0 
7fffe19d1000-7fffe19e6000 r-xp 00000000 08:01 400                        /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7fffe19e6000-7fffe1be5000 ---p 00015000 08:01 400                        /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7fffe1be5000-7fffe1be6000 r--p 00014000 08:01 400                        /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7fffe1be6000-7fffe1be7000 rw-p 00015000 08:01 400                        /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7fffe1be7000-7fffe1c38000 rw-p 00000000 00:00 0 
7fffe1c38000-7fffe1c89000 rw-p 00000000 00:00 0 
7fffe1c89000-7fffe1cda000 rw-p 00000000 00:00 0 
7fffe1cda000-7fffe1d2b000 rw-p 00000000 00:00 0 
7fffe1d2b000-7fffe1d7c000 rw-p 00000000 00:00 0 
7fffe1d7c000-7fffe1dcd000 rw-p 00000000 00:00 0 
7fffe1dcd000-7fffe1e1e000 rw-p 00000000 00:00 0 
7fffe1e1e000-7fffe1e6f000 rw-p 00000000 00:00 0 
7fffe1e6f000-7fffe1ec0000 rw-p 00000000 00:00 0 
7fffe1ec0000-7fffe1f11000 rw-p 00000000 00:00 0 
7fffe1f11000-7fffe1f62000 rw-p 00000000 00:00 0 
7fffe1f62000-7fffe1fb3000 rw-p 00000000 00:00 0 
7fffe1fb3000-7fffe2004000 rw-p 00000000 00:00 0 
7fffe2004000-7fffe2055000 rw-p 00000000 00:00 0 
7fffe2055000-7fffe20a6000 rw-p 00000000 00:00 0 
7fffe20a6000-7fffe20f7000 rw-p 00000000 00:00 0 
7fffe20f7000-7fffe2148000 rw-p 00000000 00:00 0 
7fffe2148000-7fffe2199000 rw-p 00000000 00:00 0 
7fffe2199000-7fffe21ea000 rw-p 00000000 00:00 0 
7fffe21ea000-7fffe223b000 rw-p 00000000 00:00 0 
7fffe223b000-7fffe228c000 rw-p 00000000 00:00 0 
7fffe228c000-7fffe22dd000 rw-p 00000000 00:00 0 
7fffe22dd000-7fffe232e000 rw-p 00000000 00:00 0 
7fffe232e000-7fffe237f000 rw-p 00000000 00:00 0 
7fffe237f000-7fffe23d0000 rw-p 00000000 00:00 0 
7fffe23d0000-7fffe2421000 rw-p 00000000 00:00 0 
7fffe2421000-7fffe2472000 rw-p 00000000 00:00 0 
7fffe2472000-7fffe24c3000 rw-p 00000000 00:00 0 
7fffe24c3000-7fffe2514000 rw-p 00000000 00:00 0 
7fffe2514000-7fffe2565000 rw-p 00000000 00:00 0 
7fffe2565000-7fffe25b6000 rw-p 00000000 00:00 0 
7fffe25b6000-7fffe2607000 rw-p 00000000 00:00 0 
7fffe2607000-7fffe2658000 rw-p 00000000 00:00 0 
7fffe2658000-7fffe26a9000 rw-p 00000000 00:00 0 
7fffe26a9000-7fffe26fa000 rw-p 00000000 00:00 0 
7fffe26fa000-7fffe274b000 rw-p 00000000 00:00 0 
7fffe274b000-7fffe279c000 rw-p 00000000 00:00 0 
7fffe279c000-7fffe27ed000 rw-p 00000000 00:00 0 
7fffe27ed000-7fffe283e000 rw-p 00000000 00:00 0 
7fffe283e000-7fffe288f000 rw-p 00000000 00:00 0 
7fffe288f000-7fffe28e0000 rw-p 00000000 00:00 0 
7fffe28e0000-7fffe2931000 rw-p 00000000 00:00 0 
7fffe2931000-7fffe2982000 rw-p 00000000 00:00 0 
7fffe2982000-7fffe29d3000 rw-p 00000000 00:00 0 
7fffe29d3000-7fffe2a24000 rw-p 00000000 00:00 0 
7fffe2a24000-7fffe2a75000 rw-p 00000000 00:00 0 
7fffe2a75000-7fffe2ac6000 rw-p 00000000 00:00 0 
7fffe2ac6000-7fffe2b17000 rw-p 00000000 00:00 0 
7fffe2b17000-7fffe2b68000 rw-p 00000000 00:00 0 
7fffe2b68000-7fffe2bb9000 rw-p 00000000 00:00 0 
7fffe2bb9000-7fffe2c0a000 rw-p 00000000 00:00 0 
7fffe2c0a000-7fffe2c5b000 rw-p 00000000 00:00 0 
7fffe2c5b000-7fffe2cac000 rw-p 00000000 00:00 0 
7fffe2cac000-7fffe2cfd000 rw-p 00000000 00:00 0 
7fffe2cfd000-7fffe2d4e000 rw-p 00000000 00:00 0 
7fffe2d4e000-7fffe2d9f000 rw-p 00000000 00:00 0 
7fffe2d9f000-7fffe2df0000 rw-p 00000000 00:00 0 
7fffe2df0000-7fffe2e41000 rw-p 00000000 00:00 0 
7fffe2e41000-7fffe2e92000 rw-p 00000000 00:00 0 
7fffe2e92000-7fffe2ee3000 rw-p 00000000 00:00 0 
7fffe2ee3000-7fffe2f34000 rw-p 00000000 00:00 0 
7fffe2f34000-7fffe2f85000 rw-p 00000000 00:00 0 
7fffe2f85000-7fffe2fd6000 rw-p 00000000 00:00 0 
7fffe2fd6000-7fffe3027000 rw-p 00000000 00:00 0 
7fffe3027000-7fffe3078000 rw-p 00000000 00:00 0 
7fffe3078000-7fffe30c9000 rw-p 00000000 00:00 0 
7fffe30c9000-7fffe311a000 rw-p 00000000 00:00 0 
7fffe311a000-7fffe316b000 rw-p 00000000 00:00 0 
7fffe316b000-7fffe31bc000 rw-p 00000000 00:00 0 
7fffe31bc000-7fffe320d000 rw-p 00000000 00:00 0 
7fffe320d000-7fffe325e000 rw-p 00000000 00:00 0 
7fffe325e000-7fffe32af000 rw-p 00000000 00:00 0 
7fffe32af000-7fffe3300000 rw-p 00000000 00:00 0 
7fffe3300000-7fffe3351000 rw-p 00000000 00:00 0 
7fffe3351000-7fffe33a2000 rw-p 00000000 00:00 0 
7fffe33a2000-7fffe33f3000 rw-p 00000000 00:00 0 
7fffe33f3000-7fffe3444000 rw-p 00000000 00:00 0 
7fffe3444000-7fffe3495000 rw-p 00000000 00:00 0 
7fffe3495000-7fffe34e6000 rw-p 00000000 00:00 0 
7fffe34e6000-7fffe3537000 rw-p 00000000 00:00 0 
7fffe3537000-7fffe3588000 rw-p 00000000 00:00 0 
7fffe3588000-7fffe35d9000 rw-p 00000000 00:00 0 
7fffe35d9000-7fffe362a000 rw-p 00000000 00:00 0 
7fffe362a000-7fffe367b000 rw-p 00000000 00:00 0 
7fffe367b000-7fffe36cc000 rw-p 00000000 00:00 0 
7fffe36cc000-7fffe371d000 rw-p 00000000 00:00 0 
7fffe371d000-7fffe376e000 rw-p 00000000 00:00 0 
7fffe376e000-7fffe37bf000 rw-p 00000000 00:00 0 
7fffe37bf000-7fffe3810000 rw-p 00000000 00:00 0 
7fffe3810000-7fffe3861000 rw-p 00000000 00:00 0 
7fffe3861000-7fffe38b2000 rw-p 00000000 00:00 0 
7fffe38b2000-7fffe3903000 rw-p 00000000 00:00 0 
7fffe3903000-7fffe3954000 rw-p 00000000 00:00 0 
7fffe3954000-7fffe39a5000 rw-p 00000000 00:00 0 
7fffe39a5000-7fffe39f6000 rw-p 00000000 00:00 0 
7fffe39f6000-7fffe3a47000 rw-p 00000000 00:00 0 
7fffe3a47000-7fffe3a98000 rw-p 00000000 00:00 0 
7fffe3a98000-7fffe3ae9000 rw-p 00000000 00:00 0 
7fffe3ae9000-7fffe3b3a000 rw-p 00000000 00:00 0 
7fffe3b3a000-7fffe3b8b000 rw-p 00000000 00:00 0 
7fffe3b8b000-7fffe3bdc000 rw-p 00000000 00:00 0 
7fffe3bdc000-7fffe3c2d000 rw-p 00000000 00:00 0 
7fffe3c2d000-7fffe3c7e000 rw-p 00000000 00:00 0 
7fffe3c7e000-7fffe3ccf000 rw-p 00000000 00:00 0 
7fffe3ccf000-7fffe3d20000 rw-p 00000000 00:00 0 
7fffe3d20000-7fffe3d71000 rw-p 00000000 00:00 0 
7fffe3d71000-7fffe3dc2000 rw-p 00000000 00:00 0 
7fffe3dc2000-7fffe3e13000 rw-p 00000000 00:00 0 
7fffe3e13000-7fffe3e64000 rw-p 00000000 00:00 0 
7fffe3e64000-7fffe3eb5000 rw-p 00000000 00:00 0 
7fffe3eb5000-7fffe3f06000 rw-p 00000000 00:00 0 
7fffe3f06000-7fffe3f57000 rw-p 00000000 00:00 0 
7fffe3f57000-7fffe3fa8000 rw-p 00000000 00:00 0 
7fffe3fa8000-7fffe3ff9000 rw-p 00000000 00:00 0 
7fffe3ff9000-7fffe404a000 rw-p 00000000 00:00 0 
7fffe404a000-7fffe409b000 rw-p 00000000 00:00 0 
7fffe409b000-7fffe40ec000 rw-p 00000000 00:00 0 
7fffe40ec000-7fffe413d000 rw-p 00000000 00:00 0 
7fffe413d000-7fffe418e000 rw-p 00000000 00:00 0 
7fffe418e000-7fffe41df000 rw-p 00000000 00:00 0 
7fffe41df000-7fffe4230000 rw-p 00000000 00:00 0 
7fffe4230000-7fffe453b000 rw-p 00000000 00:00 0 
7fffe4564000-7fffe6075000 rw-p 00000000 00:00 0 
7fffe6075000-7fffe60c6000 rw-p 00000000 00:00 0 
7fffe60c6000-7fffe63a8000 rw-p 00000000 00:00 0 
7fffe63d1000-7fffe6594000 rw-p 00000000 00:00 0 
7fffe65bd000-7fffe6661000 rw-p 00000000 00:00 0 
7fffe6662000-7fffe66b3000 rw-p 00000000 00:00 0 
7fffe66b3000-7fffe68c8000 rw-p 00000000 00:00 0 
7fffe68f1000-7fffe6b06000 rw-p 00000000 00:00 0 
7fffe6b2f000-7fffe6de8000 rw-p 00000000 00:00 0 
7fffe6de8000-7fffe6e39000 rw-p 00000000 00:00 0 
7fffe6e39000-7fffe74a1000 rw-p 00000000 00:00 0 
7fffe74ca000-7fffe7c7a000 rw-p 00000000 00:00 0 
7fffe7ca3000-7fffe8000000 rw-p 00000000 00:00 0 
7fffe8000000-7fffe8021000 rw-p 00000000 00:00 0 
7fffe8021000-7fffec000000 ---p 00000000 00:00 0 
7fffec013000-7fffec08e000 rw-p 00000000 00:00 0 
7fffec0b7000-7fffec27a000 rw-p 00000000 00:00 0 
7fffec2a3000-7fffec3c2000 rw-p 00000000 00:00 0 
7fffec3eb000-7fffec71e000 rw-p 00000000 00:00 0 
7fffec71f000-7fffec748000 rw-p 00000000 00:00 0 
7fffec771000-7fffecace000 rw-p 00000000 00:00 0 
7fffecaf7000-7fffed188000 rw-p 00000000 00:00 0 
7fffed1b1000-7fffed74c000 rw-p 00000000 00:00 0 
7fffed775000-7fffedd62000 rw-p 00000000 00:00 0 
7fffedd8b000-7fffeddb4000 rw-p 00000000 00:00 0 
7fffedddd000-7fffede2e000 rw-p 00000000 00:00 0 
7fffede2f000-7fffedefc000 rw-p 00000000 00:00 0 
7fffedf25000-7fffee01b000 rw-p 00000000 00:00 0 
7fffee044000-7fffee282000 rw-p 00000000 00:00 0 
7fffee2ab000-7fffee2d4000 rw-p 00000000 00:00 0 
7fffee2fd000-7fffee6fe000 rw-p 00000000 00:00 0 
7fffee727000-7fffee898000 rw-p 00000000 00:00 0 
7fffee8c1000-7fffeec70000 rw-p 00000000 00:00 0 
7fffeec99000-7fffeeeae000 rw-p 00000000 00:00 0 
7fffeeed7000-7fffef0c3000 rw-p 00000000 00:00 0 
7fffef0ec000-7fffef166000 rw-p 00000000 00:00 0 
7fffef167000-7fffef190000 rw-p 00000000 00:00 0 
7fffef191000-7fffef1e2000 rw-p 00000000 00:00 0 
7fffef1e2000-7fffef233000 rw-p 00000000 00:00 0 
7fffef234000-7fffef2d8000 rw-p 00000000 00:00 0 
7fffef301000-7fffef4a1000 rw-p 00000000 00:00 0 
7fffef4ca000-7fffef545000 rw-p 00000000 00:00 0 
7fffef56e000-7fffef612000 rw-p 00000000 00:00 0 
7fffef63b000-7fffef6df000 rw-p 00000000 00:00 0 
7fffef708000-7fffef8a2000 rw-p 00000000 00:00 0 
7fffef8cb000-7fffef8f4000 rw-p 00000000 00:00 0 
7fffef91d000-7fffef946000 rw-p 00000000 00:00 0 
7fffef96f000-7fffefa3c000 rw-p 00000000 00:00 0 
7fffefa65000-7fffefc27000 rw-p 00000000 00:00 0 
7fffefc28000-7fffefd99000 rw-p 00000000 00:00 0 
7fffefdc2000-7fffefdeb000 rw-p 00000000 00:00 0 
7fffefe14000-7fffefee1000 rw-p 00000000 00:00 0 
7fffeff0a000-7fffeffae000 rw-p 00000000 00:00 0 
7fffeffd7000-7ffff0000000 rw-p 00000000 00:00 0 
7ffff0000000-7ffff0021000 rw-p 00000000 00:00 0 
7ffff0021000-7ffff4000000 ---p 00000000 00:00 0 
7ffff4000000-7ffff4085000 rw-p 00000000 00:00 0 
7ffff40ae000-7ffff42c3000 rw-p 00000000 00:00 0 
7ffff42ec000-7ffff4315000 rw-p 00000000 00:00 0 
7ffff433e000-7ffff4367000 rw-p 00000000 00:00 0 
7ffff4390000-7ffff44af000 rw-p 00000000 00:00 0 
7ffff44d8000-7ffff457c000 rw-p 00000000 00:00 0 
7ffff45a5000-7ffff45f7000 rw-p 00000000 00:00 0 
7ffff4620000-7ffff4649000 rw-p 00000000 00:00 0 
7ffff4672000-7ffff46c3000 rw-p 00000000 00:00 0 
7ffff46c4000-7ffff4768000 rw-p 00000000 00:00 0 
7ffff4791000-7ffff47ba000 rw-p 00000000 00:00 0 
7ffff47e3000-7ffff480c000 rw-p 00000000 00:00 0 
7ffff4835000-7ffff48d8000 rw-p 00000000 00:00 0 
7ffff48d9000-7ffff4a20000 rw-p 00000000 00:00 0 
7ffff4a21000-7ffff4ac5000 rw-p 00000000 00:00 0 
7ffff4ac6000-7ffff4b17000 rw-p 00000000 00:00 0 
7ffff4b17000-7ffff4b92000 rw-p 00000000 00:00 0 
7ffff4bbb000-7ffff4c88000 rw-p 00000000 00:00 0 
7ffff4cb1000-7ffff4e9d000 rw-p 00000000 00:00 0 
7ffff4e9e000-7ffff4eef000 rw-p 00000000 00:00 0 
7ffff4f18000-7ffff4f6a000 rw-p 00000000 00:00 0 
7ffff4f94000-7ffff4fe5000 rw-p 00000000 00:00 0 
7ffff4fe5000-7ffff500e000 rw-p 00000000 00:00 0 
7ffff5038000-7ffff5089000 rw-p 00000000 00:00 0 
7ffff5089000-7ffff50da000 rw-p 00000000 00:00 0 
7ffff50db000-7ffff5104000 rw-p 00000000 00:00 0 
7ffff512d000-7ffff517f000 rw-p 00000000 00:00 0 
7ffff51a8000-7ffff52c7000 rw-p 00000000 00:00 0 
7ffff52c8000-7ffff5319000 rw-p 00000000 00:00 0 
7ffff5319000-7ffff5437000 rw-p 00000000 00:00 0 
7ffff5438000-7ffff54b3000 rw-p 00000000 00:00 0 
7ffff54dd000-7ffff552e000 rw-p 00000000 00:00 0 
7ffff552e000-7ffff5580000 rw-p 00000000 00:00 0 
7ffff5581000-7ffff55d2000 rw-p 00000000 00:00 0 
7ffff55d2000-7ffff5624000 rw-p 00000000 00:00 0 
7ffff564d000-7ffff56f0000 rw-p 00000000 00:00 0 
7ffff56f1000-7ffff5742000 rw-p 00000000 00:00 0 
7ffff576c000-7ffff5795000 rw-p 00000000 00:00 0 
7ffff57be000-7ffff57e7000 rw-p 00000000 00:00 0 
7ffff5810000-7ffff583e000 rw-p 00000000 00:00 0 
7ffff5867000-7ffff58b9000 rw-p 00000000 00:00 0 
7ffff58e2000-7ffff595d000 rw-p 00000000 00:00 0 
7ffff595e000-7ffff59af000 rw-p 00000000 00:00 0 
7ffff59af000-7ffff5a00000 rw-p 00000000 00:00 0 
7ffff5a2a000-7ffff5a53000 rw-p 00000000 00:00 0 
7ffff5a7c000-7ffff5acd000 rw-p 00000000 00:00 0 
7ffff5ace000-7ffff5af7000 rw-p 00000000 00:00 0 
7ffff5b20000-7ffff5b49000 rw-p 00000000 00:00 0 
7ffff5b72000-7ffff5b9b000 rw-p 00000000 00:00 0 
7ffff5bc4000-7ffff5c16000 rw-p 00000000 00:00 0 
7ffff5c17000-7ffff5c68000 rw-p 00000000 00:00 0 
7ffff5c68000-7ffff5ce2000 rw-p 00000000 00:00 0 
7ffff5ce3000-7ffff5d0c000 rw-p 00000000 00:00 0 
7ffff5d0d000-7ffff5d5e000 rw-p 00000000 00:00 0 
7ffff5d87000-7ffff5dd8000 rw-p 00000000 00:00 0 
7ffff5dd9000-7ffff5e2a000 rw-p 00000000 00:00 0 
7ffff5e54000-7ffff5e7d000 rw-p 00000000 00:00 0 
7ffff5ea6000-7ffff5ecf000 rw-p 00000000 00:00 0 
7ffff5ef8000-7ffff5f49000 rw-p 00000000 00:00 0 
7ffff5f4a000-7ffff6016000 rw-p 00000000 00:00 0 
7ffff6017000-7ffff6091000 rw-p 00000000 00:00 0 
7ffff6092000-7ffff60e4000 rw-p 00000000 00:00 0 
7ffff60e5000-7ffff6136000 rw-p 00000000 00:00 0 
7ffff6136000-7ffff6187000 rw-p 00000000 00:00 0 
7ffff61b1000-7ffff6202000 rw-p 00000000 00:00 0 
7ffff6203000-7ffff6254000 rw-p 00000000 00:00 0 
7ffff6255000-7ffff62a6000 rw-p 00000000 00:00 0 
7ffff62a8000-7ffff62f9000 rw-p 00000000 00:00 0 
7ffff62f9000-7ffff634a000 rw-p 00000000 00:00 0 
7ffff634b000-7ffff639c000 rw-p 00000000 00:00 0 
7ffff63c6000-7ffff63c7000 ---p 00000000 00:00 0 
7ffff63c7000-7ffff6bc7000 rw-p 00000000 00:00 0 
7ffff6bc7000-7ffff6bc8000 ---p 00000000 00:00 0 
7ffff6bc8000-7ffff73c8000 rw-p 00000000 00:00 0 
7ffff73c8000-7ffff73d4000 r-xp 00000000 08:01 4387                       /usr/lib64/libnss_files-2.17.so
7ffff73d4000-7ffff75d3000 ---p 0000c000 08:01 4387                       /usr/lib64/libnss_files-2.17.so
7ffff75d3000-7ffff75d4000 r--p 0000b000 08:01 4387                       /usr/lib64/libnss_files-2.17.so
7ffff75d4000-7ffff75d5000 rw-p 0000c000 08:01 4387                       /usr/lib64/libnss_files-2.17.so
7ffff75d5000-7ffff75db000 rw-p 00000000 00:00 0 
7ffff75db000-7ffff779f000 r-xp 00000000 08:01 4369                       /usr/lib64/libc-2.17.so
7ffff779f000-7ffff799e000 ---p 001c4000 08:01 4369                       /usr/lib64/libc-2.17.so
7ffff799e000-7ffff79a2000 r--p 001c3000 08:01 4369                       /usr/lib64/libc-2.17.so
7ffff79a2000-7ffff79a4000 rw-p 001c7000 08:01 4369                       /usr/lib64/libc-2.17.so
7ffff79a4000-7ffff79a9000 rw-p 00000000 00:00 0 
7ffff79a9000-7ffff79c0000 r-xp 00000000 08:01 4395                       /usr/lib64/libpthread-2.17.so
7ffff79c0000-7ffff7bbf000 ---p 00017000 08:01 4395                       /usr/lib64/libpthread-2.17.so
Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffff6bc6700 (LWP 19024)]
0x00007ffff7611387 in raise () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-326.el7_9.x86_64 libgcc-4.8.5-44.el7.x86_64 zlib-1.2.7-21.el7_9.x86_64
(gdb)
erdgeist commented 7 months ago

I can not reproduce the error in the /stats?mode=everything request. Do you have any local changes?

erdgeist commented 7 months ago

Okay, I think I have an idea: Do you still define OT_PEER_TIMEOUT as 144?

The function stats_return_everything reports how often peers re-announced themselves and iterates over

  for( i=0; i<OT_PEER_TIMEOUT; ++i )
    r += sprintf( r, "      <count interval=\"%02i\">%llu</count>\n", i, 0x800000 );

which will probably overflow the temporaty buffer in OT_STATS_TMPSIZE which has been reserved to hold the complete reply. Can you try to change the line to #define OT_STATS_TMPSIZE (8192*2) and see if this still crashes?

1265578519 commented 7 months ago

我尝试修改#define OT_PEER_TIMEOUT 144 为#define OT_PEER_TIMEOUT 180 ,依旧立即发生崩溃

新增了 #define OT_STATS_TMPSIZE (8192*2),一样发生相同的崩溃 image

[root@tracker opentracker]# make clean
rm -rf opentracker opentracker.debug *.o *~
[root@tracker opentracker]# vi trackerlogic.h
[root@tracker opentracker]# make
cc -c -o opentracker.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY opentracker.c
cc -c -o trackerlogic.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY trackerlogic.c
cc -c -o scan_urlencoded_query.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY scan_urlencoded_query.c
cc -c -o ot_mutex.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_mutex.c
cc -c -o ot_stats.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_stats.c
ot_stats.c:42:0: warning: "OT_STATS_TMPSIZE" redefined [enabled by default]
 #define OT_STATS_TMPSIZE 8192
 ^
In file included from ot_stats.c:28:0:
trackerlogic.h:62:0: note: this is the location of the previous definition
 #define OT_STATS_TMPSIZE (8192*2)
 ^
cc -c -o ot_vector.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_vector.c
cc -c -o ot_clean.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_clean.c
cc -c -o ot_udp.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_udp.c
cc -c -o ot_iovec.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_iovec.c
cc -c -o ot_fullscrape.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_fullscrape.c
cc -c -o ot_accesslist.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_accesslist.c
cc -c -o ot_http.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_http.c
cc -c -o ot_livesync.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_livesync.c
cc -c -o ot_rijndael.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_IP_FROM_PROXY ot_rijndael.c
cc -o opentracker opentracker.o trackerlogic.o scan_urlencoded_query.o ot_mutex.o ot_stats.o ot_vector.o ot_clean.o ot_udp.o ot_iovec.o ot_fullscrape.o ot_accesslist.o ot_http.o ot_livesync.o ot_rijndael.o -L../libowfat -lowfat -pthread -lz
strip opentracker
cc -c -o opentracker.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY opentracker.c
cc -c -o trackerlogic.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY trackerlogic.c
cc -c -o scan_urlencoded_query.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY scan_urlencoded_query.c
cc -c -o ot_mutex.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_mutex.c
cc -c -o ot_stats.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_stats.c
ot_stats.c:42:0: warning: "OT_STATS_TMPSIZE" redefined [enabled by default]
 #define OT_STATS_TMPSIZE 8192
 ^
In file included from ot_stats.c:28:0:
trackerlogic.h:62:0: note: this is the location of the previous definition
 #define OT_STATS_TMPSIZE (8192*2)
 ^
cc -c -o ot_vector.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_vector.c
cc -c -o ot_clean.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_clean.c
cc -c -o ot_udp.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_udp.c
cc -c -o ot_iovec.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_iovec.c
cc -c -o ot_fullscrape.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_fullscrape.c
cc -c -o ot_accesslist.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_accesslist.c
cc -c -o ot_http.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_http.c
cc -c -o ot_livesync.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_livesync.c
cc -c -o ot_rijndael.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_IP_FROM_PROXY ot_rijndael.c
cc -o opentracker.debug opentracker.debug.o trackerlogic.debug.o scan_urlencoded_query.debug.o ot_mutex.debug.o ot_stats.debug.o ot_vector.debug.o ot_clean.debug.o ot_udp.debug.o ot_iovec.debug.o ot_fullscrape.debug.o ot_accesslist.debug.o ot_http.debug.o ot_livesync.debug.o ot_rijndael.debug.o -L../libowfat -lowfat -pthread -lz
[root@tracker opentracker]#

这个崩溃的现象,在早期的代码中没有出现

erdgeist commented 7 months ago

ot_stats.c:42:0: warning: "OT_STATS_TMPSIZE" redefined [enabled by default]

define OT_STATS_TMPSIZE 8192

^ In file included from ot_stats.c:28:0: trackerlogic.h:62:0: note: this is the location of the previous definition

define OT_STATS_TMPSIZE (8192*2)

^

You should not add the macro OT_STATS_TMPSIZE in the header file, but edit ot_stats.c and change the declaration of OT_STATS_TMPSIZE to (8192*2).

When you added it in ot_stats.h, it was overwritten in ot_stats.c with the old value which has not enough memory to hold all the information about each of the 180 time slots that was introduced by setting OT_PEER_TIMEOUT to 180 (or 144).

Please delete the line in ot_stats.h and just change line 42 in ot_stats.c to #define OT_STATS_TMPSIZE (8192*2)

1265578519 commented 7 months ago

trackerlogic.h #define OT_PEER_TIMEOUT 180 改成 90 也会发生崩溃 我通过浏览器F12观察另一台tracker服务器,响应的内容为7.3 KB,很有可能触发8192限制 image

我已修改ot_stats.c #define OT_STATS_TMPSIZE (8192*2),稍后查看是否继续发生崩溃

1265578519 commented 7 months ago

修改8192*2后,stats?mode=everything 现在正常了,应该是8KB限制引起的崩溃

(RS)Y~223Y8Y 8~$F7X %)1

erdgeist commented 7 months ago

Okay, so the proper way to fix it is not to arbitrarily allocate buffers with the default constants in mind but to pre-estimate how much the strings will use. Will look into that.

1265578519 commented 6 months ago

我刚刚合并了最新的代码,发现无法进行编译安装

[root@tracker opentracker]# make
cc -c -o opentracker.o -I../libowfat -Wall -pipe -pthread -Wextra -Wincompatible-pointer-types  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE opentracker.c
cc: error: unrecognized command line option ‘-Wincompatible-pointer-types’
make: *** [opentracker.o] Error 1
[root@tracker opentracker]# 

这份代码都是正常编译安装的,我查看了官网,视乎准备发布v1.0,到这里提交的代码可以作为v0.1正式稳定版发布 52d9829f81264de99055fb5c85e7e05915997aa6

我在我的仓库里发布了v0.1 https://github.com/1265578519/OpenTracker/releases/tag/v0.1

centos6仅支持libowfat 0.31,centos7仅支持libowfat 0.32,看说明是v1.0要使用libowfat 0.34?不知道安装错误是不是和这个有关系? 我觉得不要做这个libowfat限制,不然他没办法在一些操作系统中安装,例如低版本内核的路由器中运行opentracker

对于默认启用gzip,他是否能够正常工作Content-Length头部? 因为在未压缩完成的时候是不知道文件长度的,如果压缩完成后在返回给浏览器,那么可能需要1分钟的白屏等待,服务器压缩较大的数据需要一个较长的时间 正常来说使用gzip会导致显示下载进度永远为0%,我认为不应该对其启用gzip,除非它能够缓存一份磁盘缓存副本在安装程序所在的根目录,第二名访客可以从缓存中获得下载数据,由于是缓存,所以知道文件大小,可以正常获得下载进度

由于我无法安装最新代码,所以无法测试最新代码是否能够预期工作 只有这一份是正常的,后面都开始崩了,这一份代码我测试工作了5天没有发生异常,所以我将其列为v0.1 image

erdgeist commented 6 months ago

我刚刚合并了最新的代码,发现无法进行编译安装

This is fixed now.

The warning was to find more instances of the problem you described :)

erdgeist commented 6 months ago

centos6仅支持libowfat 0.31,centos7仅支持libowfat 0.32,看说明是v1.0要使用libowfat 0.34?不知道安装错误是不是和这个有关系? 我觉得不要做这个libowfat限制,不然他没办法在一些操作系统中安装,例如低版本内核的路由器中运行opentracker

I am currently working with the author of libowfat to chase some bugs. Also there are multiple optimizations for expensive operations like full scrapes now to allow the tracker to work with much less memory.

I added #FEATURES+=-DWANT_NO_AUTO_FREE to allow for an older version of libowfat to compile.

erdgeist commented 6 months ago

对于默认启用gzip,他是否能够正常工作Content-Length头部?

Correct. I changed the Transfer-Encoding to chunked encoding

https://zh.wikipedia.org/wiki/分块传输编码

This allows opentracker to generate the data on the fly and free memory of chunks that were already transferred. But you are right, I do not know the content-length in advance.

因为在未压缩完成的时候是不知道文件长度的,如果压缩完成后在返回给浏览器,那么可能需要1分钟的白屏等待,服务器压缩较大的数据需要一个较长的时间 正常来说使用gzip会导致显示下载进度永远为0%,我认为不应该对其启用gzip,除非它能够缓存一份磁盘缓存副本在安装程序所在的根目录,第二名访客可以从缓存中获得下载数据,由于是缓存,所以知道文件大小,可以正常获得下载进度

gzip usually is much less expensive than transferring four times the amount of data over the network. The fullscrape data is highly compressible, so enabling gzip will also reduce memory requirement which leads to fewer swaps https://zh.wikipedia.org/wiki/分頁 and much less bandwidth required.

But yes, the browser will not be able to show you the progress in that case.

1265578519 commented 6 months ago

是的,在启用gzip的时候,不仅是浏览器,在BT客户端上也无法获得下载进度 算了,无法获得下载进度就无法获得吧,影响不是很大,只是看不到当前的进度而已 image

对于gzip,你能否加入br的支持?现代BT客户端都支持br压缩,他对比gzip的4倍压缩率,br可以提升到6倍压缩,比gzip高达2倍提升 例如4.4MB的文本,gzip压缩为929KB,br压缩后为695KB,压缩率分别为4倍和6倍 判断请求头是否有br参数代表客户端是否支持br压缩,然后分别返回不同的内容 Accept-Encoding: gzip, deflate, br image

那么 http stats?mode=top100 和 announce numwant 400peer平均返回7KB与10KB内容,都应该默认支持gzip, br image

1265578519 commented 6 months ago

没有设置 #FEATURES+=-DWANT_NO_AUTO_FREE 的时候编译错误

[root@tracker opentracker]# make
cc -c -o opentracker.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE opentracker.c
opentracker.c: In function ‘time_caching_worker’:
opentracker.c:646:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
cc -c -o trackerlogic.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE trackerlogic.c
cc -c -o scan_urlencoded_query.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE scan_urlencoded_query.c
cc -c -o ot_mutex.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE ot_mutex.c
cc -c -o ot_stats.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE ot_stats.c
cc -c -o ot_vector.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE ot_vector.c
cc -c -o ot_clean.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE ot_clean.c
cc -c -o ot_udp.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE ot_udp.c
cc -c -o ot_iovec.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE ot_iovec.c
cc -c -o ot_fullscrape.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE ot_fullscrape.c
cc -c -o ot_accesslist.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE ot_accesslist.c
cc -c -o ot_http.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE ot_http.c
ot_http.c: In function ‘http_senddata’:
ot_http.c:90:7: warning: implicit declaration of function ‘iob_init_autofree’ [-Wimplicit-function-declaration]
       OT_IOB_INIT(cookie->batch, 0);
       ^
ot_http.c: In function ‘http_sendiovecdata’:
ot_http.c:167:7: warning: implicit declaration of function ‘asprintf’ [-Wimplicit-function-declaration]
       header_size = asprintf(&header, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n%sContent-Length: %zd\r\n\r\n", encoding, size);
       ^
cc -c -o ot_livesync.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE ot_livesync.c
cc -c -o ot_rijndael.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE ot_rijndael.c
cc -o opentracker opentracker.o trackerlogic.o scan_urlencoded_query.o ot_mutex.o ot_stats.o ot_vector.o ot_clean.o ot_udp.o ot_iovec.o ot_fullscrape.o ot_accesslist.o ot_http.o ot_livesync.o ot_rijndael.o -L../libowfat -lowfat -pthread -lz
ot_http.o: In function `http_issue_error.constprop.0':
ot_http.c:(.text+0x1f4): undefined reference to `iob_init_autofree'
ot_http.o: In function `http_issue_error':
ot_http.c:(.text+0x4b4): undefined reference to `iob_init_autofree'
ot_http.o: In function `http_sendiovecdata':
ot_http.c:(.text+0x63c): undefined reference to `iob_init_autofree'
ot_http.c:(.text+0x7ce): undefined reference to `iob_init_autofree'
ot_http.o: In function `http_handle_request':
ot_http.c:(.text+0x11a4): undefined reference to `iob_init_autofree'
collect2: error: ld returned 1 exit status
make: *** [opentracker] Error 1
[root@tracker opentracker]#

设置Makefile文件为 FEATURES+=-DWANT_NO_AUTO_FREE 后依旧错误

[root@tracker opentracker]# vi M*
[root@tracker opentracker]# make
cc -c -o opentracker.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE opentracker.c
opentracker.c: In function ‘time_caching_worker’:
opentracker.c:646:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
cc -c -o trackerlogic.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE trackerlogic.c
cc -c -o scan_urlencoded_query.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE scan_urlencoded_query.c
cc -c -o ot_mutex.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_mutex.c
cc -c -o ot_stats.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_stats.c
cc -c -o ot_vector.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_vector.c
cc -c -o ot_clean.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_clean.c
cc -c -o ot_udp.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_udp.c
cc -c -o ot_iovec.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_iovec.c
cc -c -o ot_fullscrape.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_fullscrape.c
cc -c -o ot_accesslist.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_accesslist.c
cc -c -o ot_http.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_http.c
ot_http.c: In function ‘http_senddata’:
ot_http.c:90:7: warning: implicit declaration of function ‘iob_init’ [-Wimplicit-function-declaration]
       OT_IOB_INIT(cookie->batch, 0);
       ^
ot_http.c: In function ‘http_sendiovecdata’:
ot_http.c:167:7: warning: implicit declaration of function ‘asprintf’ [-Wimplicit-function-declaration]
       header_size = asprintf(&header, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n%sContent-Length: %zd\r\n\r\n", encoding, size);
       ^
cc -c -o ot_livesync.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_livesync.c
cc -c -o ot_rijndael.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_rijndael.c
cc -o opentracker opentracker.o trackerlogic.o scan_urlencoded_query.o ot_mutex.o ot_stats.o ot_vector.o ot_clean.o ot_udp.o ot_iovec.o ot_fullscrape.o ot_accesslist.o ot_http.o ot_livesync.o ot_rijndael.o -L../libowfat -lowfat -pthread -lz
ot_http.o: In function `http_issue_error.constprop.0':
ot_http.c:(.text+0x1f4): undefined reference to `iob_init'
ot_http.o: In function `http_issue_error':
ot_http.c:(.text+0x4b4): undefined reference to `iob_init'
ot_http.o: In function `http_sendiovecdata':
ot_http.c:(.text+0x63c): undefined reference to `iob_init'
ot_http.c:(.text+0x7ce): undefined reference to `iob_init'
ot_http.o: In function `http_handle_request':
ot_http.c:(.text+0x11a4): undefined reference to `iob_init'
collect2: error: ld returned 1 exit status
make: *** [opentracker] Error 1
[root@tracker opentracker]#
erdgeist commented 6 months ago

设置Makefile文件为 FEATURES+=-DWANT_NO_AUTO_FREE 后依旧错误

Thank you for checking. I incorrectly assumed that the iob_init function was already there before libowfat-0.34. Fixed it now.

Also fixed the warning about asprinft. But I don't have a Centos to check. Did the warning on ot_http.c disappear now?

erdgeist commented 6 months ago

那么 http stats?mode=top100 和 announce numwant 400peer平均返回7KB与10KB内容,都应该默认支持gzip, br

I can compress the stats, but it usually is not requested so often that the few kilobytes saved will make a difference.

For /announce requests, the data is not very compressible, because it mainly consists of IPv4 and IPv6 addresses and port numbers with very little redundancy. Also I don't really know if all the other bittorrent clients support compression properly :)

erdgeist commented 6 months ago

对于gzip,你能否加入br的支持?现代BT客户端都支持br压缩,他对比gzip的4倍压缩率,br可以提升到6倍压缩,比gzip高达2倍提升 例如4.4MB的文本,gzip压缩为929KB,br压缩后为695KB,压缩率分别为4倍和6倍 判断请求头是否有br参数代表客户端是否支持br压缩,然后分别返回不同的内容

To be honest, I do not really check if the clients set the http header for accept-encoding, but I just scan the whole request for the substring 'gzip' and if it matches, I force the reply to be gzip compressed. I can not do the same with the string 'br' ;)

That would be a little work. I also do not yet know the interface for the brotli library. I will have to look into that. Much better would be support for zstd as this is really fast and compresses even better than brotli. It is supported in chrome soon https://chromestatus.com/feature/6186023867908096

1265578519 commented 6 months ago

我刚刚为了测试announce的压缩率,发现我当前使用v0.1版本,发起http compact=0的时候不工作,400 Bad Request Invalid Request compact=1紧凑的格式,取得announce文件为7.1KB,gzip压缩后为5.6KB,压缩率确实不高,如果compact=0我相信可以获得更高的压缩率

To be honest, I do not really check if the clients set the http header for accept-encoding, but I just scan the whole request for the substring 'gzip' and if it matches, I force the reply to be gzip compressed. I can not do the same with the string 'br' ;)

That would be a little work. I also do not yet know the interface for the brotli library. I will have to look into that. Much better would be support for zstd as this is really fast and compresses even better than brotli. It is supported in chrome soon https://chromestatus.com/feature/6186023867908096

zstd 还没有被任何一款BT客户端支持,可以先做上brotli 根据gzip compact=1压缩比可以得知announce压缩率为30%左右,可以总体减少30%的服务器流量使用,brotli支持后可以进一步减少流量使用

Also I don't really know if all the other bittorrent clients support compression properly :)

所以需要判断请求头,就知道客户端是否支持压缩,而不是查找字符串。。。查找字符串会带来更多的CPU性能消耗

1265578519 commented 6 months ago

Thank you for checking. I incorrectly assumed that the iob_init function was already there before libowfat-0.34. Fixed it now.

Also fixed the warning about asprinft. But I don't have a Centos to check. Did the warning on ot_http.c disappear now?

现在 FEATURES+=-DWANT_NO_AUTO_FREE 可以正常安装,但是依旧有几个警告提示

[root@tracker opentracker]# make
cc -c -o opentracker.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE opentracker.c
opentracker.c: In function ‘time_caching_worker’:
opentracker.c:646:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
cc -c -o trackerlogic.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE trackerlogic.c
cc -c -o scan_urlencoded_query.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE scan_urlencoded_query.c
cc -c -o ot_mutex.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_mutex.c
cc -c -o ot_stats.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_stats.c
cc -c -o ot_vector.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_vector.c
cc -c -o ot_clean.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_clean.c
cc -c -o ot_udp.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_udp.c
cc -c -o ot_iovec.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_iovec.c
cc -c -o ot_fullscrape.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_fullscrape.c
cc -c -o ot_accesslist.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_accesslist.c
cc -c -o ot_http.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_http.c
ot_http.c: In function ‘http_sendiovecdata’:
ot_http.c:168:7: warning: implicit declaration of function ‘asprintf’ [-Wimplicit-function-declaration]
       header_size = asprintf(&header, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n%sContent-Length: %zd\r\n\r\n", encoding, size);
       ^
cc -c -o ot_livesync.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_livesync.c
cc -c -o ot_rijndael.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_rijndael.c
cc -o opentracker opentracker.o trackerlogic.o scan_urlencoded_query.o ot_mutex.o ot_stats.o ot_vector.o ot_clean.o ot_udp.o ot_iovec.o ot_fullscrape.o ot_accesslist.o ot_http.o ot_livesync.o ot_rijndael.o -L../libowfat -lowfat -pthread -lz
strip opentracker
cc -c -o opentracker.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE opentracker.c
opentracker.c: In function ‘time_caching_worker’:
opentracker.c:646:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
cc -c -o trackerlogic.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE trackerlogic.c
cc -c -o scan_urlencoded_query.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE scan_urlencoded_query.c
cc -c -o ot_mutex.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_mutex.c
cc -c -o ot_stats.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_stats.c
cc -c -o ot_vector.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_vector.c
cc -c -o ot_clean.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_clean.c
cc -c -o ot_udp.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_udp.c
cc -c -o ot_iovec.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_iovec.c
cc -c -o ot_fullscrape.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_fullscrape.c
cc -c -o ot_accesslist.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_accesslist.c
cc -c -o ot_http.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_http.c
ot_http.c: In function ‘http_sendiovecdata’:
ot_http.c:168:7: warning: implicit declaration of function ‘asprintf’ [-Wimplicit-function-declaration]
       header_size = asprintf(&header, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n%sContent-Length: %zd\r\n\r\n", encoding, size);
       ^
cc -c -o ot_livesync.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_livesync.c
cc -c -o ot_rijndael.debug.o -I../libowfat -Wall -pipe -pthread -Wextra  -D_DEBUG -g -ggdb  -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_rijndael.c
cc -o opentracker.debug opentracker.debug.o trackerlogic.debug.o scan_urlencoded_query.debug.o ot_mutex.debug.o ot_stats.debug.o ot_vector.debug.o ot_clean.debug.o ot_udp.debug.o ot_iovec.debug.o ot_fullscrape.debug.o ot_accesslist.debug.o ot_http.debug.o ot_livesync.debug.o ot_rijndael.debug.o -L../libowfat -lowfat -pthread -lz
[root@tracker opentracker]#
1265578519 commented 6 months ago

I am currently working with the author of libowfat to chase some bugs

我都找不到libowfat作者的联系方式,我在libowfat 0.32上也遇到3个警告,不过libowfat 0.32能正常工作,只是安装过程显得不够优雅 并且我在centos6 libowfat 0.31中安装opentracker出现错误

[root@www opentracker]# make
cc -c -o opentracker.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE opentracker.c
cc -c -o trackerlogic.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE trackerlogic.c
cc -c -o scan_urlencoded_query.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE scan_urlencoded_query.c
cc -c -o ot_mutex.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_mutex.c
cc -c -o ot_stats.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_stats.c
cc -c -o ot_vector.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_vector.c
cc -c -o ot_clean.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_clean.c
cc -c -o ot_udp.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_udp.c
cc -c -o ot_iovec.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_iovec.c
cc -c -o ot_fullscrape.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_fullscrape.c
ot_fullscrape.c: 在函数‘fullscrape_make_gzip’中:
ot_fullscrape.c:291: 警告:隐式声明函数‘deflatePending’
cc -c -o ot_accesslist.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_accesslist.c
cc -c -o ot_http.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_http.c
ot_http.c: 在函数‘http_sendiovecdata’中:
ot_http.c:168: 警告:隐式声明函数‘asprintf’
cc -c -o ot_livesync.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_livesync.c
cc -c -o ot_rijndael.o -I../libowfat -Wall -pipe -pthread -Wextra  -O3 -DWANT_COMPRESSION_GZIP -DWANT_COMPRESSION_GZIP_ALWAYS -DWANT_FULLSCRAPE -DWANT_NO_AUTO_FREE ot_rijndael.c
cc -o opentracker opentracker.o trackerlogic.o scan_urlencoded_query.o ot_mutex.o ot_stats.o ot_vector.o ot_clean.o ot_udp.o ot_iovec.o ot_fullscrape.o ot_accesslist.o ot_http.o ot_livesync.o ot_rijndael.o -L../libowfat -lowfat -pthread -lz
ot_fullscrape.o: In function `fullscrape_make_gzip':
ot_fullscrape.c:(.text+0x56e): undefined reference to `deflatePending'
collect2: ld 返回 1
make: *** [opentracker] 错误 1
[root@www opentracker]#

libowfat 0.32

[root@tracker libowfat]# make
mkdir libowfat
ln -f buffer.h libowfat/buffer.h
ln -f byte.h libowfat/byte.h
ln -f fmt.h libowfat/fmt.h
ln -f ip4.h libowfat/ip4.h
ln -f ip6.h libowfat/ip6.h
ln -f mmap.h libowfat/mmap.h
ln -f scan.h libowfat/scan.h
ln -f socket.h libowfat/socket.h
ln -f str.h libowfat/str.h
ln -f stralloc.h libowfat/stralloc.h
ln -f uint16.h libowfat/uint16.h
ln -f uint32.h libowfat/uint32.h
ln -f uint64.h libowfat/uint64.h
ln -f open.h libowfat/open.h
ln -f textcode.h libowfat/textcode.h
ln -f tai.h libowfat/tai.h
ln -f taia.h libowfat/taia.h
ln -f dns.h libowfat/dns.h
rm -f iopause.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o t trypoll.c >/dev/null 2>&1; then cp iopause.h2 iopause.h; else cp iopause.h1 iopause.h; fi
rm -f t
ln -f iopause.h libowfat/iopause.h
ln -f case.h libowfat/case.h
ln -f openreadclose.h libowfat/openreadclose.h
ln -f readclose.h libowfat/readclose.h
ln -f ndelay.h libowfat/ndelay.h
ln -f array.h libowfat/array.h
ln -f io.h libowfat/io.h
ln -f safemult.h libowfat/safemult.h
ln -f iob.h libowfat/iob.h
rm -f havealloca.h
echo "#include <stdlib.h>" > havealloca.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryalloca.c -DA >/dev/null 2>&1; then echo "#include <alloca.h>"; fi >> havealloca.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryalloca.c -DB >/dev/null 2>&1; then echo "#include <malloc.h>"; fi >> havealloca.h
rm -f tryalloca.o
ln -f havealloca.h libowfat/havealloca.h
ln -f errmsg.h libowfat/errmsg.h
ln -f cdb.h libowfat/cdb.h
ln -f cdb_make.h libowfat/cdb_make.h
ln -f rangecheck.h libowfat/rangecheck.h
ln -f iarray.h libowfat/iarray.h
ln -f va_narg.h libowfat/va_narg.h
ln -f isset.h libowfat/isset.h
ln -f compiletimeassert.h libowfat/compiletimeassert.h
ln -f critbit.h libowfat/critbit.h
rm -f haveuint128.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryuint128.c >/dev/null 2>&1; then echo "#define HAVE_UINT128"; fi > haveuint128.h
rm -f tryuint128.o
gcc -g -o ent ent.c -I.
gcc -c byte/byte_chr.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_copy.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_zero.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_copyr.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_equal_notimingattack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_diff.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_rchr.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
ar cru byte.a byte_chr.o byte_copy.o byte_zero.o byte_copyr.o byte_equal_notimingattack.o byte_diff.o byte_rchr.o
ranlib byte.a
gcc -c fmt/fmt_human.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharxml.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type5_float.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_netstring.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_str.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pad.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_asn1dertag.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_float.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_xlonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_double.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f haveinline.h
if !  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryinline.c >/dev/null 2>&1; then echo "#define inline"; fi > haveinline.h
rm -f tryinline.o
gcc -c fmt/fmt_xlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_ulong0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type0_sint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type1_fixed64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_strm_internal.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_fill.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_varint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharquotedprintable.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_asn1derlength.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_humank.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_utf8.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_long.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type5_fixed32.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_xmlescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharjson.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_ulong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_string.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type2_string.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_tag.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharhtml.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_httpdate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_longlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_8long.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_int.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_strn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_sint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type1_double.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_double.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_tohex.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_plusminus.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_minus.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharquotedprintableutf8.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_8longlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_ulonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_iso8601.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru fmt.a fmt_human.o fmt_escapecharxml.o fmt_pb_type5_float.o fmt_netstring.o fmt_str.o fmt_pad.o fmt_asn1dertag.o fmt_pb_float.o fmt_xlonglong.o fmt_pb_double.o fmt_xlong.o fmt_ulong0.o fmt_pb_type0_sint.o fmt_pb_type1_fixed64.o fmt_strm_internal.o fmt_fill.o fmt_varint.o fmt_escapecharquotedprintable.o fmt_asn1derlength.o fmt_humank.o fmt_escapecharc.o fmt_utf8.o fmt_long.o fmt_pb_type5_fixed32.o fmt_xmlescape.o fmt_escapecharjson.o fmt_ulong.o fmt_pb_string.o fmt_pb_type2_string.o fmt_pb_tag.o fmt_escapecharhtml.o fmt_httpdate.o fmt_longlong.o fmt_8long.o fmt_pb_int.o fmt_strn.o fmt_pb_sint.o fmt_pb_type1_double.o fmt_double.o fmt_tohex.o fmt_plusminus.o fmt_minus.o fmt_escapecharquotedprintableutf8.o fmt_8longlong.o fmt_ulonglong.o fmt_iso8601.o
ranlib fmt.a
gcc -c scan/scan_asn1dertag.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type0_sint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_xlongn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_ulong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type1_fixed64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_xint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_uint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_whitenskip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_asn1derlength.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_ulonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_utf8.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_long.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_8long.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_8short.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_double.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type2_stringlen.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_longlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_httpdate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type5_fixed32.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_utf8_sem.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_ulongn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_8int.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_8longlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_xlonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_longn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_xshort.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_tag.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type1_double.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_netstring.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_8longn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_plusminus.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_nonwhitenskip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_charsetnskip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_ushort.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_int.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_iso8601.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_noncharsetnskip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_varint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_fromhex.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type5_float.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_short.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_xlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru scan.a scan_asn1dertag.o scan_pb_type0_sint.o scan_xlongn.o scan_ulong.o scan_pb_type1_fixed64.o scan_xint.o scan_uint.o scan_whitenskip.o scan_asn1derlength.o scan_ulonglong.o scan_utf8.o scan_long.o scan_8long.o scan_8short.o scan_double.o scan_pb_type2_stringlen.o scan_longlong.o scan_httpdate.o scan_pb_type5_fixed32.o scan_utf8_sem.o scan_ulongn.o scan_8int.o scan_8longlong.o scan_xlonglong.o scan_longn.o scan_xshort.o scan_pb_tag.o scan_pb_type1_double.o scan_netstring.o scan_8longn.o scan_plusminus.o scan_nonwhitenskip.o scan_charsetnskip.o scan_ushort.o scan_int.o scan_iso8601.o scan_noncharsetnskip.o scan_varint.o scan_fromhex.o scan_pb_type5_float.o scan_short.o scan_xlong.o
ranlib scan.a
gcc -c str/str_rchr.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_chr.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_len.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_diff.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_copy.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_start.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_diffn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru str.a str_rchr.o str_chr.o str_len.o str_diff.o str_copy.o str_start.o str_diffn.o
ranlib str.a
gcc -c uint/uint16_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint16_read_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_pack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_pack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_pack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_pack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_unpack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_unpack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_unpack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_unpack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_read_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_read_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint16_pack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint16_pack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint16_unpack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint16_unpack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru uint.a uint16_read.o uint16_read_big.o uint32_pack.o uint32_pack_big.o uint64_pack.o uint64_pack_big.o uint32_unpack.o uint32_unpack_big.o uint64_unpack.o uint64_unpack_big.o uint32_read.o uint32_read_big.o uint64_read.o uint64_read_big.o uint16_pack.o uint16_pack_big.o uint16_unpack.o uint16_unpack_big.o
ranlib uint.a
gcc -c open/readclose.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/open_excl.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/open_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/open_write.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/open_rw.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/open_append.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/open_trunc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/openreadclose.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru open.a readclose.o open_excl.o open_read.o open_write.o open_rw.o open_append.o open_trunc.o openreadclose.o
ranlib open.a
gcc -c stralloc/stralloc_cat.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_copyb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_catm_internal.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_cats.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_diffs.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_catb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_catulong0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_copys.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_diff.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_ready.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_init.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_readyplus.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_copy.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_append.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_catlong0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_chop.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_chomp.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_zero.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_starts.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru stralloc.a stralloc_cat.o stralloc_copyb.o stralloc_catm_internal.o stralloc_cats.o stralloc_diffs.o stralloc_catb.o stralloc_free.o stralloc_catulong0.o stralloc_copys.o stralloc_diff.o stralloc_ready.o stralloc_init.o stralloc_readyplus.o stralloc_copy.o stralloc_append.o stralloc_catlong0.o stralloc_chop.o stralloc_chomp.o stralloc_zero.o stralloc_starts.o
ranlib stralloc.a
gcc -c unix/ndelay_off.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f select.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trysysel.c >/dev/null 2>&1; then cp select.h2 select.h; else cp select.h1 select.h; fi
rm -f trysysel.o
gcc -c unix/iopause.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c unix/ndelay_on.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c unix/winsock2errno.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru unix.a ndelay_off.o iopause.o ndelay_on.o winsock2errno.o
ranlib unix.a
gcc -c socket/socket_quickack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_fastopen_connect4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcleave4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/fmt_ip6ifc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_bind4_reuse.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f haveip6.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryip6.c >/dev/null 2>&1; then echo "#define LIBC_HAS_IP6"; fi > haveip6.h
rm -f tryip6.o
gcc -c socket/socket_mchopcount6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f havesl.h
if !  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o t trysl.c >/dev/null 2>&1; then echo "typedef int socklen_t;"; fi > havesl.h
rm -f t
gcc -c socket/socket_local4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_v6any.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_remote4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_sctp6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_tcp6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_listen.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_sctp4b.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f havescope.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryscope.c >/dev/null 2>&1; then echo "#define LIBC_HAS_SCOPE_ID"; fi > havescope.h
rm -f tryscope.o
gcc -c socket/socket_local6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_tcp4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_tcp4b.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcttl4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_remote6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/scan_ip6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/fmt_ip4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcjoin6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/init.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/fmt_ip6if.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_accept4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/scan_ip6if.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_bind6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f haven2i.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o t tryn2i.c >/dev/null 2>&1; then echo "#define HAVE_N2I"; fi > haven2i.h
rm -f t
gcc -c socket/socket_getifidx.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_send4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_udp6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_broadcast.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_noipv6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_connect4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_fastopen.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcloop4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_tcp6b.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_v6loopback.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/scan_ip6_flat.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_connected.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_tryreservein.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_bind6_reuse.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_v4mappedprefix.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcloop6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/fmt_ip6_flat.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/fmt_ip6c.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_ip4loopback.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_sctp4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_deferaccept.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcjoin4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_recv6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_accept6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/scan_ip4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_bind4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_recv4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_fastopen_connect6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_getifname.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_udp4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/fmt_ip6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_connect6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_sctp6b.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcleave6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_send6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru socket.a socket_quickack.o socket_fastopen_connect4.o socket_mcleave4.o fmt_ip6ifc.o socket_bind4_reuse.o socket_mchopcount6.o socket_local4.o socket_v6any.o socket_remote4.o socket_sctp6.o socket_tcp6.o socket_listen.o socket_sctp4b.o socket_local6.o socket_tcp4.o socket_tcp4b.o socket_mcttl4.o socket_remote6.o scan_ip6.o fmt_ip4.o socket_mcjoin6.o init.o fmt_ip6if.o socket_accept4.o scan_ip6if.o socket_bind6.o socket_getifidx.o socket_send4.o socket_udp6.o socket_broadcast.o socket_noipv6.o socket_connect4.o socket_fastopen.o socket_mcloop4.o socket_tcp6b.o socket_v6loopback.o scan_ip6_flat.o socket_connected.o socket_tryreservein.o socket_bind6_reuse.o socket_v4mappedprefix.o socket_mcloop6.o fmt_ip6_flat.o fmt_ip6c.o socket_ip4loopback.o socket_sctp4.o socket_deferaccept.o socket_mcjoin4.o socket_recv6.o socket_accept6.o scan_ip4.o socket_bind4.o socket_recv4.o socket_fastopen_connect6.o socket_getifname.o socket_udp4.o fmt_ip6.o socket_connect6.o socket_sctp6b.o socket_mcleave6.o socket_send6.o
ranlib socket.a
gcc -c buffer/buffer_putnlflush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_init_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_puts.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_getline_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_new_token_sa_pred.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_feed.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_puterror.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_put8long.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_iam.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_stubborn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_puts.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_getc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putsalign.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_0small.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_stubborn2.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putsa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putsaflush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putulong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_1.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putflush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_fromsa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_fromarray.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_getline.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_new_token_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_warnsys.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putsflush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_mmapread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putlonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_init.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_puterror2.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_peek.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_token_sa_pred.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_frombuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putulonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putspace.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_put.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_tosa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putalign.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_2.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_token.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putxlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_getnewline_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_seek.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_1small.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_info.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_close.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_token_pred.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putm_internal.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_flush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putm_internal_flush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_getn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_warn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_infosys.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_token_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_write.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_munmap.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru buffer.a buffer_putnlflush.o buffer_init_free.o buffer_puts.o buffer_getline_sa.o buffer_get_new_token_sa_pred.o buffer_feed.o buffer_puterror.o buffer_putlong.o buffer_put8long.o errmsg_iam.o buffer_stubborn.o errmsg_puts.o buffer_getc.o buffer_putsalign.o buffer_0small.o buffer_free.o buffer_stubborn2.o buffer_putsa.o buffer_putsaflush.o buffer_get.o buffer_putulong.o buffer_1.o buffer_putflush.o buffer_fromsa.o buffer_fromarray.o buffer_getline.o buffer_get_new_token_sa.o errmsg_warnsys.o buffer_putsflush.o buffer_mmapread.o buffer_putlonglong.o buffer_init.o buffer_puterror2.o buffer_peek.o buffer_get_token_sa_pred.o buffer_frombuf.o buffer_putulonglong.o buffer_putspace.o buffer_put.o buffer_tosa.o buffer_putalign.o buffer_2.o buffer_get_token.o buffer_putxlong.o buffer_getnewline_sa.o buffer_seek.o buffer_1small.o errmsg_info.o buffer_close.o buffer_get_token_pred.o buffer_putm_internal.o buffer_flush.o buffer_putm_internal_flush.o buffer_getn.o errmsg_warn.o errmsg_infosys.o buffer_0.o buffer_get_token_sa.o errmsg_write.o buffer_munmap.o
ranlib buffer.a
gcc -c mmap/mmap_readat.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mmap/mmap_shared.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mmap/mmap_private.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mmap/mmap_unmap.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mmap/mmap_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru mmap.a mmap_readat.o mmap_shared.o mmap_private.o mmap_unmap.o mmap_read.o
ranlib mmap.a
gcc -c taia/taia_half.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_tai.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_approx.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_pack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_frac.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_uint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_less.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_unpack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_sub.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_add.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_now.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_addsec.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru taia.a taia_half.o taia_tai.o taia_approx.o taia_pack.o taia_frac.o taia_uint.o taia_less.o taia_unpack.o taia_sub.o taia_add.o taia_now.o taia_addsec.o
ranlib taia.a
gcc -c tai/tai_uint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c tai/tai_unpack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c tai/tai_sub.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c tai/tai_add.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c tai/tai_now.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c tai/tai_pack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru tai.a tai_uint.o tai_unpack.o tai_sub.o tai_add.o tai_now.o tai_pack.o
ranlib tai.a
gcc -c dns/dns_resolve.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_dtda.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_sortip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_transmit.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_rcrw.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_ipq6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_nd6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_mx.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_name.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_packet.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_rcip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_txt.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_ip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_dfd.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_nd.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_ip6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_domain.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_ipq.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_random.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_sortip6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru dns.a dns_resolve.o dns_dtda.o dns_sortip.o dns_transmit.o dns_rcrw.o dns_ipq6.o dns_nd6.o dns_mx.o dns_name.o dns_packet.o dns_rcip.o dns_txt.o dns_ip.o dns_dfd.o dns_nd.o dns_ip6.o dns_domain.o dns_ipq.o dns_random.o dns_sortip6.o
ranlib dns.a
gcc -c case/case_diffs.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c case/case_starts.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c case/case_diffb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c case/case_lowerb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c case/case_lowers.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru case.a case_diffs.o case_starts.o case_diffb.o case_lowerb.o case_lowers.o
ranlib case.a
gcc -c mult/range_str4inbuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/imult16.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/range_strinbuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/range_arrayinbuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/umult32.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/umult16.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/imult32.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/umult64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/imult64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/range_str2inbuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru mult.a range_str4inbuf.o imult16.o range_strinbuf.o range_arrayinbuf.o umult32.o umult16.o imult32.o umult64.o imult64.o range_str2inbuf.o
ranlib mult.a
gcc -c array/array_length.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/iarray_init.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_cats.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/iarray_allocate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_cat.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_cat0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_truncate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/iarray_length.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_equal.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_get.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_fail.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_start.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_bytes.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_trunc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_cate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_catb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_reset.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_allocate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/iarray_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_cats0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/iarray_get.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru array.a array_length.o iarray_init.o array_cats.o iarray_allocate.o array_cat.o array_cat0.o array_truncate.o iarray_length.o array_equal.o array_get.o array_fail.o array_start.o array_bytes.o array_trunc.o array_cate.o array_catb.o array_reset.o array_allocate.o iarray_free.o array_cats0.o iarray_get.o
ranlib array.a
rm -f haveepoll.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o tryepoll tryepoll.c >/dev/null 2>&1; then echo "#define HAVE_EPOLL 1"; else \
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o tryepoll tryepoll.c -lepoll >/dev/null 2>&1; then echo "#define HAVE_EPOLL 2"; fi; fi > haveepoll.h
rm -f tryepoll
rm -f havekqueue.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trykqueue.c >/dev/null 2>&1; then echo "#define HAVE_KQUEUE"; fi > havekqueue.h
rm -f trykqueue.o
rm -f havesigio.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trysigio.c >/dev/null 2>&1; then echo "#define HAVE_SIGIO"; fi > havesigio.h
rm -f trysigio.o
rm -f havebsdsf.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trybsdsf trybsdsf.c >/dev/null 2>&1; then echo "#define HAVE_BSDSENDFILE"; fi > havebsdsf.h
rm -f trybsdsf.o trybsdsf
rm -f havedevpoll.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trydevpoll.c >/dev/null 2>&1; then echo "#define HAVE_DEVPOLL"; fi > havedevpoll.h
rm -f trydevpoll.o
rm -f havesendfile.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trysendfile.c >/dev/null 2>&1; then echo "#define HAVE_SENDFILE"; fi > havesendfile.h
rm -f trysendfile.o
gcc -c io/io_trywrite.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_block.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addbuf_internal.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_write.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_adds_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_sendfile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_wantread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_socketpair.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_readfile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_timedout.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_timeouted.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iom_add.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_dontwantwrite.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_prefetch.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_waituntil.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iom_abort.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_pipe.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_send.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_passfd.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
io/io_passfd.c: In function ‘io_passfd’:
io/io_passfd.c:61:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   *((int*)CMSG_DATA(cmsg))=fd;
   ^
gcc -c io/io_wait.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_eagain.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_waitwrite.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_tryreadtimeout.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_finishandshutdown.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_appendfile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_canwrite.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_adds.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_waituntil2.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_setcookie.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_receivefd.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
io/io_receivefd.c: In function ‘io_receivefd’:
io/io_receivefd.c:61:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   *((int*)CMSG_DATA(h))=-1;
   ^
io/io_receivefd.c:75:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   return *((int*)CMSG_DATA(h));
   ^
gcc -c io/io_waitread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_eagain_write.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_close.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addbuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_fd.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_createfile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_timeout.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iom_wait.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_canread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_eagain_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addfile_close.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_reset.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_check.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_trywritetimeout.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_new.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addfile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f havepread.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trypread.c >/dev/null 2>&1; then echo "#define HAVE_PREAD"; fi > havepread.h
rm -f trypread.o
gcc -c io/io_mmapwritefile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_sigpipe.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_bytesleft.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_readwritefile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_getcookie.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_tryread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_dontwantread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_wantwrite.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_closeonexec.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addbuf_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addbuf_munmap.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_nonblock.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_debugstring.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iom_init.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru io.a io_trywrite.o io_block.o iob_addbuf_internal.o iob_write.o iob_adds_free.o io_sendfile.o io_wantread.o io_socketpair.o io_readfile.o io_timedout.o io_timeouted.o iom_add.o io_dontwantwrite.o iob_prefetch.o io_waituntil.o iom_abort.o io_pipe.o iob_send.o io_passfd.o io_wait.o io_eagain.o io_waitwrite.o io_tryreadtimeout.o iob_free.o io_finishandshutdown.o io_appendfile.o io_canwrite.o iob_adds.o io_waituntil2.o io_setcookie.o io_receivefd.o io_waitread.o io_eagain_write.o io_close.o iob_addbuf.o io_fd.o io_createfile.o io_timeout.o iom_wait.o io_canread.o io_eagain_read.o iob_addfile_close.o iob_reset.o io_check.o io_trywritetimeout.o iob_new.o iob_addfile.o io_mmapwritefile.o io_sigpipe.o iob_bytesleft.o io_readwritefile.o io_getcookie.o io_tryread.o io_dontwantread.o io_wantwrite.o io_closeonexec.o iob_addbuf_free.o iob_addbuf_munmap.o io_nonblock.o io_debugstring.o iom_init.o
ranlib io.a
gcc -c textcode/scan_to_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_base64url.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_base64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_ldapescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_ldapescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_to_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_cescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_base64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_tofrom_array.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_uuencoded.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_cescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_base64url.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_tofrom_array.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_html_tagarg.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_to_array.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_yenc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_quotedprintable.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_ldapescape2.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_html.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_yenc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
./ent
nodes=9853, datasize=8115
actually used: 9853 nodes, 8115 bytes data
gcc -c textcode/scan_html.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_jsonescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_quotedprintable.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_xml.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/base64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_hexdump.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_jsonescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_foldwhitespace.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_urlencoded.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_hexdump.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_to_array.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_urlencoded.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/base64url.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_uuencoded.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru textcode.a scan_to_sa.o scan_base64url.o scan_base64.o fmt_ldapescape.o scan_ldapescape.o fmt_to_sa.o scan_cescape.o fmt_base64.o scan_tofrom_array.o fmt_uuencoded.o fmt_cescape.o fmt_base64url.o fmt_tofrom_array.o fmt_html_tagarg.o fmt_to_array.o scan_yenc.o scan_quotedprintable.o fmt_ldapescape2.o fmt_html.o fmt_yenc.o scan_html.o scan_jsonescape.o fmt_quotedprintable.o fmt_xml.o base64.o scan_hexdump.o fmt_jsonescape.o fmt_foldwhitespace.o scan_urlencoded.o fmt_hexdump.o scan_to_array.o fmt_urlencoded.o base64url.o scan_uuencoded.o
ranlib textcode.a
gcc -c cdb/cdb_hash.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c cdb/cdb_make.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c cdb/cdb_traverse.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c cdb/cdb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru cdb.a cdb_hash.o cdb_make.o cdb_traverse.o cdb.o
ranlib cdb.a
gcc -c critbit/critbit.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru critbit.a critbit.o
ranlib critbit.a
ar cru libowfat.a dns_resolve.o dns_dtda.o dns_sortip.o dns_transmit.o dns_rcrw.o dns_ipq6.o dns_nd6.o dns_mx.o dns_name.o dns_packet.o dns_rcip.o dns_txt.o dns_ip.o dns_dfd.o dns_nd.o dns_ip6.o dns_domain.o dns_ipq.o dns_random.o dns_sortip6.o byte_chr.o byte_copy.o byte_zero.o byte_copyr.o byte_equal_notimingattack.o byte_diff.o byte_rchr.o fmt_human.o fmt_escapecharxml.o fmt_pb_type5_float.o fmt_netstring.o fmt_str.o fmt_pad.o fmt_asn1dertag.o fmt_pb_float.o fmt_xlonglong.o fmt_pb_double.o fmt_xlong.o fmt_ulong0.o fmt_pb_type0_sint.o fmt_pb_type1_fixed64.o fmt_strm_internal.o fmt_fill.o fmt_varint.o fmt_escapecharquotedprintable.o fmt_asn1derlength.o fmt_humank.o fmt_escapecharc.o fmt_utf8.o fmt_long.o fmt_pb_type5_fixed32.o fmt_xmlescape.o fmt_escapecharjson.o fmt_ulong.o fmt_pb_string.o fmt_pb_type2_string.o fmt_pb_tag.o fmt_escapecharhtml.o fmt_httpdate.o fmt_longlong.o fmt_8long.o fmt_pb_int.o fmt_strn.o fmt_pb_sint.o fmt_pb_type1_double.o fmt_double.o fmt_tohex.o fmt_plusminus.o fmt_minus.o fmt_escapecharquotedprintableutf8.o fmt_8longlong.o fmt_ulonglong.o fmt_iso8601.o scan_asn1dertag.o scan_pb_type0_sint.o scan_xlongn.o scan_ulong.o scan_pb_type1_fixed64.o scan_xint.o scan_uint.o scan_whitenskip.o scan_asn1derlength.o scan_ulonglong.o scan_utf8.o scan_long.o scan_8long.o scan_8short.o scan_double.o scan_pb_type2_stringlen.o scan_longlong.o scan_httpdate.o scan_pb_type5_fixed32.o scan_utf8_sem.o scan_ulongn.o scan_8int.o scan_8longlong.o scan_xlonglong.o scan_longn.o scan_xshort.o scan_pb_tag.o scan_pb_type1_double.o scan_netstring.o scan_8longn.o scan_plusminus.o scan_nonwhitenskip.o scan_charsetnskip.o scan_ushort.o scan_int.o scan_iso8601.o scan_noncharsetnskip.o scan_varint.o scan_fromhex.o scan_pb_type5_float.o scan_short.o scan_xlong.o str_rchr.o str_chr.o str_len.o str_diff.o str_copy.o str_start.o str_diffn.o uint16_read.o uint16_read_big.o uint32_pack.o uint32_pack_big.o uint64_pack.o uint64_pack_big.o uint32_unpack.o uint32_unpack_big.o uint64_unpack.o uint64_unpack_big.o uint32_read.o uint32_read_big.o uint64_read.o uint64_read_big.o uint16_pack.o uint16_pack_big.o uint16_unpack.o uint16_unpack_big.o readclose.o open_excl.o open_read.o open_write.o open_rw.o open_append.o open_trunc.o openreadclose.o stralloc_cat.o stralloc_copyb.o stralloc_catm_internal.o stralloc_cats.o stralloc_diffs.o stralloc_catb.o stralloc_free.o stralloc_catulong0.o stralloc_copys.o stralloc_diff.o stralloc_ready.o stralloc_init.o stralloc_readyplus.o stralloc_copy.o stralloc_append.o stralloc_catlong0.o stralloc_chop.o stralloc_chomp.o stralloc_zero.o stralloc_starts.o ndelay_off.o iopause.o ndelay_on.o winsock2errno.o socket_quickack.o socket_fastopen_connect4.o socket_mcleave4.o fmt_ip6ifc.o socket_bind4_reuse.o socket_mchopcount6.o socket_local4.o socket_v6any.o socket_remote4.o socket_sctp6.o socket_tcp6.o socket_listen.o socket_sctp4b.o socket_local6.o socket_tcp4.o socket_tcp4b.o socket_mcttl4.o socket_remote6.o scan_ip6.o fmt_ip4.o socket_mcjoin6.o init.o fmt_ip6if.o socket_accept4.o scan_ip6if.o socket_bind6.o socket_getifidx.o socket_send4.o socket_udp6.o socket_broadcast.o socket_noipv6.o socket_connect4.o socket_fastopen.o socket_mcloop4.o socket_tcp6b.o socket_v6loopback.o scan_ip6_flat.o socket_connected.o socket_tryreservein.o socket_bind6_reuse.o socket_v4mappedprefix.o socket_mcloop6.o fmt_ip6_flat.o fmt_ip6c.o socket_ip4loopback.o socket_sctp4.o socket_deferaccept.o socket_mcjoin4.o socket_recv6.o socket_accept6.o scan_ip4.o socket_bind4.o socket_recv4.o socket_fastopen_connect6.o socket_getifname.o socket_udp4.o fmt_ip6.o socket_connect6.o socket_sctp6b.o socket_mcleave6.o socket_send6.o buffer_putnlflush.o buffer_init_free.o buffer_puts.o buffer_getline_sa.o buffer_get_new_token_sa_pred.o buffer_feed.o buffer_puterror.o buffer_putlong.o buffer_put8long.o errmsg_iam.o buffer_stubborn.o errmsg_puts.o buffer_getc.o buffer_putsalign.o buffer_0small.o buffer_free.o buffer_stubborn2.o buffer_putsa.o buffer_putsaflush.o buffer_get.o buffer_putulong.o buffer_1.o buffer_putflush.o buffer_fromsa.o buffer_fromarray.o buffer_getline.o buffer_get_new_token_sa.o errmsg_warnsys.o buffer_putsflush.o buffer_mmapread.o buffer_putlonglong.o buffer_init.o buffer_puterror2.o buffer_peek.o buffer_get_token_sa_pred.o buffer_frombuf.o buffer_putulonglong.o buffer_putspace.o buffer_put.o buffer_tosa.o buffer_putalign.o buffer_2.o buffer_get_token.o buffer_putxlong.o buffer_getnewline_sa.o buffer_seek.o buffer_1small.o errmsg_info.o buffer_close.o buffer_get_token_pred.o buffer_putm_internal.o buffer_flush.o buffer_putm_internal_flush.o buffer_getn.o errmsg_warn.o errmsg_infosys.o buffer_0.o buffer_get_token_sa.o errmsg_write.o buffer_munmap.o mmap_readat.o mmap_shared.o mmap_private.o mmap_unmap.o mmap_read.o scan_to_sa.o scan_base64url.o scan_base64.o fmt_ldapescape.o scan_ldapescape.o fmt_to_sa.o scan_cescape.o fmt_base64.o scan_tofrom_array.o fmt_uuencoded.o fmt_cescape.o fmt_base64url.o fmt_tofrom_array.o fmt_html_tagarg.o fmt_to_array.o scan_yenc.o scan_quotedprintable.o fmt_ldapescape2.o fmt_html.o fmt_yenc.o scan_html.o scan_jsonescape.o fmt_quotedprintable.o fmt_xml.o base64.o scan_hexdump.o fmt_jsonescape.o fmt_foldwhitespace.o scan_urlencoded.o fmt_hexdump.o scan_to_array.o fmt_urlencoded.o base64url.o scan_uuencoded.o taia_half.o taia_tai.o taia_approx.o taia_pack.o taia_frac.o taia_uint.o taia_less.o taia_unpack.o taia_sub.o taia_add.o taia_now.o taia_addsec.o tai_uint.o tai_unpack.o tai_sub.o tai_add.o tai_now.o tai_pack.o case_diffs.o case_starts.o case_diffb.o case_lowerb.o case_lowers.o array_length.o iarray_init.o array_cats.o iarray_allocate.o array_cat.o array_cat0.o array_truncate.o iarray_length.o array_equal.o array_get.o array_fail.o array_start.o array_bytes.o array_trunc.o array_cate.o array_catb.o array_reset.o array_allocate.o iarray_free.o array_cats0.o iarray_get.o range_str4inbuf.o imult16.o range_strinbuf.o range_arrayinbuf.o umult32.o umult16.o imult32.o umult64.o imult64.o range_str2inbuf.o io_trywrite.o io_block.o iob_addbuf_internal.o iob_write.o iob_adds_free.o io_sendfile.o io_wantread.o io_socketpair.o io_readfile.o io_timedout.o io_timeouted.o iom_add.o io_dontwantwrite.o iob_prefetch.o io_waituntil.o iom_abort.o io_pipe.o iob_send.o io_passfd.o io_wait.o io_eagain.o io_waitwrite.o io_tryreadtimeout.o iob_free.o io_finishandshutdown.o io_appendfile.o io_canwrite.o iob_adds.o io_waituntil2.o io_setcookie.o io_receivefd.o io_waitread.o io_eagain_write.o io_close.o iob_addbuf.o io_fd.o io_createfile.o io_timeout.o iom_wait.o io_canread.o io_eagain_read.o iob_addfile_close.o iob_reset.o io_check.o io_trywritetimeout.o iob_new.o iob_addfile.o io_mmapwritefile.o io_sigpipe.o iob_bytesleft.o io_readwritefile.o io_getcookie.o io_tryread.o io_dontwantread.o io_wantwrite.o io_closeonexec.o iob_addbuf_free.o iob_addbuf_munmap.o io_nonblock.o io_debugstring.o iom_init.o cdb_hash.o cdb_make.o cdb_traverse.o cdb.o critbit.o
ranlib libowfat.a
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trysocket trysocket.c >/dev/null 2>&1; then echo ""; else \
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trysocket trysocket.c -lsocket >/dev/null 2>&1; then echo "-lsocket"; else \
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trysocket trysocket.c -lsocket -lnsl >/dev/null 2>&1; then echo "-lsocket -lnsl"; \
fi; fi; fi > blah
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trysocket trysendfile.c `cat blah`>/dev/null 2>&1; then cat blah; else \
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trysocket trysendfile.c -lsendfile `cat blah` >/dev/null 2>&1; then echo "-lsendfile"; cat blah; \
fi; fi > libsocket
rm -f blah trysocket
gcc -c t.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -g -o t t.o libowfat.a `cat libsocket` -lpthread
[root@tracker libowfat]#

libowfat 0.31

rm -f haveuint128.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryuint128.c >/dev/null 2>&1; then echo "#define HAVE_UINT128"; fi > haveuint128.h
rm -f tryuint128.o
gcc -g -o ent ent.c -I.
gcc -c byte/byte_chr.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_copy.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_copyr.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_diff.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_equal_notimingattack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_rchr.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
gcc -c byte/byte_zero.c -pipe -W -Wall -Wextra  -D_REENTRANT -O3  -I.
ar cru byte.a byte_chr.o byte_copy.o byte_copyr.o byte_diff.o byte_equal_notimingattack.o byte_rchr.o byte_zero.o
ranlib byte.a
gcc -c fmt/fmt_8long.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_8longlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_asn1derlength.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_asn1dertag.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_double.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharhtml.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharjson.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharquotedprintable.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharquotedprintableutf8.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_escapecharxml.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_fill.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_httpdate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_human.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_humank.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_iso8601.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_long.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_longlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_minus.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_netstring.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pad.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_double.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_float.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_int.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_sint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_string.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_tag.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type0_sint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type1_double.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type1_fixed64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type2_string.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type5_fixed32.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_pb_type5_float.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_plusminus.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_str.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_strm_internal.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_strn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_tohex.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_ulong0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_ulong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_ulonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_utf8.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_varint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f haveinline.h
if !  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryinline.c >/dev/null 2>&1; then echo "#define inline"; fi > haveinline.h
rm -f tryinline.o
gcc -c fmt/fmt_xlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_xlonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c fmt/fmt_xmlescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru fmt.a fmt_8long.o fmt_8longlong.o fmt_asn1derlength.o fmt_asn1dertag.o fmt_double.o fmt_escapecharc.o fmt_escapecharhtml.o fmt_escapecharjson.o fmt_escapecharquotedprintable.o fmt_escapecharquotedprintableutf8.o fmt_escapecharxml.o fmt_fill.o fmt_httpdate.o fmt_human.o fmt_humank.o fmt_iso8601.o fmt_long.o fmt_longlong.o fmt_minus.o fmt_netstring.o fmt_pad.o fmt_pb_double.o fmt_pb_float.o fmt_pb_int.o fmt_pb_sint.o fmt_pb_string.o fmt_pb_tag.o fmt_pb_type0_sint.o fmt_pb_type1_double.o fmt_pb_type1_fixed64.o fmt_pb_type2_string.o fmt_pb_type5_fixed32.o fmt_pb_type5_float.o fmt_plusminus.o fmt_str.o fmt_strm_internal.o fmt_strn.o fmt_tohex.o fmt_ulong0.o fmt_ulong.o fmt_ulonglong.o fmt_utf8.o fmt_varint.o fmt_xlong.o fmt_xlonglong.o fmt_xmlescape.o
ranlib fmt.a
gcc -c scan/scan_8int.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_8long.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_8longlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_8longn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_8short.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_asn1derlength.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_asn1dertag.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_charsetnskip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_double.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_fromhex.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_httpdate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_int.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_iso8601.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_long.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_longlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_longn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_netstring.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_noncharsetnskip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_nonwhitenskip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_tag.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type0_sint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type1_double.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type1_fixed64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type2_stringlen.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type5_fixed32.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_pb_type5_float.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_plusminus.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_short.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_uint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_ulong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_ulonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_ulongn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_ushort.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_utf8.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_varint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_whitenskip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_xint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_xlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_xlonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_xlongn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c scan/scan_xshort.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru scan.a scan_8int.o scan_8long.o scan_8longlong.o scan_8longn.o scan_8short.o scan_asn1derlength.o scan_asn1dertag.o scan_charsetnskip.o scan_double.o scan_fromhex.o scan_httpdate.o scan_int.o scan_iso8601.o scan_long.o scan_longlong.o scan_longn.o scan_netstring.o scan_noncharsetnskip.o scan_nonwhitenskip.o scan_pb_tag.o scan_pb_type0_sint.o scan_pb_type1_double.o scan_pb_type1_fixed64.o scan_pb_type2_stringlen.o scan_pb_type5_fixed32.o scan_pb_type5_float.o scan_plusminus.o scan_short.o scan_uint.o scan_ulong.o scan_ulonglong.o scan_ulongn.o scan_ushort.o scan_utf8.o scan_varint.o scan_whitenskip.o scan_xint.o scan_xlong.o scan_xlonglong.o scan_xlongn.o scan_xshort.o
ranlib scan.a
gcc -c str/str_chr.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_copy.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_diff.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_diffn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_len.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_rchr.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c str/str_start.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru str.a str_chr.o str_copy.o str_diff.o str_diffn.o str_len.o str_rchr.o str_start.o
ranlib str.a
gcc -c uint/uint16_pack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint16_pack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint16_read_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint16_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint16_unpack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint16_unpack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_pack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_pack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_read_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_unpack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint32_unpack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_pack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_pack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_read_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_unpack_big.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c uint/uint64_unpack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru uint.a uint16_pack_big.o uint16_pack.o uint16_read_big.o uint16_read.o uint16_unpack_big.o uint16_unpack.o uint32_pack_big.o uint32_pack.o uint32_read_big.o uint32_read.o uint32_unpack_big.o uint32_unpack.o uint64_pack_big.o uint64_pack.o uint64_read_big.o uint64_read.o uint64_unpack_big.o uint64_unpack.o
ranlib uint.a
gcc -c open/open_append.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/open_excl.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/open_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/openreadclose.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/open_rw.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/open_trunc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/open_write.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c open/readclose.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru open.a open_append.o open_excl.o open_read.o openreadclose.o open_rw.o open_trunc.o open_write.o readclose.o
ranlib open.a
gcc -c stralloc/stralloc_append.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_catb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_cat.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_catlong0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_catm_internal.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_cats.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_catulong0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_chomp.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_chop.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_copyb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_copy.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_copys.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_diff.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_diffs.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_init.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_ready.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_readyplus.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_starts.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c stralloc/stralloc_zero.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru stralloc.a stralloc_append.o stralloc_catb.o stralloc_cat.o stralloc_catlong0.o stralloc_catm_internal.o stralloc_cats.o stralloc_catulong0.o stralloc_chomp.o stralloc_chop.o stralloc_copyb.o stralloc_copy.o stralloc_copys.o stralloc_diff.o stralloc_diffs.o stralloc_free.o stralloc_init.o stralloc_ready.o stralloc_readyplus.o stralloc_starts.o stralloc_zero.o
ranlib stralloc.a
rm -f iopause.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o t trypoll.c >/dev/null 2>&1; then cp iopause.h2 iopause.h; else cp iopause.h1 iopause.h; fi
rm -f t
rm -f select.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trysysel.c >/dev/null 2>&1; then cp select.h2 select.h; else cp select.h1 select.h; fi
rm -f trysysel.o
gcc -c unix/iopause.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c unix/ndelay_off.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c unix/ndelay_on.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c unix/winsock2errno.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru unix.a iopause.o ndelay_off.o ndelay_on.o winsock2errno.o
ranlib unix.a
gcc -c socket/fmt_ip4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/fmt_ip6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/fmt_ip6c.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/fmt_ip6_flat.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/fmt_ip6if.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/fmt_ip6ifc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/init.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/scan_ip4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/scan_ip6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/scan_ip6_flat.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f havealloca.h
echo "#include <stdlib.h>" > havealloca.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryalloca.c -DA >/dev/null 2>&1; then echo "#include <alloca.h>"; fi >> havealloca.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryalloca.c -DB >/dev/null 2>&1; then echo "#include <malloc.h>"; fi >> havealloca.h
rm -f tryalloca.o
gcc -c socket/scan_ip6if.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f havesl.h
if !  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o t trysl.c >/dev/null 2>&1; then echo "typedef int socklen_t;"; fi > havesl.h
rm -f t
gcc -c socket/socket_accept4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f haveip6.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryip6.c >/dev/null 2>&1; then echo "#define LIBC_HAS_IP6"; fi > haveip6.h
rm -f tryip6.o
rm -f havescope.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c tryscope.c >/dev/null 2>&1; then echo "#define LIBC_HAS_SCOPE_ID"; fi > havescope.h
rm -f tryscope.o
gcc -c socket/socket_accept6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_bind4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_bind4_reuse.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_bind6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_bind6_reuse.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_broadcast.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_connect4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_connect6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_connected.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_deferaccept.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_fastopen.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
socket/socket_fastopen.c: 在函数‘socket_fastopen’中:
socket/socket_fastopen.c:14: 警告:未使用的参数‘s’
gcc -c socket/socket_fastopen_connect4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_fastopen_connect6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f haven2i.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o t tryn2i.c >/dev/null 2>&1; then echo "#define HAVE_N2I"; fi > haven2i.h
rm -f t
gcc -c socket/socket_getifidx.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_getifname.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_ip4loopback.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_listen.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_local4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_local6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mchopcount6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcjoin4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcjoin6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcleave4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcleave6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcloop4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcloop6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_mcttl4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_noipv6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_quickack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_recv4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_recv6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_remote4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_remote6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_sctp4b.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_sctp4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_sctp6b.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_sctp6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_send4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_send6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_tcp4b.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_tcp4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_tcp6b.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_tcp6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_tryreservein.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_udp4.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_udp6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_v4mappedprefix.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_v6any.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c socket/socket_v6loopback.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru socket.a fmt_ip4.o fmt_ip6.o fmt_ip6c.o fmt_ip6_flat.o fmt_ip6if.o fmt_ip6ifc.o init.o scan_ip4.o scan_ip6.o scan_ip6_flat.o scan_ip6if.o socket_accept4.o socket_accept6.o socket_bind4.o socket_bind4_reuse.o socket_bind6.o socket_bind6_reuse.o socket_broadcast.o socket_connect4.o socket_connect6.o socket_connected.o socket_deferaccept.o socket_fastopen.o socket_fastopen_connect4.o socket_fastopen_connect6.o socket_getifidx.o socket_getifname.o socket_ip4loopback.o socket_listen.o socket_local4.o socket_local6.o socket_mchopcount6.o socket_mcjoin4.o socket_mcjoin6.o socket_mcleave4.o socket_mcleave6.o socket_mcloop4.o socket_mcloop6.o socket_mcttl4.o socket_noipv6.o socket_quickack.o socket_recv4.o socket_recv6.o socket_remote4.o socket_remote6.o socket_sctp4b.o socket_sctp4.o socket_sctp6b.o socket_sctp6.o socket_send4.o socket_send6.o socket_tcp4b.o socket_tcp4.o socket_tcp6b.o socket_tcp6.o socket_tryreservein.o socket_udp4.o socket_udp6.o socket_v4mappedprefix.o socket_v6any.o socket_v6loopback.o
ranlib socket.a
gcc -c buffer/buffer_0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_0small.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_1.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_1small.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_2.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_close.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_feed.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_flush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_fromarray.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_frombuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_fromsa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_getc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_getline.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_getline_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_getn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_getnewline_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_new_token_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_new_token_sa_pred.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_token.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_token_pred.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_token_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_get_token_sa_pred.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_init.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_init_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_mmapread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_munmap.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_peek.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_put8long.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putalign.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_put.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_puterror2.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_puterror.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putflush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putlonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putm_internal.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putm_internal_flush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putnlflush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putsa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putsaflush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putsalign.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_puts.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putsflush.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putspace.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putulong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putulonglong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_putxlong.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_seek.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_stubborn2.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_stubborn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/buffer_tosa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_iam.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_info.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_infosys.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_puts.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_warn.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_warnsys.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c buffer/errmsg_write.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru buffer.a buffer_0.o buffer_0small.o buffer_1.o buffer_1small.o buffer_2.o buffer_close.o buffer_feed.o buffer_flush.o buffer_free.o buffer_fromarray.o buffer_frombuf.o buffer_fromsa.o buffer_get.o buffer_getc.o buffer_getline.o buffer_getline_sa.o buffer_getn.o buffer_getnewline_sa.o buffer_get_new_token_sa.o buffer_get_new_token_sa_pred.o buffer_get_token.o buffer_get_token_pred.o buffer_get_token_sa.o buffer_get_token_sa_pred.o buffer_init.o buffer_init_free.o buffer_mmapread.o buffer_munmap.o buffer_peek.o buffer_put8long.o buffer_putalign.o buffer_put.o buffer_puterror2.o buffer_puterror.o buffer_putflush.o buffer_putlong.o buffer_putlonglong.o buffer_putm_internal.o buffer_putm_internal_flush.o buffer_putnlflush.o buffer_putsa.o buffer_putsaflush.o buffer_putsalign.o buffer_puts.o buffer_putsflush.o buffer_putspace.o buffer_putulong.o buffer_putulonglong.o buffer_putxlong.o buffer_seek.o buffer_stubborn2.o buffer_stubborn.o buffer_tosa.o errmsg_iam.o errmsg_info.o errmsg_infosys.o errmsg_puts.o errmsg_warn.o errmsg_warnsys.o errmsg_write.o
ranlib buffer.a
gcc -c mmap/mmap_private.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mmap/mmap_readat.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mmap/mmap_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mmap/mmap_shared.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mmap/mmap_unmap.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru mmap.a mmap_private.o mmap_readat.o mmap_read.o mmap_shared.o mmap_unmap.o
ranlib mmap.a
gcc -c taia/taia_add.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_addsec.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_approx.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_frac.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_half.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_less.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_now.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_pack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_sub.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_tai.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_uint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c taia/taia_unpack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru taia.a taia_add.o taia_addsec.o taia_approx.o taia_frac.o taia_half.o taia_less.o taia_now.o taia_pack.o taia_sub.o taia_tai.o taia_uint.o taia_unpack.o
ranlib taia.a
gcc -c tai/tai_add.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c tai/tai_now.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c tai/tai_pack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c tai/tai_sub.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c tai/tai_uint.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c tai/tai_unpack.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru tai.a tai_add.o tai_now.o tai_pack.o tai_sub.o tai_uint.o tai_unpack.o
ranlib tai.a
gcc -c dns/dns_dfd.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_domain.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_dtda.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_ip6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_ip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_ipq6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_ipq.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_mx.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_name.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_nd6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_nd.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_packet.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_random.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_rcip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_rcrw.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_resolve.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_sortip6.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_sortip.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_transmit.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c dns/dns_txt.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru dns.a dns_dfd.o dns_domain.o dns_dtda.o dns_ip6.o dns_ip.o dns_ipq6.o dns_ipq.o dns_mx.o dns_name.o dns_nd6.o dns_nd.o dns_packet.o dns_random.o dns_rcip.o dns_rcrw.o dns_resolve.o dns_sortip6.o dns_sortip.o dns_transmit.o dns_txt.o
ranlib dns.a
gcc -c case/case_diffb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c case/case_diffs.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c case/case_lowerb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c case/case_lowers.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c case/case_starts.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru case.a case_diffb.o case_diffs.o case_lowerb.o case_lowers.o case_starts.o
ranlib case.a
gcc -c mult/imult16.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/imult32.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/imult64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/range_arrayinbuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/range_str2inbuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/range_str4inbuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/range_strinbuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/umult16.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/umult32.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c mult/umult64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru mult.a imult16.o imult32.o imult64.o range_arrayinbuf.o range_str2inbuf.o range_str4inbuf.o range_strinbuf.o umult16.o umult32.o umult64.o
ranlib mult.a
gcc -c array/array_allocate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_bytes.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_cat0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_catb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_cat.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_cate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_cats0.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_cats.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_equal.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_fail.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_get.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_length.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_reset.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_start.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_truncate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/array_trunc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/iarray_allocate.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/iarray_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/iarray_get.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/iarray_init.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c array/iarray_length.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru array.a array_allocate.o array_bytes.o array_cat0.o array_catb.o array_cat.o array_cate.o array_cats0.o array_cats.o array_equal.o array_fail.o array_get.o array_length.o array_reset.o array_start.o array_truncate.o array_trunc.o iarray_allocate.o iarray_free.o iarray_get.o iarray_init.o iarray_length.o
ranlib array.a
rm -f haveepoll.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o tryepoll tryepoll.c >/dev/null 2>&1; then echo "#define HAVE_EPOLL 1"; else \
    if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o tryepoll tryepoll.c -lepoll >/dev/null 2>&1; then echo "#define HAVE_EPOLL 2"; fi; fi > haveepoll.h
rm -f tryepoll
rm -f havekqueue.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trykqueue.c >/dev/null 2>&1; then echo "#define HAVE_KQUEUE"; fi > havekqueue.h
rm -f trykqueue.o
rm -f havesigio.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trysigio.c >/dev/null 2>&1; then echo "#define HAVE_SIGIO"; fi > havesigio.h
rm -f trysigio.o
rm -f havebsdsf.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trybsdsf trybsdsf.c >/dev/null 2>&1; then echo "#define HAVE_BSDSENDFILE"; fi > havebsdsf.h
rm -f trybsdsf.o trybsdsf
rm -f havedevpoll.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trydevpoll.c >/dev/null 2>&1; then echo "#define HAVE_DEVPOLL"; fi > havedevpoll.h
rm -f trydevpoll.o
rm -f havesendfile.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trysendfile.c >/dev/null 2>&1; then echo "#define HAVE_SENDFILE"; fi > havesendfile.h
rm -f trysendfile.o
gcc -c io/io_appendfile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addbuf.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addbuf_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addbuf_internal.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addbuf_munmap.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addfile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_addfile_close.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_adds.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_adds_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_bytesleft.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_free.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_block.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_new.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_prefetch.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
io/iob_prefetch.c: 在函数‘iob_prefetch’中:
io/iob_prefetch.c:52: 警告:此函数中的‘x’在使用前可能未初始化
gcc -c io/iob_reset.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_send.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/iob_write.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_canread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_canwrite.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_check.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_close.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_closeonexec.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_createfile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_debugstring.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_dontwantread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_dontwantwrite.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_eagain.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_eagain_read.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_eagain_write.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_fd.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_finishandshutdown.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_getcookie.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
rm -f havepread.h
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -c trypread.c >/dev/null 2>&1; then echo "#define HAVE_PREAD"; fi > havepread.h
rm -f trypread.o
gcc -c io/io_mmapwritefile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_nonblock.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_passfd.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
io/io_passfd.c: 在函数‘io_passfd’中:
io/io_passfd.c:68: 警告:提领类型双关的指针将破坏强重叠规则
gcc -c io/io_pipe.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_readfile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_readwritefile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_receivefd.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
io/io_receivefd.c: 在函数‘io_receivefd’中:
io/io_receivefd.c:68: 警告:提领类型双关的指针将破坏强重叠规则
io/io_receivefd.c:82: 警告:提领类型双关的指针将破坏强重叠规则
gcc -c io/io_sendfile.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_setcookie.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_sigpipe.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_socketpair.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_timedout.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_timeout.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_timeouted.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_tryread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_tryreadtimeout.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_trywrite.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_trywritetimeout.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_wait.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_waitread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_waituntil2.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_waituntil.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_waitwrite.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_wantread.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c io/io_wantwrite.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru io.a io_appendfile.o iob_addbuf.o iob_addbuf_free.o iob_addbuf_internal.o iob_addbuf_munmap.o iob_addfile.o iob_addfile_close.o iob_adds.o iob_adds_free.o iob_bytesleft.o iob_free.o io_block.o iob_new.o iob_prefetch.o iob_reset.o iob_send.o iob_write.o io_canread.o io_canwrite.o io_check.o io_close.o io_closeonexec.o io_createfile.o io_debugstring.o io_dontwantread.o io_dontwantwrite.o io_eagain.o io_eagain_read.o io_eagain_write.o io_fd.o io_finishandshutdown.o io_getcookie.o io_mmapwritefile.o io_nonblock.o io_passfd.o io_pipe.o io_readfile.o io_readwritefile.o io_receivefd.o io_sendfile.o io_setcookie.o io_sigpipe.o io_socketpair.o io_timedout.o io_timeout.o io_timeouted.o io_tryread.o io_tryreadtimeout.o io_trywrite.o io_trywritetimeout.o io_wait.o io_waitread.o io_waituntil2.o io_waituntil.o io_waitwrite.o io_wantread.o io_wantwrite.o
ranlib io.a
gcc -c textcode/base64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/base64url.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_base64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_base64url.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_cescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_foldwhitespace.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_hexdump.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_html.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_html_tagarg.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_jsonescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_ldapescape2.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_ldapescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_quotedprintable.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_to_array.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_tofrom_array.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_to_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_urlencoded.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_uuencoded.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_xml.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/fmt_yenc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_base64.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_base64url.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_cescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_hexdump.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
./ent
nodes=9853, datasize=8115
actually used: 9853 nodes, 8115 bytes data
gcc -c textcode/scan_html.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_jsonescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_ldapescape.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_quotedprintable.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_to_array.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_tofrom_array.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_to_sa.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_urlencoded.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_uuencoded.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c textcode/scan_yenc.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru textcode.a base64.o base64url.o fmt_base64.o fmt_base64url.o fmt_cescape.o fmt_foldwhitespace.o fmt_hexdump.o fmt_html.o fmt_html_tagarg.o fmt_jsonescape.o fmt_ldapescape2.o fmt_ldapescape.o fmt_quotedprintable.o fmt_to_array.o fmt_tofrom_array.o fmt_to_sa.o fmt_urlencoded.o fmt_uuencoded.o fmt_xml.o fmt_yenc.o scan_base64.o scan_base64url.o scan_cescape.o scan_hexdump.o scan_html.o scan_jsonescape.o scan_ldapescape.o scan_quotedprintable.o scan_to_array.o scan_tofrom_array.o scan_to_sa.o scan_urlencoded.o scan_uuencoded.o scan_yenc.o
ranlib textcode.a
gcc -c cdb/cdb.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c cdb/cdb_hash.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c cdb/cdb_make.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
gcc -c cdb/cdb_traverse.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru cdb.a cdb.o cdb_hash.o cdb_make.o cdb_traverse.o
ranlib cdb.a
gcc -c critbit/critbit.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
ar cru critbit.a critbit.o
ranlib critbit.a
ar cru libowfat.a dns_dfd.o dns_domain.o dns_dtda.o dns_ip6.o dns_ip.o dns_ipq6.o dns_ipq.o dns_mx.o dns_name.o dns_nd6.o dns_nd.o dns_packet.o dns_random.o dns_rcip.o dns_rcrw.o dns_resolve.o dns_sortip6.o dns_sortip.o dns_transmit.o dns_txt.o byte_chr.o byte_copy.o byte_copyr.o byte_diff.o byte_equal_notimingattack.o byte_rchr.o byte_zero.o fmt_8long.o fmt_8longlong.o fmt_asn1derlength.o fmt_asn1dertag.o fmt_double.o fmt_escapecharc.o fmt_escapecharhtml.o fmt_escapecharjson.o fmt_escapecharquotedprintable.o fmt_escapecharquotedprintableutf8.o fmt_escapecharxml.o fmt_fill.o fmt_httpdate.o fmt_human.o fmt_humank.o fmt_iso8601.o fmt_long.o fmt_longlong.o fmt_minus.o fmt_netstring.o fmt_pad.o fmt_pb_double.o fmt_pb_float.o fmt_pb_int.o fmt_pb_sint.o fmt_pb_string.o fmt_pb_tag.o fmt_pb_type0_sint.o fmt_pb_type1_double.o fmt_pb_type1_fixed64.o fmt_pb_type2_string.o fmt_pb_type5_fixed32.o fmt_pb_type5_float.o fmt_plusminus.o fmt_str.o fmt_strm_internal.o fmt_strn.o fmt_tohex.o fmt_ulong0.o fmt_ulong.o fmt_ulonglong.o fmt_utf8.o fmt_varint.o fmt_xlong.o fmt_xlonglong.o fmt_xmlescape.o scan_8int.o scan_8long.o scan_8longlong.o scan_8longn.o scan_8short.o scan_asn1derlength.o scan_asn1dertag.o scan_charsetnskip.o scan_double.o scan_fromhex.o scan_httpdate.o scan_int.o scan_iso8601.o scan_long.o scan_longlong.o scan_longn.o scan_netstring.o scan_noncharsetnskip.o scan_nonwhitenskip.o scan_pb_tag.o scan_pb_type0_sint.o scan_pb_type1_double.o scan_pb_type1_fixed64.o scan_pb_type2_stringlen.o scan_pb_type5_fixed32.o scan_pb_type5_float.o scan_plusminus.o scan_short.o scan_uint.o scan_ulong.o scan_ulonglong.o scan_ulongn.o scan_ushort.o scan_utf8.o scan_varint.o scan_whitenskip.o scan_xint.o scan_xlong.o scan_xlonglong.o scan_xlongn.o scan_xshort.o str_chr.o str_copy.o str_diff.o str_diffn.o str_len.o str_rchr.o str_start.o uint16_pack_big.o uint16_pack.o uint16_read_big.o uint16_read.o uint16_unpack_big.o uint16_unpack.o uint32_pack_big.o uint32_pack.o uint32_read_big.o uint32_read.o uint32_unpack_big.o uint32_unpack.o uint64_pack_big.o uint64_pack.o uint64_read_big.o uint64_read.o uint64_unpack_big.o uint64_unpack.o open_append.o open_excl.o open_read.o openreadclose.o open_rw.o open_trunc.o open_write.o readclose.o stralloc_append.o stralloc_catb.o stralloc_cat.o stralloc_catlong0.o stralloc_catm_internal.o stralloc_cats.o stralloc_catulong0.o stralloc_chomp.o stralloc_chop.o stralloc_copyb.o stralloc_copy.o stralloc_copys.o stralloc_diff.o stralloc_diffs.o stralloc_free.o stralloc_init.o stralloc_ready.o stralloc_readyplus.o stralloc_starts.o stralloc_zero.o iopause.o ndelay_off.o ndelay_on.o winsock2errno.o fmt_ip4.o fmt_ip6.o fmt_ip6c.o fmt_ip6_flat.o fmt_ip6if.o fmt_ip6ifc.o init.o scan_ip4.o scan_ip6.o scan_ip6_flat.o scan_ip6if.o socket_accept4.o socket_accept6.o socket_bind4.o socket_bind4_reuse.o socket_bind6.o socket_bind6_reuse.o socket_broadcast.o socket_connect4.o socket_connect6.o socket_connected.o socket_deferaccept.o socket_fastopen.o socket_fastopen_connect4.o socket_fastopen_connect6.o socket_getifidx.o socket_getifname.o socket_ip4loopback.o socket_listen.o socket_local4.o socket_local6.o socket_mchopcount6.o socket_mcjoin4.o socket_mcjoin6.o socket_mcleave4.o socket_mcleave6.o socket_mcloop4.o socket_mcloop6.o socket_mcttl4.o socket_noipv6.o socket_quickack.o socket_recv4.o socket_recv6.o socket_remote4.o socket_remote6.o socket_sctp4b.o socket_sctp4.o socket_sctp6b.o socket_sctp6.o socket_send4.o socket_send6.o socket_tcp4b.o socket_tcp4.o socket_tcp6b.o socket_tcp6.o socket_tryreservein.o socket_udp4.o socket_udp6.o socket_v4mappedprefix.o socket_v6any.o socket_v6loopback.o buffer_0.o buffer_0small.o buffer_1.o buffer_1small.o buffer_2.o buffer_close.o buffer_feed.o buffer_flush.o buffer_free.o buffer_fromarray.o buffer_frombuf.o buffer_fromsa.o buffer_get.o buffer_getc.o buffer_getline.o buffer_getline_sa.o buffer_getn.o buffer_getnewline_sa.o buffer_get_new_token_sa.o buffer_get_new_token_sa_pred.o buffer_get_token.o buffer_get_token_pred.o buffer_get_token_sa.o buffer_get_token_sa_pred.o buffer_init.o buffer_init_free.o buffer_mmapread.o buffer_munmap.o buffer_peek.o buffer_put8long.o buffer_putalign.o buffer_put.o buffer_puterror2.o buffer_puterror.o buffer_putflush.o buffer_putlong.o buffer_putlonglong.o buffer_putm_internal.o buffer_putm_internal_flush.o buffer_putnlflush.o buffer_putsa.o buffer_putsaflush.o buffer_putsalign.o buffer_puts.o buffer_putsflush.o buffer_putspace.o buffer_putulong.o buffer_putulonglong.o buffer_putxlong.o buffer_seek.o buffer_stubborn2.o buffer_stubborn.o buffer_tosa.o errmsg_iam.o errmsg_info.o errmsg_infosys.o errmsg_puts.o errmsg_warn.o errmsg_warnsys.o errmsg_write.o mmap_private.o mmap_readat.o mmap_read.o mmap_shared.o mmap_unmap.o base64.o base64url.o fmt_base64.o fmt_base64url.o fmt_cescape.o fmt_foldwhitespace.o fmt_hexdump.o fmt_html.o fmt_html_tagarg.o fmt_jsonescape.o fmt_ldapescape2.o fmt_ldapescape.o fmt_quotedprintable.o fmt_to_array.o fmt_tofrom_array.o fmt_to_sa.o fmt_urlencoded.o fmt_uuencoded.o fmt_xml.o fmt_yenc.o scan_base64.o scan_base64url.o scan_cescape.o scan_hexdump.o scan_html.o scan_jsonescape.o scan_ldapescape.o scan_quotedprintable.o scan_to_array.o scan_tofrom_array.o scan_to_sa.o scan_urlencoded.o scan_uuencoded.o scan_yenc.o taia_add.o taia_addsec.o taia_approx.o taia_frac.o taia_half.o taia_less.o taia_now.o taia_pack.o taia_sub.o taia_tai.o taia_uint.o taia_unpack.o tai_add.o tai_now.o tai_pack.o tai_sub.o tai_uint.o tai_unpack.o case_diffb.o case_diffs.o case_lowerb.o case_lowers.o case_starts.o array_allocate.o array_bytes.o array_cat0.o array_catb.o array_cat.o array_cate.o array_cats0.o array_cats.o array_equal.o array_fail.o array_get.o array_length.o array_reset.o array_start.o array_truncate.o array_trunc.o iarray_allocate.o iarray_free.o iarray_get.o iarray_init.o iarray_length.o imult16.o imult32.o imult64.o range_arrayinbuf.o range_str2inbuf.o range_str4inbuf.o range_strinbuf.o umult16.o umult32.o umult64.o io_appendfile.o iob_addbuf.o iob_addbuf_free.o iob_addbuf_internal.o iob_addbuf_munmap.o iob_addfile.o iob_addfile_close.o iob_adds.o iob_adds_free.o iob_bytesleft.o iob_free.o io_block.o iob_new.o iob_prefetch.o iob_reset.o iob_send.o iob_write.o io_canread.o io_canwrite.o io_check.o io_close.o io_closeonexec.o io_createfile.o io_debugstring.o io_dontwantread.o io_dontwantwrite.o io_eagain.o io_eagain_read.o io_eagain_write.o io_fd.o io_finishandshutdown.o io_getcookie.o io_mmapwritefile.o io_nonblock.o io_passfd.o io_pipe.o io_readfile.o io_readwritefile.o io_receivefd.o io_sendfile.o io_setcookie.o io_sigpipe.o io_socketpair.o io_timedout.o io_timeout.o io_timeouted.o io_tryread.o io_tryreadtimeout.o io_trywrite.o io_trywritetimeout.o io_wait.o io_waitread.o io_waituntil2.o io_waituntil.o io_waitwrite.o io_wantread.o io_wantwrite.o cdb.o cdb_hash.o cdb_make.o cdb_traverse.o critbit.o
ranlib libowfat.a
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trysocket trysocket.c >/dev/null 2>&1; then echo ""; else \
    if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trysocket trysocket.c -lsocket >/dev/null 2>&1; then echo "-lsocket"; else \
    if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trysocket trysocket.c -lsocket -lnsl >/dev/null 2>&1; then echo "-lsocket -lnsl"; \
    fi; fi; fi > blah
if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trysocket trysendfile.c `cat blah`>/dev/null 2>&1; then cat blah; else \
    if  gcc -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I. -o trysocket trysendfile.c -lsendfile `cat blah` >/dev/null 2>&1; then echo "-lsendfile"; cat blah; \
    fi; fi > libsocket
rm -f blah trysocket
gcc -c t.c -pipe -W -Wall -Wextra  -D_REENTRANT -O2 -I.
t.c: 在函数‘main’中:
t.c:71: 警告:未使用的变量‘s’
t.c:70: 警告:未使用的参数‘argc’
t.c:70: 警告:未使用的参数‘argv’
t.c: 在文件层:
t.c:38: 警告:‘writecb’定义后未使用
t.c:52: 警告:‘ret0’定义后未使用
t.c:58: 警告:‘ret1’定义后未使用
gcc -g -o t t.o libowfat.a `cat libsocket` -lpthread
[root@www libowfat]#