{"id":1164,"date":"2023-11-13T13:32:00","date_gmt":"2023-11-13T04:32:00","guid":{"rendered":"https:\/\/h4ck.kr\/?p=1164"},"modified":"2023-11-13T14:07:02","modified_gmt":"2023-11-13T05:07:02","slug":"coreutils-%ed%85%8c%ec%8a%a4%ed%8a%b8-klee%eb%a5%bc-%ec%82%ac%ec%9a%a9%ed%95%98%ec%97%ac-gnu-coreutils%eb%a5%bc-%ed%85%8c%ec%8a%a4%ed%8a%b8%ed%95%98%eb%8a%94-%eb%b0%a9%eb%b2%95%ec%97%90-%eb%8c%80","status":"publish","type":"post","link":"https:\/\/h4ck.kr\/?p=1164","title":{"rendered":"Coreutils \ud14c\uc2a4\ud2b8: KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec GNU Coreutils\ub97c \ud14c\uc2a4\ud2b8\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \uc124\uba85"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec GNU Coreutils\ub97c \ud14c\uc2a4\ud2b8\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \ud29c\ud1a0\ub9ac\uc5bc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub354 \uc790\uc138\ud55c KLEE \uc0ac\uc6a9 \uc124\uba85\uc73c\ub85c, <a href=\"https:\/\/klee.github.io\/docs\/coreutils-experiments\">OSDI&#8217;08 Coreutils \uc2e4\ud5d8 \uc124\uba85<\/a>\uc5d0 \ub530\ub77c KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec <a href=\"http:\/\/www.gnu.org\/software\/coreutils\/\">GNU Coreutils<\/a>\ub97c \ud14c\uc2a4\ud2b8\ud558\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uaca0\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcf8 \ud29c\ud1a0\ub9ac\uc5bc\uc740 <strong>uClibc<\/strong> \ubc0f <strong>POSIX<\/strong> \ub7f0\ud0c0\uc784 \uc9c0\uc6d0\uacfc \ud568\uaed8 \uad6c\uc131 \ubc0f <a href=\"https:\/\/klee.github.io\/getting-started\">\ube4c\ub4dc\ub41c KLEE<\/a>\ub85c \uac00\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub4e0 \ud14c\uc2a4\ud2b8\ub294 64\ube44\ud2b8 \ub9ac\ub205\uc2a4 \uba38\uc2e0\uc5d0\uc11c \uc218\ud589\ub418\uc5c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1\ub2e8\uacc4: gcov\uc640 \ud568\uaed8 coreutils \ube4c\ub4dc\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uba3c\uc800 <a href=\"http:\/\/www.gnu.org\/software\/coreutils\/\">coreutils<\/a> \uc18c\uc2a4\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud558\uace0 \uc555\ucd95\uc744 \ud574\uc81c\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc608\uc2dc\uc5d0\uc11c\ub294 OSDI \ub17c\ubb38\uc5d0\uc11c \uc0ac\uc6a9\ub41c \ubc84\uc804\ubcf4\ub2e4 \ub192\uc740 <a href=\"https:\/\/ftp.gnu.org\/gnu\/coreutils\/coreutils-8.32.tar.gz\">8.32 \ubc84\uc804<\/a>\uc744 \uc0ac\uc6a9\ud558\uc9c0\ub9cc, Coreutils\uc758 \uc5b4\ub5a4 \ubc84\uc804\uc774\ub4e0\uc9c0 \uac04\uc5d0 \uc0c1\uad00\uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7ec\ub098 \ucd5c\uadfc \ubc84\uc804\uc758 \uacbd\uc6b0, <strong>make -C src arch hostname<\/strong> \ub2e8\uacc4\ub97c \uac74\ub108\ub6f8 \uc218 \uc788\ub2e4. (8.32 \ubc84\uc804\uc5d0\uc11c\ub3c4 \uc774 \ub2e8\uacc4\uac00 \uc0dd\ub7b5\ub418\uc5c8\uc74c)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">LLVM\uc73c\ub85c \ube4c\ub4dc\ud558\uae30 \uc804\uc5d0 gcov \uc9c0\uc6d0\uc774 \uc788\ub294 coreutils \ubc84\uc804\uc744 \uba3c\uc800 \ube4c\ub4dc\ud574\ubcf4\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ud6c4\uc5d0 KLEE\uc5d0\uc11c \uc0dd\uc131\ud55c \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\uc758 \ucee4\ubc84\ub9ac\uc9c0 \uc815\ubcf4\ub97c \uc5bb\ub294 \ub370 \uc0ac\uc6a9\ud560 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">coreutils \ub514\ub809\ud1a0\ub9ac \uc548\uc5d0\uc11c \uc6b0\ub9ac\ub294 \ud558\uc704 \ub514\ub809\ud1a0\ub9ac(obj-gcov)\uc5d0\uc11c \uc77c\ubc18\uc801\uc778 \uad6c\uc131 \ubc0f \ube4c\ub4dc \ub2e8\uacc4\ub97c \uc9c4\ud589\ud560 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uacc4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">coreutils-8.32$ mkdir obj-gcov\ncoreutils-8.32$ cd obj-gcov\nobj-gcov$ ..\/configure --disable-nls CFLAGS=\"-g -fprofile-arcs -ftest-coverage\"\n... verify that configure worked ...\nobj-gcov$ make -j4<\/pre>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"955\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-12-1024x955.png\" alt=\"\" class=\"wp-image-1165\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-12-1024x955.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-12-300x280.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-12-768x716.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-12.png 1115w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>-disable-nls<\/strong> \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec \ube4c\ub4dc\ud558\ub294 \uc774\uc720\ub294 \uc774\uac83\uc774 C \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \ub354\uc6b1\ub354 \ub9ce\uc740 \ucd08\uae30\ud654\ub97c \ucd94\uac00\ud558\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">KLEE\uac00 \uc2e4\ud589\ud560 \uc2e4\ud589 \ud30c\uc77c\uc740 \uc544\ub2c8\uc9c0\ub9cc, KLEE\uac00 \uc0dd\uc131\ud558\ub294 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\uac00 \uae30\uacc4\uc5b4 \ucf54\ub4dc\uac00 \uc5c6\ub294 \uc774\uc9c4 \ud30c\uc77c\uc5d0\uc11c \uc62c\ubc14\ub974\uac8c \uc791\ub3d9\ud560 \uac00\ub2a5\uc131\uc744 \ub192\uc774\uae30 \uc704\ud574 \ub3d9\uc77c\ud55c \ucef4\ud30c\uc77c\ub7ec \ud50c\ub798\uadf8\ub97c \uc0ac\uc6a9\ud558\ub824\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc81c<strong> objc-gcov\/src<\/strong> \ub514\ub809\ud1a0\ub9ac\uc5d0 <strong>coreutils<\/strong> \uc138\ud2b8\uac00 \uc788\uc744 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">obj-gcov$ cd src\nobj-gcov\/src$ ls -l ls echo cat\n-rwxr-xr-x 1 ubuntu ubuntu 173208 Nov 12 06:36 cat\n-rwxr-xr-x 1 ubuntu ubuntu 146720 Nov 12 06:36 echo\n-rwxr-xr-x 1 ubuntu ubuntu 583632 Nov 12 06:36 ls\nobj-gcov\/src$ .\/cat --version\ncat (GNU coreutils) 8.32\nCopyright (C) 2020 Free Software Foundation, Inc.\nLicense GPLv3+: GNU GPL version 3 or later &lt;https:\/\/gnu.org\/licenses\/gpl.html>.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nWritten by Torbjorn Granlund and Richard M. Stallman.<\/pre>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"353\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-13-1024x353.png\" alt=\"\" class=\"wp-image-1166\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-13-1024x353.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-13-300x103.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-13-768x264.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-13.png 1214w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\ucd94\uac00\ub85c, \uc774\ub7ec\ud55c \uc2e4\ud589 \ud30c\uc77c\uc740 <strong>gcov<\/strong> \uc9c0\uc6d0\uc744 \uc0ac\uc6a9\ud558\uc5ec \ube4c\ub4dc\ub418\uc5b4\uc57c \ud55c\ub2e4.<br>\ub530\ub77c\uc11c \uc2e4\ud589 \ud30c\uc77c \uc911 \ud558\ub098\ub97c \uc2e4\ud589\ud558\uba74 \ud604\uc7ac \ub514\ub809\ud130\ub9ac\uc5d0 <strong>.gcda<\/strong> \ud30c\uc77c\uc774 \uc0dd\uc131\ub41c\ub2e4.<br>\uc774 \ud30c\uc77c\uc5d0\ub294 \ud504\ub85c\uadf8\ub7a8 \uc2e4\ud589 \uc2dc \uc2e4\ud589\ub41c \ucf54\ub4dc\uc5d0 \ub300\ud55c \uc815\ud655\ud55c \uc815\ubcf4\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\ub2e4.<br>\uc790\uc138\ud55c \ub0b4\uc6a9\uc740 <a href=\"http:\/\/gcc.gnu.org\/onlinedocs\/gcc\/Gcov.html\">Gcov \ubb38\uc11c<\/a>\ub97c \ucc38\uc870\ud558\uae38 \ubc14\ub780\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6b0\ub9ac\ub294 <strong>gcov<\/strong> \ub3c4\uad6c \uc790\uccb4\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucee4\ubc84\ub9ac\uc9c0 \uc815\ubcf4\uc758 \uc778\uac04\uc774 \uc77d\uc744 \uc218 \uc788\ub294 \ud615\ud0dc\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\ub2e4.<br>\uc774\ub97c \ud14c\uba74:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ rm -f *.gcda # \ub0a8\uc544 \uc788\ub294 gcov \ud30c\uc77c \uc81c\uac70\nsrc$ .\/echo**\n\nsrc$ ls -l echo.gcda\n-rw-r--r-- 1 ubuntu ubuntu 640 Nov 12 06:53 echo.gcda\nsrc$ gcov echo\nFile '..\/src\/echo.c'\nLines executed:21.85% of 119\nCreating 'echo.c.gcov'\nCannot open source file ..\/src\/echo.c\n\nFile '..\/src\/system.h'\nLines executed:0.00% of 15\nCreating 'system.h.gcov'\nCannot open source file ..\/src\/system.h\n\nLines executed:19.40% of 134<\/pre>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"471\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-14-1024x471.png\" alt=\"\" class=\"wp-image-1167\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-14-1024x471.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-14-300x138.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-14-768x353.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-14.png 1214w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\uc801\uc73c\ub85c <strong>gcov<\/strong>\ub294 \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \uc2e4\ud589\ub41c \ub77c\uc778 \uc218\ub97c \ubcf4\uc5ec\uc900\ub2e4. <br>(<strong>.h \ud5e4\ub354\ud30c\uc77c<\/strong>\uc5d0\ub294<strong> echo.c<\/strong>\ub85c \ucef4\ud30c\uc77c\ub41c \ucf54\ub4dc\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uc74c)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2\ub2e8\uacc4: <strong>WLLVM \uc124\uce58\ud558\uae30<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uc81c \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub97c \ud14c\uc2a4\ud2b8\ud558\ub294 \uc5b4\ub824\uc6b4 \ubd80\ubd84 \uc911 \ud558\ub098\ub294 \ucd5c\uc885 \ud504\ub85c\uadf8\ub7a8\uc774 LLVM bitCode\ud30c\uc77c\uc774 \ub418\uace0 \ub124\uc774\ud2f0\ube0c \uc774\uc9c4 \ud30c\uc77c\uc774 \uc544\ub2c8\uc5b4\uc57c \ud55c\ub2e4\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc18c\ud504\ud2b8\uc6e8\uc5b4\uc758 \ube4c\ub4dc \uc2dc\uc2a4\ud15c\uc740 <strong>&#8216;ar&#8217;, &#8216;libtool&#8217; \ubc0f &#8216;ld&#8217;\uc640 \uac19\uc740 \ub3c4\uad6c<\/strong>\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc73c\uba70 <br>\uc774\ub7ec\ud55c \ub3c4\uad6c\ub294 \uc77c\ubc18\uc801\uc73c\ub85c LLVM bitCode \ud30c\uc77c\uc744 \uc774\ud574\ud558\uc9c0 \ubabb\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Coreutils<\/strong>\uc758 \uacbd\uc6b0, \uc6b0\ub9ac\ub294 \uc804\uccb4 \ud504\ub85c\uadf8\ub7a8 LLVM \ube44\ud2b8\ucf54\ub4dc \ud30c\uc77c\uc744 \ube4c\ub4dc\ud558\uae30 \uc704\ud55c \ub3c4\uad6c\uc778 <a href=\"https:\/\/github.com\/travitch\/whole-program-llvm\">whole-program-llvm (WLLVM)<\/a>\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>WLLVM<\/strong>\uc5d0\ub294 4\uac00\uc9c0 \ud30c\uc774\uc36c \uc2e4\ud589 \ud30c\uc77c\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>wllvm<\/strong>\uc740 C \ucef4\ud30c\uc77c\ub7ec\uc774\uace0, <strong>wllvm++<\/strong>\uc740 C++ \ucef4\ud30c\uc77c\ub7ec\uc774\uba70, bitCode\ub97c \ube4c\ub4dc \uc81c\ud488(\uc624\ube0c\uc81d\ud2b8 \ud30c\uc77c, \uc2e4\ud589 \ud30c\uc77c, \ub77c\uc774\ube0c\ub7ec\ub9ac \ub610\ub294 \uc544\uce74\uc774\ube0c)\uc5d0\uc11c \ucd94\ucd9c\ud558\ub294 \ub3c4\uad6c\uc778 <strong>extract-bc<\/strong> \ubc0f \uc124\uc815 \uc624\ubc84\uc0ac\uc774\ud2b8\ub97c \uac10\uc9c0\ud558\ub294 <strong>wllvm-sanity-checker<\/strong>\ub3c4 \ud3ec\ud568\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ud29c\ud1a0\ub9ac\uc5bc\uc5d0\uc11c\ub294 <strong>WLLVM \ubc84\uc804 1.3.1(2023.11.12 \uae30\uc900 \ucd5c\uc2e0\ubc84\uc804)<\/strong>\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>whole-program-llvm<\/strong>\uc744 \uc124\uce58\ud558\ub294 \uac00\uc7a5 \uac04\ub2e8\ud55c \ubc29\ubc95\uc740 <strong>pip3<\/strong>\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ pip3 install --upgrade wllvm<\/pre>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"218\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-15-1024x218.png\" alt=\"\" class=\"wp-image-1168\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-15-1024x218.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-15-300x64.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-15-768x163.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-15.png 1214w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">WLLVM\uc744 \uc131\uacf5\uc801\uc73c\ub85c \uc2e4\ud589\ud558\ub824\uba74, \ud658\uacbd \ubcc0\uc218 <strong>LLVM_COMPILER<\/strong>\ub97c <strong>\uae30\ubcf8 LLVM \ucef4\ud30c\uc77c\ub7ec (dragonegg \ub610\ub294 clang<\/strong>)\ub85c \uc124\uc815\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ud29c\ud1a0\ub9ac\uc5bc\uc5d0\uc11c\ub294 <strong>clang<\/strong>\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ export LLVM_COMPILER=clang<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\ud658\uacbd \ubcc0\uc218\ub97c \uc601\uad6c\uc801\uc73c\ub85c \uc124\uc815\ud558\uace0 \uc2f6\ub2e4\uba74, <br>\ud574\ub2f9 \ud658\uacbd \ubcc0\uc218\ub97c \uc258 \ud504\ub85c\ud30c\uc77c(ex: .bashrc)\uc5d0 \ucd94\uac00\uc2dc\ud0a4\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3\ub2e8\uacc4: LLVM\uc744 \uc0ac\uc6a9\ud558\uc5ec Coreutils \ube4c\ub4dc\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc804\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c, \ub124\uc774\ud2f0\ube0c \uc2e4\ud589 \ud30c\uc77c\uacfc LLVM \ubc84\uc804\uc5d0 \uc27d\uac8c \uc561\uc138\uc2a4\ud560 \uc218 \uc788\ub3c4\ub85d \ubcc4\ub3c4\uc758 \ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c \ube4c\ub4dc\ud560 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud574\ub2f9 \ub2e8\uacc4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">coreutils-8.32$ mkdir obj-llvm\ncoreutils-8.32$ cd obj-llvm\nobj-llvm$ CC=wllvm ..\/configure --disable-nls CFLAGS=\"-g -O1 -Xclang -disable-llvm-passes -D__NO_STRING_INLINES  -D_FORTIFY_SOURCE=0 -U__OPTIMIZE__\"\n... verify that configure worked ...\nobj-llvm$ make -j4\n... verify that make worked ...<\/pre>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"218\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-15-1-1024x218.png\" alt=\"\" class=\"wp-image-1169\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-15-1-1024x218.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-15-1-300x64.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-15-1-768x163.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-15-1.png 1214w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uc8fc\ubaa9\ud574\uc57c\ub420 2\uac00\uc9c0 \ubcc0\uacbd\uc0ac\ud56d\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uccab\uc9f8, KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud14c\uc2a4\ud2b8\ud560 \uc774\uc9c4 \ud30c\uc77c\uc5d0 <strong>gcov<\/strong> <strong>instrumentation<\/strong>\uc744 \ucd94\uac00\ud558\uace0 \uc2f6\uc9c0 \uc54a\uc544\uc11c <strong>-fprofile-arcs -ftest-coverage<\/strong> \ud50c\ub798\uadf8\ub97c \ube90\ub2e4.<br>\ub450\ubc88\uc9f8\ub85c, <strong>CFLAGS<\/strong>\uc5d0 <strong>-O1 -Xclang -disable-llvm-passes<\/strong> \ud50c\ub798\uadf8\ub97c \ucd94\uac00\uc2dc\ucf30\ub2e4.<br>\uc774\uac83\uc740 <strong>-O0<\/strong>\uc744 \ucd94\uac00\ud558\ub294 \uac83\uacfc \uc720\uc0ac\ud558\uc9c0\ub9cc, <strong>LLVM 5.0<\/strong> \uc774\ud6c4\uc5d0\ub294 <strong>-O0<\/strong>\uc73c\ub85c \ucef4\ud30c\uc77c\ud558\uba74 KLEE\uac00 \uc790\uccb4 \ucd5c\uc801\ud654\ub97c \uc218\ud589\ud558\uc9c0 \ubabb\ud558\uac8c \ub9cc\ub4e0\ub2e4. (\uc774\ud6c4\uc5d0 \uc6b0\ub9ac\uac00 \uc218\ud589\ud560 \uac83).<br>\ub530\ub77c\uc11c \uc6b0\ub9ac\ub294 <strong>-O1<\/strong>\ub85c \ucef4\ud30c\uc77c\ud558\uc9c0\ub9cc, \uba85\uc2dc\uc801\uc73c\ub85c \ubaa8\ub4e0 \ucd5c\uc801\ud654\ub97c \ube44\ud65c\uc131\ud654\ud55c\ub2e4.<br>\uc790\uc138\ud55c \ub0b4\uc6a9\uc740 <a href=\"https:\/\/github.com\/klee\/klee\/issues\/902\">\uc774 \ubb38\uc81c\uc810<\/a>\uc744 \ucc38\uace0\ud558\uae38 \ubc14\ub780\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>O0 -Xclang -disable-O0-optnone<\/strong>\ub97c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc \ub098\uc911\uc5d0 \ucd5c\uc801\ud654\ub97c \uc218\ud589\ud560 \uac83\uc774\ubbc0\ub85c <strong>-O1 -Xclang -disable-llvm-passes<\/strong>\ub85c \ucef4\ud30c\uc77c\ud558\ub294 \uac83\uc774 \ub354 \ub098\uc740 \uc120\ud0dd\uc774\ub2e4.<br><strong>-O1<\/strong> \ubc84\uc804\uc740 \ucd5c\uc801\ud654\uc5d0 \ub354 \uc801\ud569\ud55c \ube44\ud2b8\ucf54\ub4dc\ub97c \uc0dd\uc131\ud558\ubbc0\ub85c \uc774 \uacbd\uc6b0\uc5d0\ub294 \uadf8\uac83(<strong>-O1<\/strong>)\uc744 \ub354 \uc120\ud638\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>D__NO_STRING_INLINES -D_FORTIFY_SOURCE=0 -U__OPTIMIZE__<\/strong>\ub294 \ub610 \ub2e4\ub978 \uc911\uc694\ud55c \ud50c\ub798\uadf8 \uc9d1\ud569\uc774\ub2e4.<br>LLVM\uc758 \ub098\uc911 \ubc84\uc804\uc5d0\uc11c <strong>clang<\/strong>\uc740 \ud2b9\uc815 \ub77c\uc774\ube0c\ub7ec\ub9ac \ud568\uc218\uc758 \uc548\uc815\uc801\uc778 \ubc84\uc804\uc744 \uc0dd\uc131\ud55c\ub2e4.<br>\uc608\ub97c \ub4e4\uc5b4, <strong>fprintf<\/strong>\ub97c <strong>__fprintf_chk<\/strong>\ub85c \ub300\uccb4\ud558\ub294\ub370, KLEE\uac00 \uc774\ub97c \ubaa8\ub378\ub9c1\ud558\uc9c0 \uc54a\ub294\ub2e4.<br>\uc774\uac83\uc740 \uc678\ubd80 \ud568\uc218\ub85c \ucc98\ub9ac\ub418\uace0 \uc0c1\ud0dc\ub97c \uad6c\uccb4\ud654\uc2dc\ud0a4\uac8c \ub418\ub294\ub370, \uc774\ub85c \uc778\ud574 \uc608\uc0c1\uce58 \ubabb\ud55c \uacb0\uacfc\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub4e0 \uac83\uc774 \uc798 \uc9c4\ud589\ub418\uc5c8\ub2e4\uba74 \uc774\uc81c <strong>Coreutils \uc2e4\ud589 \ud30c\uc77c<\/strong>\uc774 \uc788\uc744 \uac83\uc774\ub2e4.<br>\uc608\ub97c \ub4e4\uba74:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">obj-llvm$ cd src\nsrc$ ls -l ls echo cat\n-rwxr-xr-x 1 ubuntu ubuntu 113544 Nov 12 07:28 cat\n-rwxr-xr-x 1 ubuntu ubuntu  92952 Nov 12 07:28 echo\n-rwxr-xr-x 1 ubuntu ubuntu 379776 Nov 12 07:28 ls\nsrc$ .\/cat --version\ncat (GNU coreutils) 8.32\nCopyright (C) 2020 Free Software Foundation, Inc.\nLicense GPLv3+: GNU GPL version 3 or later &lt;https:\/\/gnu.org\/licenses\/gpl.html>.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nWritten by Torbjorn Granlund and Richard M. Stallman.<\/pre>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"319\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-17-1024x319.png\" alt=\"\" class=\"wp-image-1171\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-17-1024x319.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-17-300x93.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-17-768x239.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-17.png 1214w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">LLVM \ube44\ud2b8\ucf54\ub4dc \ud30c\uc77c \ub300\uc2e0 \uc2e4\ud589 \ud30c\uc77c\uc744 \uc5bb\uc740 \uac83\uc744 \uc54c \uc218 \uc788\ub2e4.<br>\uc774\uac83\uc740 WLLVM\uc774 \ub450 \ub2e8\uacc4\ub85c \uc791\ub3d9\ud558\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uccab \ubc88\uc9f8 \ub2e8\uacc4\uc5d0\uc11c WLLVM\uc740 \ud45c\uc900 \ucef4\ud30c\uc77c\ub7ec\ub97c \ud638\ucd9c\ud558\uace0 \uac01 \uac1d\uccb4 \ud30c\uc77c\uc5d0 \ub300\ud574 \ube44\ud2b8\ucf54\ub4dc \ucef4\ud30c\uc77c\ub7ec\ub97c \ud638\ucd9c\ud558\uc5ec LLVM \ube44\ud2b8\ucf54\ub4dc\ub97c \uc0dd\uc131\ud55c\ub2e4.<br>WLLVM\uc740 \uc0dd\uc131\ub41c \ube44\ud2b8\ucf54\ub4dc \ud30c\uc77c\uc758 \uc704\uce58\ub97c \uac1d\uccb4 \ud30c\uc77c\uc758 \ud2b9\ubcc4\ud55c \uc139\uc158\uc5d0 \uc800\uc7a5\ud55c\ub2e4.<br>\uac1d\uccb4 \ud30c\uc77c\uc774 \ud568\uaed8 \uc5f0\uacb0\ub420 \ub54c, \uc704\uce58\ub294 \ubaa8\ub4e0 \uad6c\uc131 \ud30c\uc77c\uc758 \uc704\uce58\ub97c \uc800\uc7a5\ud558\uae30 \uc704\ud574 \uc5f0\uacb0\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ube4c\ub4dc\uac00 \uc644\ub8cc\ub41c \ud6c4, WLLVM \uc720\ud2f8\ub9ac\ud2f0\uc778 <strong>extract-bc<\/strong>\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud2b9\ubcc4\ud55c \uc139\uc158\uc758 \ub0b4\uc6a9\uc744 \uc77d\uace0 \ubaa8\ub4e0 \ube44\ud2b8\ucf54\ub4dc\ub97c \ub2e8\uc77c \uc804\uccb4 \ud504\ub85c\uadf8\ub7a8 \ube44\ud2b8\ucf54\ub4dc \ud30c\uc77c\ub85c \uc5f0\uacb0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub4e0 Coreutils\uc758 LLVM \ube44\ud2b8\ucf54\ub4dc \ubc84\uc804\uc744 \uc5bb\uae30 \uc704\ud574, \ubaa8\ub4e0 \uc2e4\ud589 \ud30c\uc77c\uc744 <strong>extract-bc<\/strong>\uc744 \ud1b5\ud574 \ud638\ucd9c\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ find . -executable -type f | xargs -I '{}' extract-bc '{}'\nsrc$ ls -l ls.bc\n-rw-r--r-- 1 ubuntu ubuntu 776796 Nov 12 08:09 ls.bc<\/pre>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"201\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-18-1024x201.png\" alt=\"\" class=\"wp-image-1173\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-18-1024x201.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-18-300x59.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-18-768x151.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-18.png 1214w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">4\ub2e8\uacc4: KLEE\ub97c \uc778\ud130\ud504\ub9ac\ud130\ub85c \uc0ac\uc6a9\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">KLEE\uc758 \ud575\uc2ec\uc740 LLVM \ube44\ud2b8\ucf54\ub4dc\uc758 \uc778\ud130\ud504\ub9ac\ud130\uc77c \ubfd0\uc774\ub77c\ub294\uac83.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub97c \ud14c\uba74, \uc774\uc804\uc5d0 \uc218\ud589\ud55c cat \uba85\ub839\uc744 KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\ud589\ud558\ub294 \ubc29\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc38\uace0\ub85c, \uc774 \ub2e8\uacc4\ub97c \uc218\ud589\ud558\ub824\uba74 KLEE\ub97c uClibc\uc640 POSIX \ub7f0\ud0c0\uc784 \uc9c0\uc6d0\uc73c\ub85c \uad6c\uc131\ud558\uace0 \ube4c\ub4dc\ud574\uc57c \ud55c\ub2e4. (\ub9cc\uc57d \uc544\uc9c1 \ud558\uc9c0 \uc54a\uc558\ub2e4\uba74, <strong>\uc9c0\uae08 \uadf8 \uc791\uc5c5\uc744 \uc218\ud589\ud574\uc57c \ud55c\ub2e4<\/strong>.. <strong>OTL<\/strong> <a href=\"https:\/\/klee.github.io\/releases\/docs\/v1.3.0\/build-llvm29\/\">4\ubc88 \uacfc\uc815\uc778 <strong>(Optional) Build uclibc and the POSIX environment model<\/strong><\/a> \ucc38\uace0\ud560 \uac83)<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ klee --libc=uclibc --posix-runtime .\/cat.bc --version\nKLEE: NOTE: Using klee-uclibc : \/usr\/local\/lib\/klee\/runtime\/klee-uclibc.bca\nKLEE: NOTE: Using model: \/usr\/local\/lib\/klee\/runtime\/libkleeRuntimePOSIX.bca\nKLEE: output directory is \"\/home\/klee\/coreutils-6.11\/obj-llvm\/src\/.\/klee-out-0\"\nUsing STP solver backend\nKLEE: WARNING ONCE: function \"vasnprintf\" has inline asm\nKLEE: WARNING: undefined reference to function: __ctype_b_loc\nKLEE: WARNING: undefined reference to function: klee_posix_prefer_cex\nKLEE: WARNING: executable has module level assembly (ignoring)\nKLEE: WARNING ONCE: calling external: syscall(16, 0, 21505, 42637408)\nKLEE: WARNING ONCE: calling __user_main with extra arguments.\nKLEE: WARNING ONCE: calling external: getpagesize()\nKLEE: WARNING ONCE: calling external: vprintf(43649760, 51466656)\ncat (GNU coreutils) 6.11\n\nLicense GPLv3+: GNU GPL version 3 or later\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nWritten by Torbjorn Granlund and Richard M. Stallman.\nCopyright (C) 2008 Free Software Foundation, Inc.\nKLEE: WARNING ONCE: calling close_stdout with extra arguments.\n\nKLEE: done: total instructions = 28988\nKLEE: done: completed paths = 1\nKLEE: done: generated tests = 1<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubc88\uc5d0\ub294 \ud6e8\uc52c \ub354 \ub9ce\uc740 \ucd9c\ub825\uc774 \ub098\uc654\ub2e4! \ud55c\ubc88 \uc0b4\ud3b4\ubcf4\ub3c4\ub85d \ud558\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uba3c\uc800 KLEE \uba85\ub839\uc5b4\ubd80\ud130 \ub9d0\ud558\uc790\uba74, KLEE \uba85\ub839\uc904\uc758 \uc77c\ubc18\uc801\uc778 \ud615\ud0dc\ub294 \uba3c\uc800 KLEE \uc790\uccb4\uc758 \uc778\uc218, \uadf8 \ub2e4\uc74c\uc5d0 \uc2e4\ud589\ud560 LLVM \ube44\ud2b8\ucf54\ub4dc \ud30c\uc77c(cat.bc), \uadf8\ub9ac\uace0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc804\ub2ec\ud560 \uc778\uc218\ub4e4(&#8211;version\uc774 \uc774 \uacbd\uc6b0\uc5d0 \ud574\ub2f9)\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18 \ub124\uc774\ud2f0\ube0c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc2e4\ud589\ud558\uba74 C \ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 \ub9c1\ud06c\ub418\uc5c8\uc744 \uac83\uc774\ub2e4.<br>\ud558\uc9c0\ub9cc, \uc774 \uacbd\uc6b0\uc5d0\ub294 KLEE\uac00 LLVM \ube44\ud2b8\ucf54\ub4dc \ud30c\uc77c\uc744 \uc9c1\uc811 \uc2e4\ud589\ud558\uace0 \uc788\ub2e4.<br>KLEE\uac00 \ud6a8\uacfc\uc801\uc73c\ub85c \uc791\ub3d9\ud558\ub824\uba74, \ud504\ub85c\uadf8\ub7a8\uc774 \ud638\ucd9c\ud560 \uc218 \uc788\ub294 \ubaa8\ub4e0 \uc678\ubd80 \ud568\uc218\uc5d0 \ub300\ud55c \uc815\uc758\uac00 \ud544\uc694\ud558\ub2e4.<br>\uc6b0\ub9ac\ub294 KLEE\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud558\uae30 \uc704\ud574 uClibc C \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc218\uc815\ud588\ub2e4.<br><strong>&#8211;libc=uclibc KLEE <\/strong>\uc778\uc218\ub294 KLEE\uc5d0\uac8c \uadf8 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ub85c\ub4dc\ud558\uace0 \uc2e4\ud589 \uc804\uc5d0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ub9c1\ud06c\ud558\ub3c4\ub85d \uc9c0\uc2dc\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9c8\ucc2c\uac00\uc9c0\ub85c, \uc77c\ubc18 \ub124\uc774\ud2f0\ube0c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740<strong> write()<\/strong>\uc640 \uac19\uc740 \ub0ae\uc740 \uc218\uc900\uc758 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\ub294 \uc6b4\uc601 \uccb4\uc81c \uc704\uc5d0\uc11c \uc2e4\ud589\ub41c\ub2e4.<br>\uc774\ub7ec\ud55c \ud568\uc218\ub4e4\uc5d0 \ub300\ud55c \uc815\uc758\uac00 KLEE\uc5d0\ub3c4 \ud544\uc694\ud558\ub2e4.<br>KLEE\uc640 uClibc \ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 POSIX \ub7f0\ud0c0\uc784\uc744 \uc81c\uacf5\ud558\uc5ec \ub300\ubd80\ubd84\uc758 \uba85\ub839\ud589 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294, \ub300\ubd80\ubd84\uc758 \uc6b4\uc601 \uccb4\uc81c \uae30\ub2a5\uc744 \uc81c\uacf5\ud55c\ub2e4.<br><strong>&#8211;posix-runtime <\/strong>\uc778\uc218\ub294 KLEE\uc5d0\uac8c \uc774 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub3c4 \ub9c1\ud06c\ud558\ub3c4\ub85d \uc9c0\uc2dc\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc804\uacfc \uac19\uc774 cat\uc740 \ubc84\uc804 \uc815\ubcf4\ub97c \ucd9c\ub825\ud55c\ub2e4. (\uc774\ubc88\uc5d0\ub294 \ubaa8\ub4e0 \ud14d\uc2a4\ud2b8\uac00 \ucd9c\ub825\ub428).<br>\ud558\uc9c0\ub9cc \uc774\uc81c\ub294 KLEE\uac00 \ucd94\uac00\ub85c \uc5ec\ub7ec \uc815\ubcf4\ub97c \ucd9c\ub825\ud574\uc900\ub2e4.<br>\uc774 \uacbd\uc6b0 \ub300\ubd80\ubd84\uc758 \uc774 \uacbd\uace0\ub294 \ubb34\ud574\ud558\uc9c0\ub9cc, \uc644\uc804\ud55c \uc774\ud574\ub97c \uc704\ud574 \uc774\uac83\uc774 \ubb34\uc5c7\uc744 \uc758\ubbf8\ud558\ub294\uc9c0 \uc124\uba85\ud574\ubcf4\uaca0\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>undefined reference to function: ___ctype_b_loc<\/strong>: <br>\uc774 \uacbd\uace0\ub294 \ud504\ub85c\uadf8\ub7a8\uc5d0 __ctype_b_loc \ud568\uc218\ub97c \ud638\ucd9c\ud558\ub294 \ubd80\ubd84\uc774 \uc788\uc9c0\ub9cc, \ud574\ub2f9 \ud568\uc218\uac00 \uc5b4\ub514\uc5d0\uc11c\ub3c4 \uc815\uc758\ub418\uc9c0 \uc54a\uc558\ub2e4\ub294 \uac83\uc744 \uc758\ubbf8\ud55c\ub2e4. (\ub9cc\uc57d uClibc\uc640 POSIX \ub7f0\ud0c0\uc784\uc744 \ub9c1\ud06c\ud558\uc9c0 \uc54a\uc558\ub2e4\uba74 \uc774\ub7ec\ud55c \uacbd\uace0\uac00 \ud6e8\uc52c \ub354 \ub9ce\uc774 \ub098\uc654\uc744 \uac83\uc774\ub2e4). <br>\ud504\ub85c\uadf8\ub7a8\uc774 \uc2e4\ud589\ub418\ub294 \ub3d9\uc548 \uc774 \ud568\uc218\ub97c \ud638\ucd9c\ud558\uac8c \ub418\uba74, KLEE\uac00 \uc774\ub97c \ud574\uc11d\ud558\uc9c0 \ubabb\ud558\uace0 \ud504\ub85c\uadf8\ub7a8\uc744 \uc885\ub8cc\ud560 \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li><strong>executable has module level assembly (ignoring)<\/strong>: <br>\uc2e4\ud589 \ud30c\uc77c\uc5d0\ub294 \ud30c\uc77c \ub808\ubca8 \uc778\ub77c\uc778 \uc5b4\uc148\ube14\ub9ac\uac00 \uc788\ub294 \ud30c\uc77c\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\ub294\ub370, KLEE\uac00 \uc774\ub97c \uc774\ud574\ud560 \uc218 \uc5c6\ub2e4\ub294 \uac83\uc744 \uc758\ubbf8\ud55c\ub2e4. <br>\uc774 \uacbd\uc6b0, \uc774\uac83\uc740 uClibc\uc5d0\uc11c \ub098\uc628 \uac83\uc774\uba70 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 \uc548\uc804\ud558\ub2e4.<\/li>\n\n\n\n<li><strong>calling __user_main with extra arguments<\/strong>: <br>\ud568\uc218\uac00 \uc608\uc0c1\ubcf4\ub2e4 \ub354 \ub9ce\uc740 \uc778\uc218\ub85c \ud638\ucd9c\ub418\uc5c8\ub2e4\ub294 \uac83\uc744 \uc758\ubbf8\ud55c\ub2e4. \uac70\uc758 \ud56d\uc0c1 \ubb34\ud574\ud558\ub2e4\uace0 \ubcf4\uba74 \ub418\ub294\ub370, \uc774 \uacbd\uc6b0 <strong>__user_main<\/strong>\uc740 \uc0ac\uc2e4\uc0c1 <strong>cat\uc758 main()<\/strong> \ud568\uc218\uc774\uba70, uClibc\uc640 \ub9c1\ud06c\ud560 \ub54c KLEE\uac00 \uc774\ub984\uc744 \ubc14\uafbc\ub2e4. <br>main()\uc740 \uc2dc\uc791\uc2dc uClibc \uc790\uccb4\uc5d0\uc11c \ud658\uacbd \ud3ec\uc778\ud130\uc640 \uac19\uc740 \ucd94\uac00\uc801\uc778 \uc778\uc218\ub85c \ud638\ucd9c\ub41c\ub2e4.<\/li>\n\n\n\n<li><strong>calling external: getpagesize()<\/strong>: <br>\ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \uc0ac\uc6a9\ub418\uc9c0\ub9cc, \uc815\uc758\ub418\uc9c0 \uc54a\uc740 \ud568\uc218\ub97c KLEE\uac00 \ud638\ucd9c\ud558\ub294 \uc608\ub97c \uc758\ubbf8\ud55c\ub2e4. \uc774\ub7ec\ud55c \uacbd\uc6b0 KLEE\uac00 \uc2e4\uc81c \ud568\uc218\ub97c \ud638\ucd9c\ud558\ub824\uace0 \uc2dc\ub3c4\ud55c\ub2e4. <br>\uadf8 \ud568\uc218\uac00 \ud504\ub85c\uadf8\ub7a8 \uba54\ubaa8\ub9ac \uc911 \uc5b4\ub5a4 \ubd80\ubd84\uc5d0\ub3c4 \uc4f0\uac70\ub098 \uc2ec\ubcfc \uac12\uc744 \uc870\uc791\ud558\uc9c0 \uc54a\ub294 \ud55c, \uc774\uac83\uc740 \ub54c\ub85c\ub294 \uc548\uc804\ud560 \uc218 \uc788\ub2e4.<br>\uc608\ub97c \ub4e4\uc5b4 <strong>getpagesize()<\/strong> \ud568\uc218\uac00 \uc788\ub294\ub370, \uc774\ub294 \ub2e8\uc21c\ud788 \uc0c1\uc218\ub97c \ubc18\ud658\ud55c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc73c\ub85c KLEE\ub294 \ud2b9\uc815 \uacbd\uace0\ub97c \ud55c \ubc88\ub9cc \ucd9c\ub825\ud55c\ub2e4. \ub610\ud55c \uc774\ub7ec\ud55c \uacbd\uace0\ub294 <strong>KLEE \ucd9c\ub825 \ub514\ub809\ud1a0\ub9ac\uc758 warnings.txt<\/strong>\uc5d0\ub3c4 \uae30\ub85d\ub41c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5\ub2e8\uacc4: \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc2ec\ubcfc\ub9ad \ub370\uc774\ud130\ub97c \uc18c\uac1c\ud558\uae30<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">KLEE\uac00 \ud504\ub85c\uadf8\ub7a8\uc744 \uc77c\ubc18\uc801\uc73c\ub85c \ud574\uc11d\ud560 \uc218 \uc788\uc74c\uc744 \ubcf4\uc558\uc9c0\ub9cc, KLEE\uc758 \uc2e4\uc81c \ubaa9\uc801\uc740 \ud504\ub85c\uadf8\ub7a8\uc758 \uc77c\ubd80 \uc785\ub825\uc744 \uc2ec\ubcfc\ub9ad\ud558\uac8c \ub9cc\ub4e4\uc5b4 \ud504\ub85c\uadf8\ub7a8\uc744 \ubcf4\ub2e4 \uccb4\uacc4\uc801\uc73c\ub85c \ud0d0\uad6c\ud558\ub294 \uac83\uc774\ub2e4.<br>\uc608\ub97c \ub4e4\uc5b4, echo \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c KLEE\ub97c \uc2e4\ud589\ud574\ubcf4\uaca0\ub2e4.<br>uClibc\uc640 POSIX \ub7f0\ud0c0\uc784\uc744 \uc0ac\uc6a9\ud560 \ub54c, KLEE\ub294 \ub7f0\ud0c0\uc784 \ub77c\uc774\ube0c\ub7ec\ub9ac \ub0b4\uc5d0 \uc81c\uacf5\ub418\ub294 \ud2b9\ubcc4\ud55c \ud568\uc218(<strong>klee_init_env<\/strong>)\ub85c \ud504\ub85c\uadf8\ub7a8\uc758 main() \ud568\uc218\ub97c \ub300\uccb4\ud55c\ub2e4.<br>\uc774 \ud568\uc218\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc77c\ubc18\uc801\uc778 \uba85\ub839\ud589 \ucc98\ub9ac\ub97c \ubcc0\uacbd\ud558\uba70, \ud2b9\ud788 \uc2ec\ubcfc\ub9ad \uc778\uc218\ub97c \uc0dd\uc131\ud558\ub294 \uac83\uc744 \uc9c0\uc6d0\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4,<strong> &#8211;help<\/strong>\ub97c \uc804\ub2ec\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uacb0\uacfc\uac00 \ub098\uc628\ub2e4:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ klee --libc=uclibc --posix-runtime .\/echo.bc --help\n...\n\nusage: (klee_init_env) [options] [program arguments]\n  -sym-arg &lt;N>              - Replace by a symbolic argument with length N\n  -sym-args &lt;MIN> &lt;MAX> &lt;N> - Replace by at least MIN arguments and at most\n                              MAX arguments, each with maximum length N\n  -sym-files &lt;NUM> &lt;N>      - Make NUM symbolic files ('A', 'B', 'C', etc.),\n                              each with size N\n  -sym-stdin &lt;N>            - Make stdin symbolic with size N.\n  -sym-stdout               - Make stdout symbolic.\n  -max-fail &lt;N>             - Allow up to N injected failures\n  -fd-fail                  - Shortcut for '-max-fail 1'\n...<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4, \uc2ec\ubcfc\ub9ad\ud55c 3\uae00\uc790 \uc778\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec <strong>echo<\/strong>\ub97c \uc2e4\ud589\ud574\ubcf4\uaca0\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ klee --libc=uclibc --posix-runtime .\/echo.bc --sym-arg 3\nKLEE: NOTE: Using klee-uclibc : \/usr\/local\/lib\/klee\/runtime\/klee-uclibc.bca\nKLEE: NOTE: Using model: \/usr\/local\/lib\/klee\/runtime\/libkleeRuntimePOSIX.bca\nKLEE: output directory is \"\/home\/klee\/coreutils-6.11\/obj-llvm\/src\/.\/klee-out-1\"\nUsing STP solver backend\nKLEE: WARNING ONCE: function \"vasnprintf\" has inline asm\nKLEE: WARNING: undefined reference to function: __ctype_b_loc\nKLEE: WARNING: undefined reference to function: klee_posix_prefer_cex\nKLEE: WARNING: executable has module level assembly (ignoring)\nKLEE: WARNING ONCE: calling external: syscall(16, 0, 21505, 39407520)\nKLEE: WARNING ONCE: calling __user_main with extra arguments.\n..\nKLEE: WARNING: calling close_stdout with extra arguments.\n...\nKLEE: WARNING ONCE: calling external: printf(42797984, 41639952)\n..\nKLEE: WARNING ONCE: calling external: vprintf(41640400, 52740448)\n..\nEcho the STRING(s) to standard output.\n\n  -n             do not output the trailing newline\n  -e             enable interpretation of backslash escapes\n  -E             disable interpretation of backslash escapes (default)\n      --help     display this help and exit\n      --version  output version information and exit\nUsage: .\/echo.bc [OPTION]... [STRING]...\necho (GNU coreutils) 6.11\nCopyright (C) 2008 Free Software Foundation, Inc.\nIf -e is in effect, the following sequences are recognized:\n\n  \\\\0NNN   the character whose ASCII code is NNN (octal)\n  \\\\\\\\     backslash\n  \\\\a     alert (BEL)\n  \\\\b     backspace\n\nLicense GPLv3+: GNU GPL version 3 or later\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\n  \\\\c     suppress trailing newline\n  \\\\f     form feed\n  \\\\n     new line\n  \\\\r     carriage return\n  \\\\t     horizontal tab\n  \\\\v     vertical tab\n\nNOTE: your shell may have its own version of echo, which usually supersedes\nthe version described here.  Please refer to your shell's documentation\nfor details about the options it supports.\n\nReport bugs to &lt;bug-coreutils@gnu.org>.\nWritten by FIXME unknown.\n\nKLEE: done: total instructions = 64546\nKLEE: done: completed paths = 25\nKLEE: done: generated tests = 25<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uacf3\uc758 \uacb0\uacfc\ub294 \uc870\uae08 \ub354 \ud765\ubbf8\ub85c\uc6b4\ub370, KLEE\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \ud1b5\ud574 25\uac1c\uc758 \uacbd\ub85c\ub97c \ud0d0\uc0c9\ud574\ub0c8\ub2e4.<br>\ubaa8\ub4e0 \uacbd\ub85c\uc758 \ucd9c\ub825\uc774 \uc11c\ub85c \uc11e\uc5ec \uc788\uae34 \ud558\uc9c0\ub9cc, \ubb34\uc791\uc704 \ubb38\uc790\ub97c \ubc18\ubcf5 \ucd9c\ub825\ud558\ub294 \uac83\ubfd0\ub9cc \uc544\ub2c8\ub77c \uc77c\ubd80 \ud14d\uc2a4\ud2b8 \ube14\ub85d\ub3c4 \ucd9c\ub825\ub418\uc5c8\uc74c\uc744 \uc54c \uc218 \uc788\ub2e4.<br><strong>coreutils\uc758 echo<\/strong>\uac00 \uc77c\ubd80 \uc778\uc218\ub97c \ubc1b\ub294\ub2e4\ub294 \uac83\uc5d0 \ub180\ub77c\uc2e4 \ud150\ub370, <br>\uc774 \uacbd\uc6b0\uc5d0\ub294 <strong>&#8211;v<\/strong>(\ubc84\uc804\uc744 \ub098\ud0c0\ub0b4\ub294 <strong>&#8211;version<\/strong>\uc758 \uc904\uc784\ub9d0)\uc640 <strong>&#8211;h<\/strong>(\ub3c4\uc6c0\ub9d0\uc744 \ub098\ud0c0\ub0b4\ub294 <strong>&#8211;help<\/strong>\uc758 \uc904\uc784\ub9d0) \uc635\uc158\uc744 \ud0d0\uc0c9\ud55c \uacbd\uc6b0\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">KLEE\uc758 \ub0b4\ubd80 \ud1b5\uacc4\ub97c \uac04\ub2e8\ud788 \ubcfc \uc218 \uc788\ub3c4\ub85d \ucd9c\ub825 \ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c <strong>klee-stats<\/strong>\ub97c \uc2e4\ud589\ud558\uc5ec KLEE\uc758 \ub0b4\ubd80 \ud1b5\uacc4\uc758 \uac04\ub2e8\ud55c \uc694\uc57d\uc744 \uc5bb\uc744 \uc218\ub3c4 \uc788\ub2e4. <br>(\ucc38\uace0: KLEE\ub294 \ud56d\uc0c1 \uac00\uc7a5 \ucd5c\uadfc\uc758 \ucd9c\ub825 \ub514\ub809\ud1a0\ub9ac\uc5d0<strong> klee-last<\/strong>\ub77c\ub294 \uc2ec\ubcfc\ub9ad \ub9c1\ud06c\ub97c \uc0dd\uc131\ud568)<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ klee-stats klee-last\n------------------------------------------------------------------------\n|  Path   |  Instrs|  Time(s)|  ICov(%)|  BCov(%)|  ICount|  TSolver(%)|\n------------------------------------------------------------------------\n|klee-last|   64546|     0.15|    22.07|    14.14|   19943|       62.97|\n------------------------------------------------------------------------<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c <strong>ICov<\/strong>\ub294 \ucee4\ubc84\ub41c LLVM \uba85\ub839\uc5b4 \ubc31\ubd84\uc728\uc744 \ub098\ud0c0\ub0b4\uba70, <strong>BCov<\/strong>\ub294 \ucee4\ubc84\ub41c \ubd84\uae30\uc758 \ubc31\ubd84\uc728\uc744 \uc758\ubbf8\ud55c\ub2e4.<br>\ubc31\ubd84\uc728\uc774 \uc65c \uc774\ub807\uac8c \ub0ae\uc740\uc9c0 \uad81\uae08\ud560 \uc218 \uc788\ub2e4.<br><strong>echo<\/strong>\uac00 \uc5bc\ub9c8\ub098 \ub354 \ub9ce\uc740 \ucf54\ub4dc\ub97c \uac00\uc9c8 \uc218 \uc788\uc744\uae4c?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc8fc\ub41c \uc774\uc720\ub294 \uc774\ub7ec\ud55c \uc22b\uc790\uac00 \ube44\ud2b8\ucf54\ub4dc \ud30c\uc77c\uc758 \ubaa8\ub4e0 \uba85\ub839\uc5b4\ub098 \ubd84\uae30\ub97c \uc0ac\uc6a9\ud558\uc5ec \uacc4\uc0b0\ub418\uae30 \ub54c\ubb38\uc774\ub2e4.<br>\uc774\uc5d0\ub294 \uc2e4\ud589\ub418\uc9c0 \uc54a\uc744 \uc218\ub3c4 \uc788\ub294 \ub9ce\uc740 \ub77c\uc774\ube0c\ub7ec\ub9ac \ucf54\ub4dc\uac00 \ud3ec\ud568\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&#8211;optimize<\/strong> \uc635\uc158\uc744 KLEE\uc5d0 \uc804\ub2ec\ud558\uc5ec \uc774 \ubb38\uc81c (\ub610\ub294 \uae30\ud0c0 \ubb38\uc81c)\ub97c \ud574\uacb0\ud560 \uc218 \uc788\ub2e4.<br>\uc774 \uc635\uc158\uc740 KLEE\uac00 \uc2e4\ud589\ud558\uae30 \uc804\uc5d0 \ube44\ud2b8\ucf54\ub4dc \ubaa8\ub4c8\uc5d0 \ub300\ud574 LLVM \ucd5c\uc801\ud654 \ud328\uc2a4\ub97c \uc2e4\ud589\ud558\ub3c4\ub85d \ud558\uba70 \ud2b9\ud788 dead code\ub97c \uc81c\uac70\ud55c\ub2e4.<br>\ube44\ud2b8\ucf54\ub4dc \ud30c\uc77c\uc744 \uc0ac\uc6a9\ud560 \ub54c\ub294 \uc8fc\ub85c \uc774 \ud50c\ub798\uadf8\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uc740 <strong>&#8211;optimize<\/strong>\ub97c \ud65c\uc131\ud654\ud588\uc744 \ub54c\uc758 \uacb0\uacfc\uc774\ub2e4:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ klee --optimize --libc=uclibc --posix-runtime .\/echo.bc --sym-arg 3\n...\nKLEE: done: total instructions = 33991\nKLEE: done: completed paths = 25\nKLEE: done: generated tests = 25\nsrc$ klee-stats klee-last\n------------------------------------------------------------------------\n|  Path   |  Instrs|  Time(s)|  ICov(%)|  BCov(%)|  ICount|  TSolver(%)|\n------------------------------------------------------------------------\n|klee-last|   33991|     0.13|    30.16|    21.91|    8339|       80.66|\n------------------------------------------------------------------------<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubc88\uc5d0\ub294 \uba85\ub839\uc5b4 \ucee4\ubc84\ub9ac\uc9c0\uac00 <strong>\uc57d 6% \uc815\ub3c4 \uc0c1\uc2b9<\/strong>\ud558\uc600\uc73c\uba70, KLEE\uac00 <strong>\ub354 \ube68\ub9ac \uc2e4\ud589\ub418\uace0 \ub354 \uc801\uc740 \uba85\ub839\uc5b4\ub97c \uc2e4\ud589<\/strong>\ud558\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\ub2e4.<br>\ub098\uba38\uc9c0 \ucf54\ub4dc\uc758 \ub300\ubd80\ubd84\uc740 \uc5ec\uc804\ud788 \ub77c\uc774\ube0c\ub7ec\ub9ac \ud568\uc218\uc5d0 \uc788\uc73c\uba70, \ucd5c\uc801\ud654 \ud504\ub85c\uadf8\ub7a8\uc774 \uc81c\uac70\ud558\uc9c0 \ubabb\ud558\ub294 \uc704\uce58\uc5d0 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub97c \ud655\uc778\ud558\uace0 echo \ub0b4\ubd80\uc5d0\uc11c \ucee4\ubc84\ub418\uc9c0 \uc54a\uc740 \ucf54\ub4dc\ub97c \ucc3e\uc73c\ub824\uba74, <br>KLEE \uc2e4\ud589 \uacb0\uacfc\ub97c \uc2dc\uac01\ud654\ud558\uae30 \uc704\ud574 <a href=\"https:\/\/kcachegrind.sourceforge.net\/html\/Home.html\">KCachegrind<\/a>\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6\ub2e8\uacc4: <a href=\"https:\/\/kcachegrind.sourceforge.net\/html\/Home.html\"><strong>kcachegrind<\/strong><\/a>\ub97c \uc0ac\uc6a9\ud558\uc5ec KLEE\uc758 \uc9c4\ud589 \uc0c1\ud669 \uc2dc\uac01\ud654\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">KCachegrind\ub294 valgrind\uc758 callgrind \ud50c\ub7ec\uadf8\uc778\uc744 \uc704\ud574 \uc791\uc131\ub41c \ud6cc\ub96d\ud55c \ud504\ub85c\ud30c\uc77c\ub9c1 \uc2dc\uac01\ud654 \ub3c4\uad6c\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubbf8 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\ub2e4\uba74, \ud604\ub300\uc801\uc778 Linux \ubc30\ud3ec\ud310\uc5d0\uc11c\ub294 \uc77c\ubc18\uc801\uc73c\ub85c \ud50c\ub7ab\ud3fc\uc758 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc124\uce58 \ub3c4\uad6c(\uc608: apt-get \ub610\ub294 yum)\ub97c \ud1b5\ud574 \uc27d\uac8c \uc124\uce58\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">KLEE\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ud14c\uc2a4\ud2b8 \ucd9c\ub825 \ub514\ub809\ud1a0\ub9ac\uc5d0 <strong>run.istats \ud30c\uc77c<\/strong>\uc744 \uc791\uc131\ud558\ub294\ub370, \uc774 \ud30c\uc77c\uc740 \uc0ac\uc2e4 <strong>KCachegrind \ud30c\uc77c<\/strong>\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc608\uc81c\uc5d0\uc11c\ub294<strong> &#8211;optimize<\/strong>\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0 \uc2e4\ud589\ud55c<strong> run.istats <\/strong>\ud30c\uc77c\uc774\ubbc0\ub85c \uacb0\uacfc\ub97c \ub354 \uc27d\uac8c \uc774\ud574\ud560 \uc218 \uc788\uc744 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KCachegrind<\/strong>\uac00 \uc774\ubbf8 \uc124\uce58\ub418\uc5b4 \uc788\uc73c\uba74 \ub2e4\uc74c \uba85\ub839\uc744 \uc2e4\ud589\ud558\uba74 \ub41c\ub2e4:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ kcachegrind klee-last\/run.istats<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KCachegrind<\/strong>\ub97c \uc5f4\uba74 \uc544\ub798\uc640 \ube44\uc2b7\ud55c \ucc3d\uc774 \ud45c\uc2dc\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&#8220;Instructions&#8221;<\/strong> \ud1b5\uacc4\uac00 \uc120\ud0dd\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uae30 \uc704\ud574 \uba54\ub274\uc5d0\uc11c <strong>&#8220;View&#8221; &gt; &#8220;Primary Event Type&#8221; &gt; &#8220;Instructions&#8221;<\/strong>\ub97c \uc120\ud0dd\ud558\uace0, <strong>&#8220;Source Code&#8221;<\/strong> \ubdf0\uac00 \uc120\ud0dd\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc57c \ub41c\ub2e4. <br>(\uc544\ub798 \uc2a4\ud06c\ub9b0\uc0f7\uc5d0\uc11c \uc624\ub978\ucabd \ud328\ub110\uc5d0 \ud574\ub2f9)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"748\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/coreutils_kc_0-1024x748.png\" alt=\"\" class=\"wp-image-1174\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/coreutils_kc_0-1024x748.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/coreutils_kc_0-300x219.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/coreutils_kc_0-768x561.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/coreutils_kc_0.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KCachegrind<\/strong> \uc790\uccb4\uac00 \ubcf5\uc7a1\ud55c \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc774\uae30\uc5d0 \uad00\uc2ec \uc788\ub294 \uc0ac\uc6a9\uc790\ub294 \ub354 \ub9ce\uc740 \uc815\ubcf4\uc640 \ubb38\uc11c\ub97c \uc704\ud574 KCachegrind \uc6f9\uc0ac\uc774\ud2b8\ub97c \ucc38\uc870\ud574\uc57c \ud55c\ub2e4.<br>\uadf8\ub7ec\ub098 \uae30\ubcf8\uc801\uc73c\ub85c \ud55c \ud328\ub110\uc740 &#8220;Flat Profile&#8221;\uc744 \ubcf4\uc5ec\uc8fc\uba70, \uc774\ub294 \uac01 \ud568\uc218\uc5d0\uc11c \uc2e4\ud589\ub41c \uba85\ub839\uc5b4 \uc218\ub97c \ubcf4\uc5ec\uc8fc\ub294 \ubaa9\ub85d\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&#8220;Self&#8221; \uc5f4<\/strong>\uc740 \ud568\uc218 \uc790\uccb4\uc5d0\uc11c \uc2e4\ud589\ub41c \uba85\ub839\uc5b4 \uc218\uc774\uba70, <strong>&#8220;Incl&#8221; (\ud3ec\ud568) \uc5f4<\/strong>\uc740 \ud568\uc218\uc5d0\uc11c \uc2e4\ud589\ub41c \uba85\ub839\uc5b4 \uc218 \ub610\ub294 \ud574\ub2f9 \ud568\uc218\uac00 \ud638\ucd9c\ud55c \ud568\uc218 \uc911 \uc5b4\ub290 \uac83\uc774\ub098 \uc2e4\ud589\ud55c \uba85\ub839\uc5b4 \uc218\ub97c \uc758\ubbf8\ud55c\ub2e4.<br>KLEE\ub294 \uc2e4\ud589\uc5d0 \uad00\ud55c \uc5ec\ub7ec \ud1b5\uacc4\ub97c \ud3ec\ud568\ud558\uace0 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uad00\uc2ec \uc788\ub294 \ud1b5\uacc4\ub85c, <strong>&#8220;Uncovered Instructions&#8221; <\/strong>\u2190 \uc774 \ud1b5\uacc4\ub97c \uc120\ud0dd\ud558\uace0,<br>\ud568\uc218 \ubaa9\ub85d\uc744 \ub2e4\uc2dc \uc815\ub82c\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uacb0\uacfc\ub97c \ubcfc \uc218 \uc788\uc744 \uac83\uc774\ub2e4:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"712\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/coreutils_kc_1-1024x712.png\" alt=\"\" class=\"wp-image-1175\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/coreutils_kc_1-1024x712.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/coreutils_kc_1-300x209.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/coreutils_kc_1-768x534.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/coreutils_kc_1.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ubd80\ubd84\uc758 \ucee4\ubc84\ub418\uc9c0 \uc54a\uc740 \uba85\ub839\uc5b4\uac00 \uc6b0\ub9ac\uac00 \uc608\uc0c1\ud55c \ub300\ub85c \ub77c\uc774\ube0c\ub7ec\ub9ac \ucf54\ub4dc\uc5d0 \uc788\uc74c\uc744 \uc54c \uc218 \uc788\ub2e4.<br>\uadf8\ub7ec\ub098 <strong>__user_main<\/strong> \ud568\uc218\ub97c \uc120\ud0dd\ud558\uba74 <strong>echo<\/strong> \uc790\uccb4 \ub0b4\uc5d0\uc11c \ucee4\ubc84\ub418\uc9c0 \uc54a\uc740 \ucf54\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uacbd\uc6b0 \ub300\ubd80\ubd84\uc758 \ucee4\ubc84\ub418\uc9c0 \uc54a\uc740 \uba85\ub839\uc5b4\ub294 <strong>do_v9 \ubcc0\uc218\uc5d0 \uc758\ud574 \ubcf4\ud638\ub418\ub294 \ud070 if \ubb38<\/strong> \ub0b4\uc5d0 \uc788\ub2e4.<br>\uc880 \ub354 \uc0b4\ud3b4\ubcf4\uba74, \uc774\uac83\uc774 <strong>-e<\/strong>\uac00 \uc804\ub2ec\ub420 \ub54c <strong>true<\/strong>\ub85c \uc124\uc815\ub418\ub294 \ud50c\ub798\uadf8\uc784\uc744 \uc54c \uc218 \uc788\ub2e4.<br>KLEE\uac00 \uc774 \ucf54\ub4dc\ub97c \ud0d0\uad6c\ud558\uc9c0 \uc54a\uc740 \uc774\uc720\ub294 \uc6b0\ub9ac\uac00 \ud558\ub098\uc758 \uc2ec\ubcfc\ub9ad \uc778\uc218\ub9cc \uc804\ub2ec\ud588\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ucf54\ub4dc\ub97c \uc2e4\ud589\ud558\ub824\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uba85\ub839\uc904\uc774 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ echo -e \\\\a<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c\ub85c <strong>KCachegrind \uc22b\uc790\ub97c \ud574\uc11d<\/strong>\ud558\ub824\ub294 \uacbd\uc6b0, <br>\uc774\ud574\ud574\uc57c \ud560 \ubbf8\ubb18\ud55c \uc810\uc740 \uc774 \uc22b\uc790\uac00 \ubaa8\ub4e0 \uc0c1\ud0dc\ub97c \ud1b5\ud569\ud558\uc5ec \ub204\uc801\ub41c \uc774\ubca4\ud2b8\ub97c \ud3ec\ud568\ud55c\ub2e4\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub2e4\uc74c\uacfc \uac19\uc740 \ucf54\ub4dc\ub97c \uace0\ub824\ud574\ubcf4\uba74\u2026<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Line 1:      a = 1;\nLine 2:      if (...)\nLine 3:        printf(\"hello\\\\n\");\nLine 4:      b = c;<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c\ub294 Line 1\uc758 \ubb38\uc7a5\uc774 \ud55c \ubc88\ub9cc \uc2e4\ud589\ub418\uc5c8\ub2e4\uba74, Line 4\uc758 \ubb38\uc7a5\uc740 \ucd5c\ub300 \ud55c \ubc88 \uc2e4\ud589\ub420 \uc218 \uc788\ub2e4.<br>\uadf8\ub7ec\ub098 KLEE\uac00 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589\ud560 \ub54c\ub294, Line 2\uc5d0\uc11c \ubcc4\ub3c4\uc758 \ud504\ub85c\uc138\uc2a4\ub97c \uc0dd\uc131\ud558\uace0 \ubd84\uae30\ud560 \uc218 \uc788\ub2e4.<br>\uc774 \uacbd\uc6b0, Line 4\ub294 Line 1\ubcf4\ub2e4 \ub354 \ub9ce\uc774 \uc2e4\ud589\ub420 \uc218 \uc788\ub2e4!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610 \ub2e4\ub978 \uc720\uc6a9\ud55c \uc815\ubcf4\uac00 \uc788\ub294\ub370, KLEE\ub294 \uc2e4\uc81c \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc774 \uc2e4\ud589\ub418\ub294 \ub3d9\uc548 \uc8fc\uae30\uc801\uc73c\ub85c <strong>run.istats<\/strong> \ud30c\uc77c\uc744 \uc791\uc131\ud55c\ub2e4.<br>\uc774\ub294 \uae34 \uc2e4\ud589 \uc2dc\uac04\uc744 \uac00\uc9c4 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc758 \uc0c1\ud0dc\ub97c \ubaa8\ub2c8\ud130\ub9c1\ud558\ub294 \ud55c \uac00\uc9c0 \ubc29\ubc95\uc744 \uc81c\uacf5\ud55c\ub2e4.<br>(\ub610 \ub2e4\ub978 \ubc29\ubc95\uc740 <strong>klee-stats<\/strong> \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc774 \ub418\uaca0\ub2e4)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>7\ub2e8\uacc4: KLEE\uac00 \uc0dd\uc131\ud55c \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \ub2e4\uc2dc \uc2e4\ud589\ud558\uae30<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc7a0\uc2dc KLEE\uc5d0\uc11c \uba40\uc5b4\uc838 KLEE\uac00 \uc0dd\uc131\ud55c \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub9cc \uc0b4\ud3b4\ubcf4\uaca0\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>klee-last<\/strong> \ub514\ub809\ud1a0\ub9ac \ub0b4\ubd80\ub97c \uc0b4\ud3b4\ubcf4\uba74<strong> 25\uac1c\uc758 .ktest <\/strong>\ud30c\uc77c\uc774 \uc788\uc744 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ ls klee-last\nassembly.ll\t  test000004.ktest  test000012.ktest  test000020.ktest\ninfo\t\t  test000005.ktest  test000013.ktest  test000021.ktest\nmessages.txt\t  test000006.ktest  test000014.ktest  test000022.ktest\nrun.istats\t  test000007.ktest  test000015.ktest  test000023.ktest\nrun.stats\t  test000008.ktest  test000016.ktest  test000024.ktest\ntest000001.ktest  test000009.ktest  test000017.ktest  test000025.ktest\ntest000002.ktest  test000010.ktest  test000018.ktest  warnings.txt\ntest000003.ktest  test000011.ktest  test000019.ktest<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7ec\ud55c \ud30c\uc77c\uc740 KLEE\uac00 \ub530\ub790\ub358 \uacbd\ub85c\ub97c \uc7ac\ud604\ud558\uae30 \uc704\ud574 \uc2ec\ubcfc\ub9ad \ub370\uc774\ud130\uc5d0 \uc0ac\uc6a9\ud560 \uc2e4\uc81c \uac12\ub4e4\uc744 \ud3ec\ud568\ud558\uace0 \uc788\ub2e4. <br>(\ucf54\ub4dc \ucee4\ubc84\ub9ac\uc9c0\ub97c \uc5bb\uae30 \uc704\ud55c \uac83\uc774\ub4e0, \ubc84\uadf8\ub97c \uc7ac\ud604\ud558\uae30 \uc704\ud55c \uac83\uc774\ub4e0)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c \uc774 \ud30c\uc77c\uc740 \uac12\uc744 \ucd94\uc801\ud558\uace0 \ub7f0\ud0c0\uc784 \ubc84\uc804\uc744 \ucd94\uc801\ud558\uae30 \uc704\ud574 POSIX \ub7f0\ud0c0\uc784\uc5d0\uc11c \uc0dd\uc131\ud55c \ucd94\uac00\uc801\uc778 \uba54\ud0c0\ub370\uc774\ud130\ub97c \ud3ec\ud568\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ktest-tool<\/strong>\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud55c \ud30c\uc77c\uc758 \ub0b4\uc6a9\uc744 \uac1c\ubcc4\uc801\uc73c\ub85c \uc0b4\ud3b4\ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ ktest-tool klee-last\/test000001.ktest\nktest file : 'klee-last\/test000001.ktest'\nargs       : ['.\/echo.bc', '--sym-arg', '3']\nnum objects: 2\nobject    0: name: 'arg0'\nobject    0: size: 4\nobject    0: data: '\\\\x00\\\\x00\\\\x00\\\\x00'\nobject    1: name: 'model_version'\nobject    1: size: 4\nobject    1: data: '\\\\x01\\\\x00\\\\x00\\\\x00'<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uacbd\uc6b0, \uc774 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub294 \uac12 <code>\\x00\\x00\\x00\\x00<\/code>\uc744 \uccab \ubc88\uc9f8 \uc778\uc218\ub85c \uc804\ub2ec\ud574\uc57c \ud568\uc744 \ub098\ud0c0\ub0b8\ub2e4.<br>\uadf8\ub7ec\ub098 .ktest \ud30c\uc77c\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \uc9c1\uc811 \ud655\uc778\ud558\uae30 \uc704\ud55c \uac83\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">POSIX \ub7f0\ud0c0\uc784\uc744 \uc704\ud574 <strong>.ktest <\/strong>\ud30c\uc77c\uc744 \uc77d\uace0 KLEE\uac00 \ub530\ub790\ub358 \uacbd\ub85c\ub97c \uc7ac\ud604\ud558\ub294\ub370 \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c \uc790\ub3d9\uc73c\ub85c \uc804\ub2ec\ud558\ub294 \ub3c4\uad6c\uc778 <strong>klee-replay<\/strong>\ub97c \uc81c\uacf5\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ub3c4\uad6c\uac00 \uc5b4\ub5bb\uac8c \uc791\ub3d9\ud558\ub294\uc9c0 \ubcf4\ub824\uba74, \ub124\uc774\ud2f0\ube0c \uc2e4\ud589 \ud30c\uc77c\uc744 \ube4c\ub4dc\ud55c \ub514\ub809\ud1a0\ub9ac\ub85c \ub3cc\uc544\uac00\uba74 \ud655\uc778\ud560 \uc218 \uc788\ub2e4:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ cd ..\nobj-llvm$ cd ..\ncoreutils-6.11$ cd obj-gcov\nobj-gcov$ cd src\nsrc$ ls -l echo\n-rwxrwxr-x 1 klee klee 135984 Nov 21 21:58 echo<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>klee-replay<\/strong> \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \uc2e4\ud589\ud560 \uc2e4\ud589 \ud30c\uc77c\uacfc \uc0ac\uc6a9\ud560 <strong>.ktest<\/strong> \ud30c\uc77c\uc744 \uc9c0\uc815\ud558\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud504\ub85c\uadf8\ub7a8 \uc778\uc218, \uc785\ub825 \ud30c\uc77c \ub4f1\uc740 \ubaa8\ub450<strong> .ktest \ud30c\uc77c<\/strong>\uc758 \ub370\uc774\ud130\ub97c \uae30\ubc18\uc73c\ub85c \uc0dd\uc131\ub41c\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ klee-replay .\/echo ..\/..\/obj-llvm\/src\/klee-last\/test000001.ktest\nklee-replay: TEST CASE: ..\/..\/obj-llvm\/src\/klee-last\/test000001.ktest\nklee-replay: ARGS: \".\/echo\" \"\"\n\nklee-replay: EXIT STATUS: NORMAL (0 seconds)<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c \uccab \ub450 \uc904\uacfc \ub9c8\uc9c0\ub9c9 \uc904\uc740 <strong>klee-replay<\/strong> \ub3c4\uad6c \uc790\uccb4\uc5d0\uc11c \ub098\uc628 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uccab \ub450 \uc904\uc740 \uc2e4\ud589 \uc911\uc778 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \ub098\uc5f4\ud558\uace0 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc5d0 \uc804\ub2ec\ub418\ub294 \uc778\uc218\uc758 \uad6c\uccb4\uc801\uc778 \uac12\ub4e4\uc744 \ub098\ud0c0\ub0b8\ub2e4. <br>(\uc774\uc804\uc5d0 <strong>.ktest<\/strong> \ud30c\uc77c\uc5d0\uc11c \ubcf4\uc558\ub358 \uac83\uacfc \uc77c\uce58\ud568\uc744 \ucc38\uace0\ud560 \uac83)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9c8\uc9c0\ub9c9 \uc904\uc740 \ud504\ub85c\uadf8\ub7a8\uc758 \uc885\ub8cc \uc0c1\ud0dc\uc640 \uc2e4\ud589\ud558\ub294 \ub370 \uac78\ub9b0 \uc2dc\uac04\uc744 \ub098\ud0c0\ub0b8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>klee-replay<\/strong> \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc5ec\ub7ec \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \ud558\ub098\uc529 \uc5f0\uc774\uc5b4 \uc2e4\ud589\ud558\ub3c4\ub85d \uc124\uc815\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \ud558\uc5ec <strong>gcov<\/strong> \ucee4\ubc84\ub9ac\uc9c0\ub97c <strong>klee-stats<\/strong>\uc5d0\uc11c \uc5bb\uc740 \uc22b\uc790\uc640 \ud55c\ubc88 \ube44\uad50\ud574\ubcf4\uc790\uba74\u2026<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ rm -f *.gcda # Get rid of any stale gcov files\nsrc$ klee-replay .\/echo ..\/..\/obj-llvm\/src\/klee-last\/*.ktest\nklee-replay: TEST CASE: ..\/..\/obj-llvm\/src\/klee-last\/test000001.ktest\nklee-replay: ARGS: \".\/echo\" \"@@@\"\n@@@\nklee-replay: EXIT STATUS: NORMAL (0 seconds)\n_..._\nklee-replay: TEST CASE: ..\/..\/obj-llvm\/src\/klee-last\/test000022.ktest\nklee-replay: ARGS: \".\/echo\" \"--v\"\necho (GNU coreutils) 6.11\nCopyright (C) 2008 Free Software Foundation, Inc.\n_..._\n\nsrc$ gcov echo\nFile '..\/..\/src\/echo.c'\nLines executed:52.43% of 103\nCreating 'echo.c.gcov'\n\nFile '..\/..\/src\/system.h'\nLines executed:100.00% of 3\nCreating 'system.h.gcov'\n<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c<strong> echo.c<\/strong>\uc758 \uc22b\uc790\ub294 <strong>klee-stats <\/strong>\uc22b\uc790\ubcf4\ub2e4 \ud06c\uac8c \ub098\ud0c0\ub09c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub294 <strong>gcov<\/strong>\uac00 \ud55c \ud30c\uc77c\uc758 \ub77c\uc778\ub9cc \uace0\ub824\ud558\uae30 \ub54c\ubb38\uc774\uba70, \uc804\uccb4 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc744 \uace0\ub824\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>kcachegrind<\/strong>\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c <strong>gcov<\/strong>\uac00 \ucd9c\ub825\ud55c \ucee4\ubc84\ub9ac\uc9c0 \ud30c\uc77c\uc744 \uac80\uc0ac\ud558\uc5ec \uc5b4\ub5a4 \ub77c\uc778\uc774 \ucee4\ubc84\ub418\uc5c8\ub294\uc9c0, \uc5b4\ub5a4 \ub77c\uc778\uc774 \ucee4\ubc84\ub418\uc9c0 \uc54a\uc558\ub294\uc9c0 \uc815\ud655\ud788 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30 \ucd9c\ub825\uc5d0\uc11c \uc77c\ubd80\ubd84\uc744 \uc0b4\ud3b4\ubcf4\uba74\u2026<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-:  193:      }\n        -:  194:\n       23:  195:just_echo:\n        -:  196:\n       23:  197:  if (do_v9)\n        -:  198:    {\n       10:  199:      while (argc > 0)\n        -:  200:\t{\n    #####:  201:\t  char const *s = argv[0];\n        -:  202:\t  unsigned char c;\n        -:  203:\n    #####:  204:\t  while ((c = *s++))\n        -:  205:\t    {\n    #####:  206:\t      if (c == '\\\\\\\\' &amp;&amp; *s)\n        -:  207:\t\t{\n    #####:  208:\t\t  switch (c = *s++)\n        -:  209:\t\t    {\n    #####:  210:\t\t    case 'a': c = '\\\\a'; break;\n    #####:  211:\t\t    case 'b': c = '\\\\b'; break;\n    #####:  212:\t\t    case 'c': exit (EXIT_SUCCESS);\n    #####:  213:\t\t    case 'f': c = '\\\\f'; break;\n    #####:  214:\t\t    case 'n': c = '\\\\n'; break;\n<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00\uc7a5 \uc67c\ucabd \uc5f4\uc740 \uac01 \ub77c\uc778\uc774 \uc2e4\ud589\ub41c \ud69f\uc218\ub97c \ub098\ud0c0\ub0b8\ub2e4.<br><strong>&#8211;<\/strong>\ub294 \ub77c\uc778\uc5d0 \uc2e4\ud589 \uac00\ub2a5\ud55c \ucf54\ub4dc\uac00 \uc5c6\uc74c\uc744 \uc758\ubbf8\ud558\uace0, <strong>#####<\/strong>\uc740 \ud574\ub2f9 \ub77c\uc778\uc774 \ucee4\ubc84\ub418\uc9c0 \uc54a\uc558\uc74c\uc744 \uc758\ubbf8\ud55c\ub2e4.<br>\uc5ec\uae30 \ubcf4\ub4ef\uc774, \uc5ec\uae30\uc11c \ucee4\ubc84\ub418\uc9c0 \uc54a\uc740 \ub77c\uc778\ub4e4\uc740 \uc815\ud655\ud788 <strong>kcachegrind<\/strong>\uc5d0\uc11c \ubcf4\uace0\ub41c \ucee4\ubc84\ub418\uc9c0 \uc54a\uc740 \ub77c\uc778\ub4e4\uacfc \uc77c\uce58\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub354 \ubcf5\uc7a1\ud55c \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc744 \ud14c\uc2a4\ud2b8\ud558\uae30\uc5d0 \uc55e\uc11c \uac04\ub2e8\ud55c <strong>echo.c<\/strong>\uc5d0 \ub300\ud55c \uc591\ud638\ud55c \ucee4\ubc84\ub9ac\uc9c0\ub97c \uc5bb\uc744 \uc218 \uc788\ub294\uc9c0 \ud655\uc778\ud574\ubcf4\uaca0\ub2e4.<br>\uc774\uc804\uc758 \uadf8 \ubb38\uc81c\ub294 \ub370\uc774\ud130\ub97c \ucda9\ubd84\ud788 \uc2ec\ubcfc\ub9ad\ud558\uac8c \ub9cc\ub4e4\uc9c0 \uc54a\uc558\uae30 \ub54c\ubb38\uc778\ub370, <strong>echo<\/strong>\uc5d0 \uc2ec\ubcfc\ub9ad \uc778\uc218 \ub450 \uac1c\ub97c \uc81c\uacf5\ud558\uba74 \ud504\ub85c\uadf8\ub7a8 \uc804\uccb4\ub97c \ucee4\ubc84\ud558\ub294 \ub370 \ucda9\ubd84\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">POSIX \ub7f0\ud0c0\uc784 <strong>&#8211;sym-args<\/strong> \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc5ec\ub7ec \uc635\uc158\uc744 \uc804\ub2ec\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uc740<strong> obj-llvm\/src <\/strong>\ub514\ub809\ud1a0\ub9ac\ub85c \ub2e4\uc2dc \uc804\ud658\ud574\uc11c, \uc218\ud589\ud574\uc57c \ud560 \ub2e8\uacc4\uc774\ub2e4:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ klee **--only-output-states-covering-new** **--optimize --libc=**uclibc **--posix-runtime** .\/echo.bc **--sym-args** 0 2 4\n...\nKLEE: done: total instructions = 7611521\nKLEE: done: completed paths = 10179\nKLEE: done: generated tests = 57\n<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>-sym-args<\/strong> \uc635\uc158\uc758 \ud615\uc2dd\uc740 \uc2e4\uc81c\ub85c \uc804\ub2ec\ud560 \ucd5c\uc18c \ubc0f \ucd5c\ub300 \uc778\uc218\uc758 \uc218\uc640 \uac01 \uc778\uc218\uc5d0 \uc0ac\uc6a9\ud560 \uae38\uc774\ub97c \uc9c0\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uacbd\uc6b0 <strong>&#8211;sym-args 0 2 4<\/strong>\ub294 0\uc5d0\uc11c 2\uac1c\uc758 \uc778\uc218(\ud3ec\ud568)\ub97c \uc804\ub2ec\ud558\uace0, \uac01 \uc778\uc218\uc758 \ucd5c\ub300 \uae38\uc774\ub294 4\uc790\ub85c \uc9c0\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c KLEE \uba85\ub839\uc904\uc5d0 <strong>&#8211;only-output-states-covering-new<\/strong> \uc635\uc158\uc744 \ucd94\uac00\uc2dc\ucf30\ub2e4.<br>\uae30\ubcf8\uc801\uc73c\ub85c KLEE\ub294 \ud0d0\uc0c9\ud558\ub294 \ubaa8\ub4e0 \uacbd\ub85c\uc5d0 \ub300\ud55c \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \uc791\uc131\ud55c\ub2e4.<br>\ud504\ub85c\uadf8\ub7a8\uc774 \ucee4\uc9c8\uc218\ub85d \uc774 \uc635\uc158\uc740 \ub35c \uc720\uc6a9\ud574\uc9c0\ub294\ub370, \uc774\ub7ec\ud55c \uc774\uc720\ub294 \ub9ce\uc740 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\uac00 \ub3d9\uc77c\ud55c \uacbd\ub85c\ub97c \ud0d0\uc0c9\ud558\uac8c \ub418\uba70 \uac01\uac01\uc744 \uacc4\uc0b0\ud558\uac70\ub098(\ub610\ub294 \ub2e4\uc2dc \uc2e4\ud589)\ud558\ub294 \uac83\uc740 \uc2dc\uac04 \ub0ad\ube44\uac00 \ub418\uae30 \ub54c\ubb38\uc774\ub2e4.<br>\uc774 \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 KLEE\uc5d0\uac8c \ucf54\ub4dc\uc5d0\uc11c \uc0c8\ub85c\uc6b4 \uba85\ub839\uc5b4\ub97c \ucee4\ubc84\ud558\uac70\ub098 \uc624\ub958\ub97c \ub9cc\ub098\ub294 \uacbd\ub85c\uc5d0 \ub300\ud574\uc11c\ub9cc \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \uc791\uc131\ud558\ub3c4\ub85d \uc9c0\uc2dc\ud55c\ub2e4.<br>\ucd9c\ub825\uc758 \ub9c8\uc9c0\ub9c9 \uc904\uc5d0\uc11c \ubcfc \uc218 \uc788\ub4ef\uc774, KLEE\ub294 \ucf54\ub4dc\ub97c \uac70\uc758 <strong>10,000\uac1c\uc758 \uacbd\ub85c<\/strong>\ub97c \ud0d0\uc0c9\ud588\uc9c0\ub9cc, <strong>57\uac1c\uc758 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4<\/strong>\ub9cc \uc791\uc131\ud574\uc57c \ud588\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>obj-gcov\/src<\/strong> \ub514\ub809\ud1a0\ub9ac\ub85c \ub3cc\uc544\uac00\uc11c \uac00\uc7a5 \ucd5c\uc2e0\uc758 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4 \uc138\ud2b8\ub97c \ub2e4\uc2dc \uc2e4\ud589\ud558\uba74, \uc774\uc81c <strong>echo.c<\/strong>\uc5d0 \ub300\ud55c \ud569\ub9ac\uc801\uc778 \ucee4\ubc84\ub9ac\uc9c0\ub97c \uc5bb\uc744 \uc218 \uc788\ub2e4:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">src$ rm -f *.gcda # Get rid of any stale gcov files\nsrc$ klee-replay .\/echo ..\/..\/obj-llvm\/src\/klee-last\/*.ktest\nklee-replay: TEST CASE: ..\/..\/obj-llvm\/src\/klee-last\/test000001.ktest\nklee-replay: ARGS: \".\/echo\"\n\n...\n\nsrc$ gcov echo\nFile '..\/..\/src\/echo.c'\nLines executed:97.09% of 103\nCreating 'echo.c.gcov'\n\nFile '..\/..\/src\/system.h'\nLines executed:100.00% of 3\nCreating 'system.h.gcov'\n<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc644\ubcbd\ud55c 100% \ub77c\uc778 \ucee4\ubc84\ub9ac\uc9c0\ub97c \uc5bb\uc9c0 \ubabb\ud55c \uc774\uc720\uc5d0 \ub300\ud55c \uc124\uba85\uc740 \ub3c5\uc790\uc5d0\uac8c \uc758\ubb38\uc744 \ub0a8\uae30\uace0 \uac00\uaca0\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8\ub2e8\uacc4: \ucee4\ubc84\ub9ac\uc9c0 \ubd84\uc11d\uc744 \uc704\ud574 <a href=\"https:\/\/github.com\/ddunbar\/zcov\">zcov<\/a> \ub3c4\uad6c \uc0ac\uc6a9\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ucee4\ubc84\ub9ac\uc9c0 \uacb0\uacfc\ub97c \uc2dc\uac01\ud654\ud558\uae30 \uc704\ud574 <a href=\"https:\/\/github.com\/ddunbar\/zcov\">zcov<\/a> \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ucd9c\ucc98 \ubc0f \ubc88\uc5ed<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/klee.github.io\/tutorials\/testing-coreutils\/\">https:\/\/klee.github.io\/tutorials\/testing-coreutils\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec GNU Coreutils\ub97c \ud14c\uc2a4\ud2b8\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \ud29c\ud1a0\ub9ac\uc5bc \ub354 \uc790\uc138\ud55c KLEE \uc0ac\uc6a9 \uc124\uba85\uc73c\ub85c, OSDI&#8217;08 Coreutils \uc2e4\ud5d8 \uc124\uba85\uc5d0 \ub530\ub77c KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec GNU Coreutils\ub97c \ud14c\uc2a4\ud2b8\ud558\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uaca0\ub2e4. \ubcf8 \ud29c\ud1a0\ub9ac\uc5bc\uc740 uClibc \ubc0f POSIX \ub7f0\ud0c0\uc784 \uc9c0\uc6d0\uacfc \ud568\uaed8 \uad6c\uc131 \ubc0f \ube4c\ub4dc\ub41c KLEE\ub85c \uac00\uc815\ud55c\ub2e4. \ubaa8\ub4e0 \ud14c\uc2a4\ud2b8\ub294 64\ube44\ud2b8 \ub9ac\ub205\uc2a4 \uba38\uc2e0\uc5d0\uc11c \uc218\ud589\ub418\uc5c8\ub2e4. 1\ub2e8\uacc4: gcov\uc640 \ud568\uaed8 coreutils \ube4c\ub4dc\ud558\uae30 \uba3c\uc800 coreutils \uc18c\uc2a4\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud558\uace0 \uc555\ucd95\uc744 \ud574\uc81c\ud55c\ub2e4.&hellip;&nbsp;<a href=\"https:\/\/h4ck.kr\/?p=1164\" rel=\"bookmark\">\ub354 \ubcf4\uae30 &raquo;<span class=\"screen-reader-text\">Coreutils \ud14c\uc2a4\ud2b8: KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec GNU Coreutils\ub97c \ud14c\uc2a4\ud2b8\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \uc124\uba85<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[15],"tags":[20],"class_list":["post-1164","post","type-post","status-publish","format-standard","hentry","category-whitehat1","tag-klee"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/1164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1164"}],"version-history":[{"count":4,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/1164\/revisions"}],"predecessor-version":[{"id":1179,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/1164\/revisions\/1179"}],"wp:attachment":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}