From patchwork Mon May 18 11:50:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Matthias_M=C3=A4nnich?= X-Patchwork-Id: 39287 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 50CFE388A82C; Mon, 18 May 2020 11:50:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 50CFE388A82C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1589802631; bh=KYerti3auvrfGU/IbVaukcHkVwPVeVAurOCGr6MAtW4=; h=Date:Subject:To:List-Id:List-Unsubscribe:List-Archive:List-Help: List-Subscribe:From:Reply-To:Cc:From; b=il5S/lUZ1xa1pJSIh0mgu9YzDsgg2aTo/8B9a03pGZdsxiTjQqe8JWrH6qI/0WHMh NBXdbB0RKSqm1zWO6wYNccdNNsBCaruFvmbQFZKIS/qUWO2uhefcrmTc+ux1w5QKy0 5J17zITmFFVGiNyPAEbXNWn9PCXAQE56+jHRCh3I= X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by sourceware.org (Postfix) with ESMTPS id F08AC388A823 for ; Mon, 18 May 2020 11:50:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org F08AC388A823 Received: by mail-yb1-xb4a.google.com with SMTP id 5so11174040ybe.17 for ; Mon, 18 May 2020 04:50:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=KYerti3auvrfGU/IbVaukcHkVwPVeVAurOCGr6MAtW4=; b=n7yFIkqEHDs9w4+83UICZnoMQh8d68YvUMSE28PJndMRLqtgJihSTtklv3mSlyCXOs aWd0Hh6SGQ95dTrcClZJyVeuek7bKngwt/xe2M8TaoVfDWP/eWEhNeqJdAw8cuq+6w3L DrDyJkIuQ6YiY/EyPRPDzGLou1hzrbEHblkt9m5NaZVzbyxJ4MG1uXIVvdZFwOdyeQy6 O3ep9KiZzGsdCTAQERcsjoMn92UHpuB+nJkmbkoSkSjdV++FHWsBQxH7CXx16ANWZS3w BDjDEaA3pkqZ1gkZHSWDnPDJQH+JIyb3HjNkB+Tm+4PNKSSPEXBEsjsk1a41tE70J+Bd 4P4w== X-Gm-Message-State: AOAM533YoAh4zMpkLKuLogZupm6EQU62R5tzwG+KvuvSzhb5NZYrFssC Tcf5D5s5kn2oJ6RAf32HeMnEJxmHBDrv/F8kfWstwAgccNvRJxSkD5ZFIsWWE4/ZvejULUAfm3f wY5Ini29kcABr42I/dMDq6NrEuyM22mqcW+iHvy5hZHHUrNC0dREEq8PvPvG6PLDj+NjDQyE= X-Google-Smtp-Source: ABdhPJyQQbGkEl9xrcwtfxJjLN26U+qGS2O2wmL2IS2ZsJNRhXqMzJKTlRyLsBcwBpBUcrmNN1a+OHt4jN5p8w== X-Received: by 2002:a05:6902:68b:: with SMTP id i11mr7650670ybt.398.1589802624254; Mon, 18 May 2020 04:50:24 -0700 (PDT) Date: Mon, 18 May 2020 13:50:13 +0200 Message-Id: <20200518115014.225405-1-maennich@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.26.2.761.g0e0b3e54be-goog Subject: [PATCH 1/2] tests: Add symtab test suite To: libabigail@sourceware.org X-Spam-Status: No, score=-22.2 required=5.0 tests=BAYES_05, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_LOTSOFHASH, KAM_SHORT, LIKELY_SPAM_BODY, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-Patchwork-Original-From: Matthias Maennich via Libabigail From: =?utf-8?q?Matthias_M=C3=A4nnich?= Reply-To: Matthias Maennich Cc: maennich@google.com, gprocida@google.com, kernel-team@android.com Errors-To: libabigail-bounces@sourceware.org Sender: "Libabigail" Add (Catch based) test suite to test symbol table reading through the result persisted in abigail::corpus. The test cases are created through simple C source files targeting the desired properties (having an undefined/export function or both). The Makefile that comes with them recreates the test cases from the sources. This covers reading sorted_(undefined_)var|fun_symbols as well as the corresponding symbols maps accessible through the accessors of abigail::corpus. * tests/Makefile.am: add new test runtestsymtab * tests/data/Makefile.am: add new test data for runtestsymtab * tests/data/test-symtab/basic/empty.c: New test case source. * tests/data/test-symtab/basic/link_against_me.c: Likewise. * tests/data/test-symtab/basic/no_debug_info.c: Likewise. * tests/data/test-symtab/basic/one_function_one_variable.c: Likewise. * tests/data/test-symtab/basic/one_function_one_variable_undefined.c: Likewise. * tests/data/test-symtab/basic/single_function.c: Likewise. * tests/data/test-symtab/basic/single_undefined_function.c: Likewise. * tests/data/test-symtab/basic/single_undefined_variable.c: Likewise. * tests/data/test-symtab/basic/single_variable.c: Likewise. * tests/data/test-symtab/basic/empty.so: New test data. * tests/data/test-symtab/basic/link_against_me.so: Likewise. * tests/data/test-symtab/basic/no_debug_info.so: Likewise. * tests/data/test-symtab/basic/one_function_one_variable.so: Likewise. * tests/data/test-symtab/basic/one_function_one_variable_undefined.so: Likewise. * tests/data/test-symtab/basic/single_function.so: Likewise. * tests/data/test-symtab/basic/single_undefined_function.so: Likewise. * tests/data/test-symtab/basic/single_undefined_variable.so: Likewise. * tests/data/test-symtab/basic/single_variable.so: Likewise. * tests/test-symtab.cc: New test driver. Signed-off-by: Matthias Maennich --- tests/Makefile.am | 4 + tests/data/Makefile.am | 22 +- tests/data/test-symtab/basic/Makefile | 19 ++ tests/data/test-symtab/basic/empty.c | 1 + tests/data/test-symtab/basic/empty.so | Bin 0 -> 15608 bytes .../data/test-symtab/basic/link_against_me.c | 2 + .../data/test-symtab/basic/link_against_me.so | Bin 0 -> 15600 bytes tests/data/test-symtab/basic/no_debug_info.c | 1 + tests/data/test-symtab/basic/no_debug_info.so | Bin 0 -> 15360 bytes .../basic/one_function_one_variable.c | 3 + .../basic/one_function_one_variable.so | Bin 0 -> 16624 bytes .../one_function_one_variable_undefined.c | 7 + .../one_function_one_variable_undefined.so | Bin 0 -> 16792 bytes .../data/test-symtab/basic/single_function.c | 1 + .../data/test-symtab/basic/single_function.so | Bin 0 -> 16472 bytes .../basic/single_undefined_function.c | 5 + .../basic/single_undefined_function.so | Bin 0 -> 16648 bytes .../basic/single_undefined_variable.c | 7 + .../basic/single_undefined_variable.so | Bin 0 -> 16728 bytes .../data/test-symtab/basic/single_variable.c | 1 + .../data/test-symtab/basic/single_variable.so | Bin 0 -> 16280 bytes tests/test-symtab.cc | 205 ++++++++++++++++++ 22 files changed, 277 insertions(+), 1 deletion(-) create mode 100644 tests/data/test-symtab/basic/Makefile create mode 100644 tests/data/test-symtab/basic/empty.c create mode 100755 tests/data/test-symtab/basic/empty.so create mode 100644 tests/data/test-symtab/basic/link_against_me.c create mode 100755 tests/data/test-symtab/basic/link_against_me.so create mode 100644 tests/data/test-symtab/basic/no_debug_info.c create mode 100755 tests/data/test-symtab/basic/no_debug_info.so create mode 100644 tests/data/test-symtab/basic/one_function_one_variable.c create mode 100755 tests/data/test-symtab/basic/one_function_one_variable.so create mode 100644 tests/data/test-symtab/basic/one_function_one_variable_undefined.c create mode 100755 tests/data/test-symtab/basic/one_function_one_variable_undefined.so create mode 100644 tests/data/test-symtab/basic/single_function.c create mode 100755 tests/data/test-symtab/basic/single_function.so create mode 100644 tests/data/test-symtab/basic/single_undefined_function.c create mode 100755 tests/data/test-symtab/basic/single_undefined_function.so create mode 100644 tests/data/test-symtab/basic/single_undefined_variable.c create mode 100755 tests/data/test-symtab/basic/single_undefined_variable.so create mode 100644 tests/data/test-symtab/basic/single_variable.c create mode 100755 tests/data/test-symtab/basic/single_variable.so create mode 100644 tests/test-symtab.cc diff --git a/tests/Makefile.am b/tests/Makefile.am index 2d8ab9e794a4..c2d4d1dc5d35 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -49,6 +49,7 @@ runtestini \ runtestkmiwhitelist \ runtestlookupsyms \ runtestreadwrite \ +runtestsymtab \ runtesttoolsutils \ $(FEDABIPKGDIFF_TEST) \ $(ZIP_ARCHIVE_TESTS) \ @@ -154,6 +155,9 @@ runtestelfhelpers_LDADD = libcatch.la $(top_builddir)/src/libabigail.la runtestcxxcompat_SOURCES = test-cxx-compat.cc runtestcxxcompat_LDADD = libcatch.la $(top_builddir)/src/libabigail.la +runtestsymtab_SOURCES = test-symtab.cc +runtestsymtab_LDADD = libtestutils.la libcatch.la $(top_builddir)/src/libabigail.la + runtestsvg_SOURCES=test-svg.cc runtestsvg_LDADD=$(top_builddir)/src/libabigail.la diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 7e91f52c44fe..6505de594ab2 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -1700,4 +1700,24 @@ test-ini/test01-equal-in-property-string.abignore \ test-kmi-whitelist/whitelist-with-single-entry \ test-kmi-whitelist/whitelist-with-another-single-entry \ test-kmi-whitelist/whitelist-with-duplicate-entry \ -test-kmi-whitelist/whitelist-with-two-sections +test-kmi-whitelist/whitelist-with-two-sections \ +\ +test-symtab/basic/Makefile \ +test-symtab/basic/empty.c \ +test-symtab/basic/empty.so \ +test-symtab/basic/link_against_me.c \ +test-symtab/basic/link_against_me.so \ +test-symtab/basic/no_debug_info.c \ +test-symtab/basic/no_debug_info.so \ +test-symtab/basic/one_function_one_variable.c \ +test-symtab/basic/one_function_one_variable.so \ +test-symtab/basic/one_function_one_variable_undefined.c \ +test-symtab/basic/one_function_one_variable_undefined.so \ +test-symtab/basic/single_function.c \ +test-symtab/basic/single_function.so \ +test-symtab/basic/single_undefined_function.c \ +test-symtab/basic/single_undefined_function.so \ +test-symtab/basic/single_undefined_variable.c \ +test-symtab/basic/single_undefined_variable.so \ +test-symtab/basic/single_variable.c \ +test-symtab/basic/single_variable.so diff --git a/tests/data/test-symtab/basic/Makefile b/tests/data/test-symtab/basic/Makefile new file mode 100644 index 000000000000..c84d128a4e28 --- /dev/null +++ b/tests/data/test-symtab/basic/Makefile @@ -0,0 +1,19 @@ +srcs = $(wildcard *.c) +libs = $(srcs:.c=.so) + +flags = -fPIC + +all: $(libs) + +clean: + rm $(libs) + +no_debug_info.so: no_debug_info.c Makefile + $(CC) $< -shared $(flags) -o $@ + +link_against_me.so: link_against_me.c + $(CC) $< -shared $(flags) -o $@ + +%.so: %.c Makefile link_against_me.so + $(CC) $< -shared $(flags) -g -o $@ link_against_me.so + diff --git a/tests/data/test-symtab/basic/empty.c b/tests/data/test-symtab/basic/empty.c new file mode 100644 index 000000000000..5bb380ba0db8 --- /dev/null +++ b/tests/data/test-symtab/basic/empty.c @@ -0,0 +1 @@ +// empty! diff --git a/tests/data/test-symtab/basic/empty.so b/tests/data/test-symtab/basic/empty.so new file mode 100755 index 0000000000000000000000000000000000000000..28a54747116d9aa30b02192080e09300835c6716 GIT binary patch literal 15608 zcmeHOUuYaf7@y=Co7T3mw%TaLu2O9a-X@J{k_u@r&7W>1X=_bE!Lsb#ZSD^4PuSg~ zIejn?gqBk5lk`EM`rtpL_#(chRQg-r6DSFBL@<|nAdsY_Vs$`Ph@`}j=%i=2*yY=9SW~ss788L8 zRLHp8MhB}TAEoFLDD>>-x2Lf)70rJ(DEa~#_PdWv=k>sT{zx;u#(}APC@K8fNydIx zq~8_k2YOoCgLZNdD%`%`2M)j`LiYwz0qWb5?1ejCmfO460{G65AIDg4eDkuOpcp3m z?4&Xn z)Foq)M&9%wx_Lh(GGO+8Z$FznKOm5RV=(} zQ&R%#1M|5efxaN;AM#J7ygS8Sg5HaufL}Tq@I0qH29)KH97}_BDy)5Kssx1QY`If`GB`W2bScU(;2?MYGXW2((ufq`*(_#5`U-0>BY!>isy6z(mqQ@Bm_rLH~mY0tx|zfI>hapb$_9 zCy)5Kssx1QY@a0fm4v z+O3jbmHZ=;$Nk*hlE=N+9|7rQfrBb6gueI2aLY$&yzs+rv4#Y&(Svv6hp`56=w^BnSGnWKK)Y zoIWv1Ps^>9GkK>{u2kJ*wS2x%&L%y+vh51HH0#y$jOaP<_GBt$&ncvPiiNb5F6692 z(R6DiGVJke*K>QamS_3Zq!gzuw~&dBtd&pj&Ft_cY-y4pA=XLQD?zvAu|AsR8yf4V zS>7SKV{Bt)0Mz4vB&>U=6J3F-;4U0}V1wF&W{&|>X(gv}cDgrCXKVEqc;x!)ju z;VU0ag}*cHq7}DoQa&5O`3WhsY_*EK&*{QSnnx$fJy&g194e0vN2H>Er}U$;r#9w5T= zh4X;4sF3*G>&OS!k&BGuxn6Z$3`a2Qxg*}j!&D@ zBgZDkDMoW{i=QA9p9J%FsWZ)4HbM`+utYtFKEOotsFf?8t>?;BJzXsnv&lkM_*~v{ z^Fq(o%H$bP&k?#~7cCYF-5-ZOTlDl?#S^+`&(V_+6}p`dunUX=*a98u6u~Odr=EQ| z1~ou?fzZ>gD|DK>63qw6>~u9pnLdKK34lB7IElw-qxQC2{4-jU{h4Ahw#^yk>{ z$NmP2^G>w?I5(XkU+x#qTaA5CeiwI zTr~f=_JBX=RZ@lhMM~QC1{CX5N*m*W|GT6J`(r=smj1Ad`h)*~Dr|%PYpFn^t>e#a zh07zVi?M?Aus-A=_p2UryY^q}xY--~n8DePiq) fcd_DUo6`9S9hJ%mODD#7{{fk&yciBj^{D?}#aZM} literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/basic/link_against_me.c b/tests/data/test-symtab/basic/link_against_me.c new file mode 100644 index 000000000000..42d6a46bd23d --- /dev/null +++ b/tests/data/test-symtab/basic/link_against_me.c @@ -0,0 +1,2 @@ +int undefined_variable =1; +void undefined_function() { } diff --git a/tests/data/test-symtab/basic/link_against_me.so b/tests/data/test-symtab/basic/link_against_me.so new file mode 100755 index 0000000000000000000000000000000000000000..33c8b5d62cd639f4cb96ff2b363326fbf1818668 GIT binary patch literal 15600 zcmeHOU1%It6uz5H>{inxt$)#qT_u)O>~xLQrb_Il`ROQ4jWK}=mgyur$*%5C*_~)o z1p}qhQiSM(_@eYdMD)QQ5Jh~jM0`@vHz^2FEL89(B9#i-^_-dW?aodnB0h-7y=3Ox z^WF2Ed+)h-ckX8HeR^pBa8oR%kmBlI#ag<aEGRb60N$*~huZRj6*!?wbn266ZVkcJxDxm=if~T z`_lh@g&xGmg$9%trB z`#MxYje28G*oQklEq?XrmAfe$nT82XMwHyP2G0G8vgi7v@GRk*Xf|JvfUF~((*#`` zsU(?ZP39bDENiAvDq0oSF1wbctoz1Ctc+83W^xtRDUXi~iDq zU>^HEVV-LFVTV%Y@sHf5>gVRMj}uF^Mpp0qhKj1Ud`tKCEosWVPPyqt7?{uYea+lw zTh6lBebK#|+`Yhga<{&^+`eUjZI?un{o9`Xo$SZlcF8=sVxIYNk9p=|+>CuGny>5b3c) zs2B3PC#i6PIE#mtyuLT|mRqWmj)0DUj)0DUj)0DUj)0DUj)0DUj)0DUj==vf0tBeuD9U1E`595VL?y1x9WTJ>Hz zwsj1*b>828#S@7IwdeYKZoQ-HX67-Ue#Wbh$PVu!8E5VzbQP#B@7-&ETgNj^0~;>e zOBJwzPC5cQ0y+XZ0y+XZ0y+XZ0y+XZ0y+XZ0{@E$VE-!itG1$7vVV1h=)a48o#@yH zyIFMnR=i$x?1$ywmz+?3;Zn84`eE7Jihal_+0=?X)F-6;ayF*)q%YJJB0ELa_QIxp z0Q-mEk^|+nthke4lH+bK`z}?C2L1!{&7n8e<9^>}y zJ-yrfT(T$ClcK*n!VV(zIPEmXe)wQuVLmtF?J8>g;?!B} z?{2i;s8l+L`1v^PbH{iGOXKQF)fH)v{|42qd7d<@pR0Am&++HEiBF4!;?^ekkq~~9 z;P^i9y(qPdGO<8=xIRw9bj2d#Qy`q{T?zT0_v}~4`9;E`+P_x6UibX8s?$lzgi@5B z_sJ%vR*%;i58tG^(~V9(6FfXFX9;iOlN6zTEqnCU^X(VUe)atPjqn(qa0t(bcIt4_ z^VN8}aSgn84SbyNsB;xFgh!pLIJ$-(HC1*i?(FomF{SFqEG)NRP4PjC3Z2Kul&qP2 zY0}PH8MjofSoZ9knkp5J<^7`t}v+!bxa=Pz=WT`t@6mQ!@g^J==sCAY#Jk~!lWDOk{67Ra zCVz1*CE{#J9jcu`2_1A%MrFR>+LI*RvM;m96-%yT%oJyh$=O^!vpttlo|d&MS!HDA zi^TM$TUJKd$=eJn!wZ0MB<~tCC07})Ge>tG6lFMB34b<26lgxh9|zwOdGco$a#K`q z$z_jJo$cDnn5F|Dnd~4SvSU@}TxS!*h-QA0AB2L51>sjO=7WD& zGLYS3kM#i74{*~<8D4{ckLM#K))`zceWYsZ9;`Rggt2e%@f?N3I)_ZW#6E(_B!zv0 zkLN8U>JPUc^^XykebP6WpYS~<@><{`!}0UKckBG5@F3w1ZlFURq=I1mc+NwH;|(3s z4)O6^gZvN`i$uMEXF`0e8z8YhgnhXG{9NPqBmOEWmLj`Eg$VO`e1m+fLm;05Q6%~e z_&8J^i0nZ)OkM$4EXW|?t`VAh& zf!{T8|G~#PX_J_Di~ikAC~8Ul;N$KcI{27juTZ1pZb4BH5NxP}b(2U*z3K#o?$l;2J`^ n=|cMv7oOi}yGNAU>79P&Bq|a-r1FX-lD|#PCoc&PBFz62zM2mb literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/basic/no_debug_info.c b/tests/data/test-symtab/basic/no_debug_info.c new file mode 100644 index 000000000000..5bb380ba0db8 --- /dev/null +++ b/tests/data/test-symtab/basic/no_debug_info.c @@ -0,0 +1 @@ +// empty! diff --git a/tests/data/test-symtab/basic/no_debug_info.so b/tests/data/test-symtab/basic/no_debug_info.so new file mode 100755 index 0000000000000000000000000000000000000000..827c1eee3e4e8f326af7e360ea444627ee59bee6 GIT binary patch literal 15360 zcmeHOPiz%M7@yZirA45kAXSX45e*nwY6U4Kg;)BA#k56hiJC|@+rDl4lJ|$aw~Z|( z(%5Jqgvg0t;z7BH#)B8VT7n@aUc`%fF^z!)6E!taQ$6tfzTNNlx^KEQgoCG<^zAp_ z@B1?|znSgqVdi9Se_ul?rBKppzhW(OPlRN|kaW)HPLgkx{YcMkAX<*Co0H2|LGy?O7a5#R{J_iM~L_>1q zTt*rO3GHFkl!k3>XFs1BQXyVZfRFrO7$d`0FmEoVVtJhUz!Y?3YbfYN6FV zKar{W*mZigY|T*ZW2%jvgM)Ln^9PPS+xRVueT%^+N_U>?l&-lt-?DXveXocl|Bpid zJr`N*xaFK)a4!FLz`4Abc2ZZJYqx@plwd#-G*#!vTDJBq#m{u+$fPEB9d%|qALgoa z`bMzUIn((ZDL0Q*tJRwm^tjsCMSAKO+J*f2buw}kkGpQ91e#(PFbo(53GH zFkl!k3>XFs1BL;^fMLKeU>GnA7zPXjh5^HXVZbn87%&VN1`Gpt%mB{S;vDT-WRi2W z>qK7^{Q=Q&K6i`gICuM?=s2hQkY@k$R<*>?b~$t#os3={`bY*!aAQ_U!{KMqZ4(7-`57UoS*fAAJ_PNL~y+C zNVbmA9@B=I0YP1|wg2}Nl zdsHo5w{U}kJIWU>Ds(R+TXM(qr4cXhW`k0>;(C))YP3{1p7#SkYwz8?dvCH6-^0kc zUb*Z|yM8e!Pph%ASMc5JWT7xkAu-J*&!En=Sfbk>Ba`D~87ooWT(@tiYoOQd9qi%T zAw91Qb`2cvCYWx90CcmJk~`rQvwTN{Gpeu)%01M7=c1GF=F~5t2bUk`t&EOM!2X7boqJ$y`3WGnZANHsMt!l%1U} zQe-59va-v5-eXYN;W+H$`M@4819?qCFI0*iRs_|6_Z=evGso zRN*}x@z{4Dr^J!lrB`9;evjZ8lAIgyb5eoCcZ0ZxIZ$Wm(2sK?9{U(1z8m!Zw{kF* zA^LH@@ZD0|@8tjDW_F4doxk_U7LUii2&w&h)zhn&wRr5GkUHPcAw4ZVBMm}+7VA4# z_5O@&@z{?c@x6sK`uKSt;qiliWr?Rq-5>oHFZCK#c(23!;JXy}@N|FZkh2uq5{t)o zz$v+J2tRTO3v|eL2<5p)`}khKeMQ_$#5fQK9$%$c9zWvoT`^CmC%IVRbLoM2$O~kO z$E%F^wnY-_RM6V{gZK}~5Rb=x*edbx)8nCkNEP-$|E)}9u~vxZw&LXzQWz8WnhEib z*N~`!__(aCotUp92^XYee2J2CVLaf4*C+ZO3s)VxBW(~3iBVJO%Pu+o?LAR|{{HCk F{{nUkt>yp# literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/basic/one_function_one_variable.c b/tests/data/test-symtab/basic/one_function_one_variable.c new file mode 100644 index 000000000000..f31122a88fb8 --- /dev/null +++ b/tests/data/test-symtab/basic/one_function_one_variable.c @@ -0,0 +1,3 @@ +void exported_function(){} + +int exported_variable; diff --git a/tests/data/test-symtab/basic/one_function_one_variable.so b/tests/data/test-symtab/basic/one_function_one_variable.so new file mode 100755 index 0000000000000000000000000000000000000000..51d918c7ec9be6e5a900bcccc5f0964486d76cb4 GIT binary patch literal 16624 zcmeHOZ)hCH6`#G;*-~VmWIJi4IIXuq4tB|{WJQUk7+I&kJ{!w%RS8mv+3elz-7Vbh ziM>5rN(vP{`_4U1- zd3$@SJ-1LOCCs4P_h;Vk&CHvbojKjiSLRPIBou{FQrU5aQl_74G9u&pgkXSV*f{Hf z=V#bMzHL`4Ya92p$Rx^yUo0bu)DQbRB#&3^{;Wg!v`<90yahRzK( zjj!_9{QlvI ztE;!(U;i`K1)Gokj5uDuhoLDNNL=p?l~z_hI&j5T#5@*2r^Vm zVf)xn1{g>b&lTYJ!YIEj0=3i6g@<93sx`-`d#39d1~X1BFB%2QwMur~v)tvy*-Fi^ zmd#wn;(75oMt;pSine1`?B^_It*zEv&ng(jhLiW~n$yypH(lFzCd#LAOXF-y)bElQ zm!!Wg^aB|VBt6MDr??*b1Y<+#R!A>~uAj9P(qo@fx)ah<>?luC837pq837pq837pq z837pq837rA|E~ySFMiyey^{R>Fk{&lUiT8sce5AY>b?LZy&)*rzv|mR{yijz?`AJ=W#9P2 zRQ8QKYF2qW`}4cr{or6xIOuNPEcP9kYvDI0ZOCGc;g#&g$=(Tg_$$=m^j<(Az*afMUYmdNC=_Eiq-SU)jHFXZI%j zaERE4;Pb0LHk1I{GRX+Y2*?P?2*?P?2*?P?2*?P?2*?P?2z(+UK<8KKyy`A$ zl{mk;Tgd+q@}Q9E9PEA}(|5%Og-qvR@%tqv%D;WLSws0*ak$k#gAVeDIMm9|C^L3R zX_!0U4D?;bkqvg>#;S;m7 zPilwetekB++Jru;A4!jnALg7kIx;!}e~&Rdjm-nb+q>=5bi}<0a+j~`RNOl|vSc}y zYv(~U-F$g+ZTyM!6JuJsq@{~zPtL;Atgk!yvRiX%je5G_T(F%&+QTE{^_WxT+fSYk zU#Jh~YmVpIx#5bPGjn#yv@1q^y$Vi-J*)23hYO}>`fOULb7tM<&Gp;d;QUT4GuZ2-6OEG$%wd?y>-27Fcv2?z_-F^>anXrcQD%^CS`5w+y;a-Fm zYft|T3|r$Ad7xb(B$a)tgC3@2Oi~%W9osWiMsNR?9_AptN&eJqX*h>(lmy;Viu6}X z=vO29&j~%PL);5vM}bj7alrC0Ex<>K>6a?#vD~eQe_THlw!MG91^T%9cWT!UeLuU{ zOByhd6zAtnuu<6daq^C@-@C1Ue<}3Q@$doY6L^Cs(yrfup5dyf`AqQmCvXY2eO{>0 zFa>VhM91ME=p!zCUxzyAXFwl!Z)X|warbtL9sGQ?gP!GGukJO9MR<+3uJ;&T)yU%o zpE}$FD%6ZprIs@*M!~DOb;E3|v3#w%TCw0NkA8G)>}b3Z-utl)({;^t!-5y>IxD(n z)iMf=YIPkTA;|zsug&yc3x{DWEKM)Y8}n!8@MhB7m(ENto}2}ba4U(FMxkCa%BEAm z`$^~>vSGn7=CcBvom*ml4ViJ`^iwm_r;Vo;7QQ&YY%EXDoSp}_?N^ul`%kfVoPwo= z7R1)_6I^q;=k2NXi&jkMYYkA(g{25+nK-BBS$fH7=(&bnDWvTJ^QE#`FEhQc?f{Zg z&t751!ze^xL=4+&G+&+`3X3qKAl?x6`!`)s1ugejH_Q#07N z(~6J*9r`9b?c0gcJ{?T_gg(M43j+EkJna{VQu)#PQ~67PMW65{p7uRN>H7`2iMAitM{GaE zpJ~EU&> zfJAm&YRRPkE@a@?q4H_}M)!;99x=6>aMTaa02bR%c-rUPgwxKLH2>Lp5T58OkQK(W zjIbTyl*YNx2JIpI4{4RPx6m|K^v;Smf<;C2Ry}rTQT-yV6c2)PHIN@ zM*<;+h-hv7Pth7XMg8dvy!puXn_{v5!K dHl(Xm5Ep}Tg@`-HSp2Kw+yeKP;S>?szW}b0nQj08 literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/basic/one_function_one_variable_undefined.c b/tests/data/test-symtab/basic/one_function_one_variable_undefined.c new file mode 100644 index 000000000000..53ff5d82c5f8 --- /dev/null +++ b/tests/data/test-symtab/basic/one_function_one_variable_undefined.c @@ -0,0 +1,7 @@ +extern int undefined_variable; +void undefined_function(int); + + +static void local_function(){ + undefined_function(undefined_variable); +} diff --git a/tests/data/test-symtab/basic/one_function_one_variable_undefined.so b/tests/data/test-symtab/basic/one_function_one_variable_undefined.so new file mode 100755 index 0000000000000000000000000000000000000000..fc2356c2aa0af88bad9f3c0f88837bebd5a53575 GIT binary patch literal 16792 zcmeHOYit}>6~43UO`NX1cIq^Bnv_hzK`z4U#Ch0G;$;2Ih9+q+jtZ1$GP^tbP%I5W)8}R)iXsrA;*?%b`ZyTkJBprj1 zQ>}7MmbWe?co8yVURv_fk_UNH+C#QG+1hpFdX8`g0kY451ti;YxcHWpv*W6*y6r+c zVGjx3hl$7ayxRb`&&u+)^2<+T`yk;SE_WAQQM%4txFmk?-7B{rdEd*w_|>gFCx3sV z=h<%@&RylYustr;?>5Ykp&DTP!7XrZPmq0)@O$a z*DOsF+S$4DTF$5$g;L!zYIEl&%T?2u(=%nmNefQVvJ1MFFPVC|^t2%wX3ikR$Z1dM zwUW)lK8{5Xw z^!2x_j`WSO2~t)sQw>*(bbBo}O1g3xyGj|_dxBuL1sw73CdnVEQp|1FR`;s{Q zz=;nW?t3r8%%^3$c%AI<8zke*{RCalQknNNFrMiCOk}ci+bk8pdKf|vgdPYz5PBf= zKJ;!^fX>F#AsIRN&&A|2~r z-ml8RUaOK^XtPxT{ChGZ)N|QMrv36xKz@H~I`wzUmFfR&fqm@$a*z4;4WF5uJg)Xn z8JUu9s-wxFGIIkKZzQkZW#!z8x^)-j zYF011?Gl6Y^}%e_v}&cyV7ZjhGbP%JUe@Z16)I@ZGU`@+FsEC(9UYKxMz5EgmfOt_ zzES(#^ATQ)DD@${*R6O|;C*hz+XUYGRy-!~KDOf9-1oK>r?*)4`&PVNsDU`0f(gX$ zanH}R<`WnA{-2MMvR#bEed@oz^ZV~jJN9oW2_W!rq(}{_c z7jfcI(IeDAe3$4C#P8dj2_aFjdkZ}HI}sK5YPQm%0;7l@$LO(v^XH{aywlu3oEVQ& z5wZDsB_zJ&d%h1zeA$N&6RyyIIpGH`kHZXIO2Bie5YFY|+y>inSfoo4o1gDXga_6C zhlF!J__n}t13l&At?V}lZ_%a_n$XyyvJ=XvRae4zn}br@Cc8RKEFk6 zM{Vx^y9tlbDD8h=_7Se|iJlZnbmS1>YAa-G<6Gd5Z-LJf9&}#ldBTIv3w>pad_=Zp z)vZQ8PXoZlF(J*WXjwieRHySqxvEwuS2Ogj%~{o2UDF#2B3rFISvD*qmmEHFWH{J} z&kvO}y;jo~HG{s(iy~jsD~6V9R4R)^@n{-ZS}mq`H)Q#S08N{j9X~&?9RM$DROcxq4MA>Sm4)Kyk5@OoN*?otEVE)U2?pF0?b}9-SCJr#(6|^O5N} zZEk$x+%#p|dN#^FU=@6b>R%ka+8E9-E(aa5@}1=pNoUj|Y1L>@BUwbutXf90U^bGO zMyZ?|DCLB$74>>iBy)=g?a;FMy639if$IDn@P1~=BtS7 znM}=i3L2d*GZ3dn2fRZ67R2*;o)bqT+kXzS&zGy5M!P5B8>9}AM*=HtRu+84xEQKq)Fkt!N)uVa#yPqhC4WNNVVwa9JLdEE3hf8Zzo~JZunuy+yYl;sae_?j;P?MygnId^8+J()b-x2N|e8}%mikB}^()6GsRjERN2l;(U z@bcA^W2s6$?EHM_KcWcRp#GTG^>4xFvb^C{QW%rwZW8$KcM&H7KBO~G^BIwPL1yUB z7d$Y2LlHm5X;&qYm$lyDw_T+~KgRaIl>D@p9ANuy0LGMu4)I+G%@OY1Usi+w#{BJE zlKkJgOeX@qSK{6CnqC=lv~}5Wc^u&`iT;4^Cx0LC>>Y-4|LCwIzm0-qqEEHwib4Fg MQHRj!BluMDPaKW4n*aa+ literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/basic/single_function.c b/tests/data/test-symtab/basic/single_function.c new file mode 100644 index 000000000000..8ac09016eb4d --- /dev/null +++ b/tests/data/test-symtab/basic/single_function.c @@ -0,0 +1 @@ +void exported_function(){} diff --git a/tests/data/test-symtab/basic/single_function.so b/tests/data/test-symtab/basic/single_function.so new file mode 100755 index 0000000000000000000000000000000000000000..9b7e45d6ab0f03d602ff2ac50be3539bf909ace6 GIT binary patch literal 16472 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 literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/basic/single_undefined_variable.c b/tests/data/test-symtab/basic/single_undefined_variable.c new file mode 100644 index 000000000000..b0602c2d4e6a --- /dev/null +++ b/tests/data/test-symtab/basic/single_undefined_variable.c @@ -0,0 +1,7 @@ +extern int undefined_variable; + +static void other_local_function(int variable) { (void)variable; } + +static void local_function(){ + other_local_function(undefined_variable); +} diff --git a/tests/data/test-symtab/basic/single_undefined_variable.so b/tests/data/test-symtab/basic/single_undefined_variable.so new file mode 100755 index 0000000000000000000000000000000000000000..7188667cc6d6495bd7712e0f31ec5ed3f75b8737 GIT binary patch literal 16728 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 Hh5bJPU|+b4 literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/basic/single_variable.c b/tests/data/test-symtab/basic/single_variable.c new file mode 100644 index 000000000000..620e156dccbc --- /dev/null +++ b/tests/data/test-symtab/basic/single_variable.c @@ -0,0 +1 @@ +int exported_variable; diff --git a/tests/data/test-symtab/basic/single_variable.so b/tests/data/test-symtab/basic/single_variable.so new file mode 100755 index 0000000000000000000000000000000000000000..6ba3f4343c69b87a8ec280b6cc59b3db7fd33d8d GIT binary patch literal 16280 zcmeHOU1%It6uz5jH0`#DZT+cM>u7 zHc`+(5fl;oBz+LnzF5TvUj)S$i=}Vk&zn9-6qPC}5mYKl*K_8cGnt*874^Xv@1=Xs z&pqF{_nv!a=7!$$}6OQQ-vS-?dPM~1_;TX^XmINJ?TER551>FN*2W9N(Zu48DaWds; zBIa87;WF(%bX@E?a@*h+x2-XMeyRS!yTjRSXTSaUEHs6~$Mr&-93M_dho4->=3w=B zD0Hc&L9eH@-PuKt^GdVF{?qi>`FgQI4CaA>!toTQS*i_&sz!GmScK))I!MRm_CXHJ5y9eKt(`BKt(`B zKt(`BKt(`BKtVYkJ z;9du=a+(ba&y9bI*ynmbL9+XDa2>dN0eNt@y0tX0Wf5)PCkpnjh4y!!MRNO@ z!lg%At=6SEs4n(SfSh@R`(^s=MfQo>MfQo>MfQo>MfQo>M zfQo>MfQo>MfQo>MfQo>MfQo>MfQo>MfQo>MfQo>MfQrDsjsV}2<$JMf*%RH9T}Sd| zl5ZrL@7r!BneWlwL^9vIy*bhT%av9GRom$jZFmPA{}thT?8*N4KJxy_$$Rwe`|P4)x%zHn#MqG= z8M|F_`pEFeF#Nj-zbRk7II%^1Mq8WP(495VWcye-n&3vt?>nJZB?)1 z2Jm0_>oZ&XH)gf|&HdNh0KM!KTK_%Sd$YT<2R81#u?OO)4T@}bPgcXO@s_?OwnLrC z{NBF~>M(%-Zc=B2@3_^P9o^YBN?;{Y?sCI5cztrmXkw0ft{ya9d%SA9w&#>Uw7k;X z`25(e+^(H^uBzuMM-EIvZTSmsY0hi7ji#S#x+fjCoD1-hxSukDp_Belso@5mQyi)} zMXTskEvIJs3w3}D1-2jfLuD(lLN-V0qUAes@Zk))RvO+Qr+pkZ(m=`kzg@3I`@UVj zDtbQJ^}T}kdAlB-B6?oi^;Zi$Ro^FuQ}wH(Jd}1nYXrX!+V${s>T!+aHL*6jpC514 z#5%$6iFSRzNP8|cF(CMUe!D#kJ|EXeUW1GTevaa;8ssVHsrDP=W)ZK285)roF`Bq8 z;^T}au8)fmuL*d7Qi>+{ZM4#exd*GnPk2?Pt>F8)M|7@BKj}{-*6~)-^ZT8h;Ts_n ziv#wDWg32&ly#|t9{XKR_+JR^JJvRFl~56E{KX})oruftk)L+5|d1@4BAXPU-qUseRN`G%A7j15A%TbJ#=Vd=D;NQ zfgB)Knq|LX&RK35vw_g32nQj|{Ra=_1fDxe(7{(dUmDqJs&4$s8#> zNc;+CGluc^k}2c)+?G7|i~%0cij3#;B-7K>KlTfc)=C~2>GMF*H{+LxVan%GG7o() zkF)?k^v!twPBT4+Mo^OD=P$ugXv1;An@JXaKM_rSNs{q<5m0eFfA^WPyDsjWVzX}Z6 z@c8w-Y|*>mIS$fFh&O=2{>hxxg7MoTjbzXk3sc;m%!dtBO_M`Ct^_`5dm%-KkP6}N zMIly__>Z71sYCNu2v6H6@{qLsybJzA!jD8q$t3aL5uVH=>&y. + +// Author: Matthias Maennich + +/// @file +/// +/// This program tests symtab invariants through abg-corpus. + +#include +#include +#include + +#include "abg-corpus.h" +#include "abg-dwarf-reader.h" +#include "abg-ir.h" +#include "lib/catch.hpp" +#include "test-utils.h" + +using namespace abigail; + +using dwarf_reader::create_read_context; +using dwarf_reader::read_context_sptr; +using dwarf_reader::read_corpus_from_elf; +using ir::environment; +using ir::environment_sptr; + +static const std::string test_data_dir = + std::string(abigail::tests::get_src_dir()) + "/tests/data/test-symtab/"; + +dwarf_reader::status +read_corpus(const std::string path, corpus_sptr& result) +{ + const std::string& absolute_path = test_data_dir + path; + + environment_sptr env(new environment); + const std::vector debug_info_root_paths; + read_context_sptr ctxt = + create_read_context(absolute_path, debug_info_root_paths, env.get()); + + dwarf_reader::status status = dwarf_reader::STATUS_UNKNOWN; + result = read_corpus_from_elf(*ctxt, status); + + REQUIRE(status != dwarf_reader::STATUS_UNKNOWN); + return status; +} + +TEST_CASE("Symtab::Empty", "[symtab, basic]") +{ + const std::string binary = "basic/empty.so"; + corpus_sptr corpus_ptr; + const dwarf_reader::status status = read_corpus(binary, corpus_ptr); + REQUIRE(corpus_ptr); + + REQUIRE((status & dwarf_reader::STATUS_OK)); + + // TODO: Those two assertions are currently not met. Empty symtabs are + // currently treated like the error case. + // REQUIRE((status & dwarf_reader::STATUS_OK)); + // REQUIRE((status & dwarf_reader::STATUS_NO_SYMBOLS_FOUND)); +} + +TEST_CASE("Symtab::NoDebugInfo", "[symtab, basic]") +{ + const std::string binary = "basic/no_debug_info.so"; + corpus_sptr corpus_ptr; + const dwarf_reader::status status = read_corpus(binary, corpus_ptr); + REQUIRE(corpus_ptr); + + REQUIRE(status + == (dwarf_reader::STATUS_OK + | dwarf_reader::STATUS_DEBUG_INFO_NOT_FOUND)); +} + +// this value indicates in the following helper method, that we do not want to +// assert for this particular value. In other words, N is a placeholder for an +// arbitrary value. +#define N std::numeric_limits::max() + +corpus_sptr +assert_symbol_count(const std::string& path, + size_t function_symbols = 0, + size_t variable_symbols = 0, + size_t undefined_function_symbols = 0, + size_t undefined_variable_symbols = 0) +{ + corpus_sptr corpus_ptr; + const dwarf_reader::status status = read_corpus(path, corpus_ptr); + REQUIRE(corpus_ptr); + + REQUIRE(status == dwarf_reader::STATUS_OK); + const corpus& corpus = *corpus_ptr; + + if (function_symbols != N) + { + CHECK(corpus.get_sorted_fun_symbols().size() == function_symbols); + CHECK(corpus.get_fun_symbol_map().size() == function_symbols); + CHECK(corpus.get_fun_symbol_map_sptr()->size() == function_symbols); + } + if (variable_symbols != N) + { + CHECK(corpus.get_sorted_var_symbols().size() == variable_symbols); + CHECK(corpus.get_var_symbol_map().size() == variable_symbols); + CHECK(corpus.get_var_symbol_map_sptr()->size() == variable_symbols); + } + if (undefined_variable_symbols != N) + { + CHECK(corpus.get_sorted_undefined_fun_symbols().size() + == undefined_function_symbols); + CHECK(corpus.get_undefined_fun_symbol_map().size() + == undefined_function_symbols); + CHECK(corpus.get_undefined_fun_symbol_map_sptr()->size() + == undefined_function_symbols); + } + if (undefined_function_symbols != N) + { + CHECK(corpus.get_sorted_undefined_var_symbols().size() + == undefined_variable_symbols); + CHECK(corpus.get_undefined_var_symbol_map().size() + == undefined_variable_symbols); + CHECK(corpus.get_undefined_var_symbol_map_sptr()->size() + == undefined_variable_symbols); + } + + return corpus_ptr; +} + +TEST_CASE("Symtab::SimpleSymtabs", "[symtab, basic]") +{ + GIVEN("a binary with no exported symbols") + { + // TODO: should pass, but does currently not as empty tables are treated + // like the error case, but this is an edge case anyway. + // assert_symbol_count("empty.so"); + } + + GIVEN("a binary with a single exported function") + { + const std::string binary = "basic/single_function.so"; + const corpus_sptr& corpus = assert_symbol_count(binary, 1, 0); + const elf_symbol_sptr& symbol = + corpus->lookup_function_symbol("exported_function"); + REQUIRE(symbol); + CHECK(!corpus->lookup_variable_symbol("exported_function")); + CHECK(symbol == corpus->lookup_function_symbol(*symbol)); + CHECK(symbol != corpus->lookup_variable_symbol(*symbol)); + } + + GIVEN("a binary with a single exported variable") + { + const std::string binary = "basic/single_variable.so"; + const corpus_sptr& corpus = assert_symbol_count(binary, 0, 1); + const elf_symbol_sptr& symbol = + corpus->lookup_variable_symbol("exported_variable"); + REQUIRE(symbol); + CHECK(!corpus->lookup_function_symbol("exported_variable")); + CHECK(symbol == corpus->lookup_variable_symbol(*symbol)); + CHECK(symbol != corpus->lookup_function_symbol(*symbol)); + } + + GIVEN("a binary with one function and one variable exported") + { + const std::string binary = "basic/one_function_one_variable.so"; + const corpus_sptr& corpus = assert_symbol_count(binary, 1, 1); + CHECK(corpus->lookup_function_symbol("exported_function")); + CHECK(!corpus->lookup_variable_symbol("exported_function")); + CHECK(corpus->lookup_variable_symbol("exported_variable")); + CHECK(!corpus->lookup_function_symbol("exported_variable")); + } + + GIVEN("a binary with a single undefined function") + { + const std::string binary = "basic/single_undefined_function.so"; + const corpus_sptr& corpus = assert_symbol_count(binary, 0, 0, 1, 0); + } + + GIVEN("a binary with a single undefined variable") + { + const std::string binary = "basic/single_undefined_variable.so"; + const corpus_sptr& corpus = assert_symbol_count(binary, 0, 0, 0, 1); + } + + GIVEN("a binary with one function and one variable undefined") + { + const std::string binary = "basic/one_function_one_variable_undefined.so"; + const corpus_sptr& corpus = assert_symbol_count(binary, 0, 0, 1, 1); + } +} From patchwork Mon May 18 11:50:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Matthias_M=C3=A4nnich?= X-Patchwork-Id: 39288 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D18A5388A825; Mon, 18 May 2020 11:50:36 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D18A5388A825 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1589802636; bh=PINaNDqpKvYd0BVcI9rUDjCXNiZhUPXikxb8YzI4JVI=; h=Date:In-Reply-To:References:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Help:List-Subscribe:From:Reply-To:Cc:From; b=NtPzKKDu1DVACfdfxS3ML3NpuqMVMO4oQuq0zIWROiFCMCw43R2QoYg9gFQy9EMLs a/+MO4PbVpW7jshkwFJHKfqZidTKlXbyj7G2bW8ZJMf/B5iCCtufCEMsWHgRtPruUT MyK5FnI4/mwCDRKfIkXWMoEG6Q5sWKmmQWkiTmqE= X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by sourceware.org (Postfix) with ESMTPS id 95476388A825 for ; Mon, 18 May 2020 11:50:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 95476388A825 Received: by mail-yb1-xb4a.google.com with SMTP id 132so11185243ybc.22 for ; Mon, 18 May 2020 04:50:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=PINaNDqpKvYd0BVcI9rUDjCXNiZhUPXikxb8YzI4JVI=; b=aQprbf/RKznWr4MMxZMHbiOYobMl1Ja2UJgeaDHwV4aCQFoJyNWVmiPFOJfEZrPynZ 78w08Hbj2KdfOq8thWxOZj2VWTKpX1oDkSmhjgVvyKVTsBpGlRe36QPUy39wWFjpzYXB QQhHAw4t+UDRUotZO8Q9bms1WXfnqh+K3thJZJT7d63tl+c8KxfCdPBlkUuXbuxWapD9 2TdRjVLqIzGok0OisZaie1s/9q6iU8H1lstD9NP7bf1eBbZntERI7J0oBfrAkr+SlrwH W01zZLLenNdIFLdaH0DC934T7GXp9WKHZ9Ahs3vHEXXJIJJAbCWmk/2PuwPwdYNn7coQ 7Pgg== X-Gm-Message-State: AOAM53299uB61vfQnb/SbgFzhD+/K2Xhxz59rJ47uyrQy91zvcX9HbXA 92cxlH48un70FIVKyj3j5m9nnEQT5dY9txIaPhAT6+0OuT9UkQYY5n6iOHLbQ+3YEnKSb1Uivjl B63lPdtpZ2HJeg/420Ou1TpB2u53uTbk6D8jm/7oeMAa2K/iYvZFVEGSL5gpRTdz+0DkHq88= X-Google-Smtp-Source: ABdhPJxfrgZlUb759+YeAlaWSQbBbw347acABJ/rSv9pq7N9A3qs25DjYMxljohzmaSLyFXZ9lUVLKgBwXP8vg== X-Received: by 2002:a25:cb17:: with SMTP id b23mr24757454ybg.28.1589802628992; Mon, 18 May 2020 04:50:28 -0700 (PDT) Date: Mon, 18 May 2020 13:50:14 +0200 In-Reply-To: <20200518115014.225405-1-maennich@google.com> Message-Id: <20200518115014.225405-2-maennich@google.com> Mime-Version: 1.0 References: <20200518115014.225405-1-maennich@google.com> X-Mailer: git-send-email 2.26.2.761.g0e0b3e54be-goog Subject: [PATCH 2/2] tests: Add kernel symtab test suite To: libabigail@sourceware.org X-Spam-Status: No, score=-20.7 required=5.0 tests=BAYES_50, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_LOTSOFHASH, LOTS_OF_MONEY, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-Patchwork-Original-From: Matthias Maennich via Libabigail From: =?utf-8?q?Matthias_M=C3=A4nnich?= Reply-To: Matthias Maennich Cc: maennich@google.com, gprocida@google.com, kernel-team@android.com Errors-To: libabigail-bounces@sourceware.org Sender: "Libabigail" Add (Catch based) test suite to test kernel symbol table (ksymtab) reading through the result persisted in abigail::corpus. The test cases are created through simple kernel module C source files targeting the desired properties ((gpl) exported / local functions / variables). The kernel binaries are built without debug information to keep them reasonably small and reproducible. That is just enough sufficient to analyze ksymtabs. The Makefile that comes with them recreates the test cases from the sources, given a kernel source tree with the appropriate version, e.g. make KDIR=/path/to/4.14 This covers ksymtab reading and ensuring we detect the kernel binary correctly. The kernel versions are selected based on features introduced into the Linux kernel that affect the ksymtab representation. - Linux v4.14 - reasonably old kernel to start with (actually v4.14.180) - Linux v4.19 - first version having position relative relocations (PREL) in ksymtab entries on some platforms (actually v4.19.123) - Linux v5.4 - first version having symbol namespaces (actually v5.4.41) - Linux v5.6 - latest released stable kernel as of writing (actually v5.6.13) * tests/data/Makefile.am: add new test data for runtestsymtab * tests/data/test-symtab/kernel-4.14/Makefile: New test case makefile. * tests/data/test-symtab/kernel-4.14/empty.c: Likewise. * tests/data/test-symtab/kernel-4.14/one_of_each.c: Likewise. * tests/data/test-symtab/kernel-4.14/single_function.c: Likewise. * tests/data/test-symtab/kernel-4.14/single_function_gpl.c: Likewise. * tests/data/test-symtab/kernel-4.14/single_variable.c: Likewise. * tests/data/test-symtab/kernel-4.14/single_variable_gpl.c: Likewise. * tests/data/test-symtab/kernel-4.14/empty.ko: New test data. * tests/data/test-symtab/kernel-4.14/one_of_each.ko: Likewise. * tests/data/test-symtab/kernel-4.14/single_function.ko: Likewise. * tests/data/test-symtab/kernel-4.14/single_function_gpl.ko: Likewise. * tests/data/test-symtab/kernel-4.14/single_variable.ko: Likewise. * tests/data/test-symtab/kernel-4.14/single_variable_gpl.ko: Likewise. * tests/data/test-symtab/kernel-4.19/Makefile: New test case makefile. * tests/data/test-symtab/kernel-4.19/empty.c: Likewise. * tests/data/test-symtab/kernel-4.19/one_of_each.c: Likewise. * tests/data/test-symtab/kernel-4.19/single_function.c: Likewise. * tests/data/test-symtab/kernel-4.19/single_function_gpl.c: Likewise. * tests/data/test-symtab/kernel-4.19/single_variable.c: Likewise. * tests/data/test-symtab/kernel-4.19/single_variable_gpl.c: Likewise. * tests/data/test-symtab/kernel-4.19/empty.ko: New test data. * tests/data/test-symtab/kernel-4.19/one_of_each.ko: Likewise. * tests/data/test-symtab/kernel-4.19/single_function.ko: Likewise. * tests/data/test-symtab/kernel-4.19/single_function_gpl.ko: Likewise. * tests/data/test-symtab/kernel-4.19/single_variable.ko: Likewise. * tests/data/test-symtab/kernel-4.19/single_variable_gpl.ko: Likewise. * tests/data/test-symtab/kernel-5.4/Makefile: New test case makefile. * tests/data/test-symtab/kernel-5.4/empty.c: Likewise. * tests/data/test-symtab/kernel-5.4/one_of_each.c: Likewise. * tests/data/test-symtab/kernel-5.4/single_function.c: Likewise. * tests/data/test-symtab/kernel-5.4/single_function_gpl.c: Likewise. * tests/data/test-symtab/kernel-5.4/single_variable.c: Likewise. * tests/data/test-symtab/kernel-5.4/single_variable_gpl.c: Likewise. * tests/data/test-symtab/kernel-5.4/empty.ko: New test data. * tests/data/test-symtab/kernel-5.4/one_of_each.ko: Likewise. * tests/data/test-symtab/kernel-5.4/single_function.ko: Likewise. * tests/data/test-symtab/kernel-5.4/single_function_gpl.ko: Likewise. * tests/data/test-symtab/kernel-5.4/single_variable.ko: Likewise. * tests/data/test-symtab/kernel-5.4/single_variable_gpl.ko: Likewise. * tests/data/test-symtab/kernel-5.6/Makefile: New test case makefile. * tests/data/test-symtab/kernel-5.6/empty.c: Likewise. * tests/data/test-symtab/kernel-5.6/one_of_each.c: Likewise. * tests/data/test-symtab/kernel-5.6/single_function.c: Likewise. * tests/data/test-symtab/kernel-5.6/single_function_gpl.c: Likewise. * tests/data/test-symtab/kernel-5.6/single_variable.c: Likewise. * tests/data/test-symtab/kernel-5.6/single_variable_gpl.c: Likewise. * tests/data/test-symtab/kernel-5.6/empty.ko: New test data. * tests/data/test-symtab/kernel-5.6/one_of_each.ko: Likewise. * tests/data/test-symtab/kernel-5.6/single_function.ko: Likewise. * tests/data/test-symtab/kernel-5.6/single_function_gpl.ko: Likewise. * tests/data/test-symtab/kernel-5.6/single_variable.ko: Likewise. * tests/data/test-symtab/kernel-5.6/single_variable_gpl.ko: Likewise. * tests/data/test-symtab/kernel/Makefile: New test case source file. * tests/data/test-symtab/kernel/empty.c: Likewise. * tests/data/test-symtab/kernel/one_of_each.c: Likewise. * tests/data/test-symtab/kernel/single_function.c: Likewise. * tests/data/test-symtab/kernel/single_function_gpl.c: Likewise. * tests/data/test-symtab/kernel/single_variable.c: Likewise. * tests/data/test-symtab/kernel/single_variable_gpl.c: Likewise. * tests/test-symtab.cc: New test case to test kernel symtabs. Signed-off-by: Matthias Maennich --- tests/data/Makefile.am | 75 +++++++++++++- tests/data/test-symtab/kernel-4.14/Makefile | 1 + tests/data/test-symtab/kernel-4.14/empty.c | 1 + tests/data/test-symtab/kernel-4.14/empty.ko | Bin 0 -> 2136 bytes .../test-symtab/kernel-4.14/one_of_each.c | 1 + .../test-symtab/kernel-4.14/one_of_each.ko | Bin 0 -> 3512 bytes .../test-symtab/kernel-4.14/single_function.c | 1 + .../kernel-4.14/single_function.ko | Bin 0 -> 2744 bytes .../kernel-4.14/single_function_gpl.c | 1 + .../kernel-4.14/single_function_gpl.ko | Bin 0 -> 2760 bytes .../test-symtab/kernel-4.14/single_variable.c | 1 + .../kernel-4.14/single_variable.ko | Bin 0 -> 2744 bytes .../kernel-4.14/single_variable_gpl.c | 1 + .../kernel-4.14/single_variable_gpl.ko | Bin 0 -> 2760 bytes tests/data/test-symtab/kernel-4.19/Makefile | 1 + tests/data/test-symtab/kernel-4.19/empty.c | 1 + tests/data/test-symtab/kernel-4.19/empty.ko | Bin 0 -> 2264 bytes .../test-symtab/kernel-4.19/one_of_each.c | 1 + .../test-symtab/kernel-4.19/one_of_each.ko | Bin 0 -> 3648 bytes .../test-symtab/kernel-4.19/single_function.c | 1 + .../kernel-4.19/single_function.ko | Bin 0 -> 2872 bytes .../kernel-4.19/single_function_gpl.c | 1 + .../kernel-4.19/single_function_gpl.ko | Bin 0 -> 2896 bytes .../test-symtab/kernel-4.19/single_variable.c | 1 + .../kernel-4.19/single_variable.ko | Bin 0 -> 2872 bytes .../kernel-4.19/single_variable_gpl.c | 1 + .../kernel-4.19/single_variable_gpl.ko | Bin 0 -> 2896 bytes tests/data/test-symtab/kernel-5.4/Makefile | 1 + tests/data/test-symtab/kernel-5.4/empty.c | 1 + tests/data/test-symtab/kernel-5.4/empty.ko | Bin 0 -> 2336 bytes .../data/test-symtab/kernel-5.4/one_of_each.c | 1 + .../test-symtab/kernel-5.4/one_of_each.ko | Bin 0 -> 3720 bytes .../test-symtab/kernel-5.4/single_function.c | 1 + .../test-symtab/kernel-5.4/single_function.ko | Bin 0 -> 2944 bytes .../kernel-5.4/single_function_gpl.c | 1 + .../kernel-5.4/single_function_gpl.ko | Bin 0 -> 2968 bytes .../test-symtab/kernel-5.4/single_variable.c | 1 + .../test-symtab/kernel-5.4/single_variable.ko | Bin 0 -> 2944 bytes .../kernel-5.4/single_variable_gpl.c | 1 + .../kernel-5.4/single_variable_gpl.ko | Bin 0 -> 2968 bytes tests/data/test-symtab/kernel-5.6/Makefile | 1 + tests/data/test-symtab/kernel-5.6/empty.c | 1 + tests/data/test-symtab/kernel-5.6/empty.ko | Bin 0 -> 2336 bytes .../data/test-symtab/kernel-5.6/one_of_each.c | 1 + .../test-symtab/kernel-5.6/one_of_each.ko | Bin 0 -> 4040 bytes .../test-symtab/kernel-5.6/single_function.c | 1 + .../test-symtab/kernel-5.6/single_function.ko | Bin 0 -> 3024 bytes .../kernel-5.6/single_function_gpl.c | 1 + .../kernel-5.6/single_function_gpl.ko | Bin 0 -> 3048 bytes .../test-symtab/kernel-5.6/single_variable.c | 1 + .../test-symtab/kernel-5.6/single_variable.ko | Bin 0 -> 3024 bytes .../kernel-5.6/single_variable_gpl.c | 1 + .../kernel-5.6/single_variable_gpl.ko | Bin 0 -> 3048 bytes tests/data/test-symtab/kernel/Makefile | 19 ++++ tests/data/test-symtab/kernel/empty.c | 0 tests/data/test-symtab/kernel/one_of_each.c | 16 +++ .../data/test-symtab/kernel/single_function.c | 7 ++ .../test-symtab/kernel/single_function_gpl.c | 7 ++ .../data/test-symtab/kernel/single_variable.c | 7 ++ .../test-symtab/kernel/single_variable_gpl.c | 7 ++ tests/test-symtab.cc | 94 +++++++++++++++++- 61 files changed, 256 insertions(+), 4 deletions(-) create mode 120000 tests/data/test-symtab/kernel-4.14/Makefile create mode 120000 tests/data/test-symtab/kernel-4.14/empty.c create mode 100644 tests/data/test-symtab/kernel-4.14/empty.ko create mode 120000 tests/data/test-symtab/kernel-4.14/one_of_each.c create mode 100644 tests/data/test-symtab/kernel-4.14/one_of_each.ko create mode 120000 tests/data/test-symtab/kernel-4.14/single_function.c create mode 100644 tests/data/test-symtab/kernel-4.14/single_function.ko create mode 120000 tests/data/test-symtab/kernel-4.14/single_function_gpl.c create mode 100644 tests/data/test-symtab/kernel-4.14/single_function_gpl.ko create mode 120000 tests/data/test-symtab/kernel-4.14/single_variable.c create mode 100644 tests/data/test-symtab/kernel-4.14/single_variable.ko create mode 120000 tests/data/test-symtab/kernel-4.14/single_variable_gpl.c create mode 100644 tests/data/test-symtab/kernel-4.14/single_variable_gpl.ko create mode 120000 tests/data/test-symtab/kernel-4.19/Makefile create mode 120000 tests/data/test-symtab/kernel-4.19/empty.c create mode 100644 tests/data/test-symtab/kernel-4.19/empty.ko create mode 120000 tests/data/test-symtab/kernel-4.19/one_of_each.c create mode 100644 tests/data/test-symtab/kernel-4.19/one_of_each.ko create mode 120000 tests/data/test-symtab/kernel-4.19/single_function.c create mode 100644 tests/data/test-symtab/kernel-4.19/single_function.ko create mode 120000 tests/data/test-symtab/kernel-4.19/single_function_gpl.c create mode 100644 tests/data/test-symtab/kernel-4.19/single_function_gpl.ko create mode 120000 tests/data/test-symtab/kernel-4.19/single_variable.c create mode 100644 tests/data/test-symtab/kernel-4.19/single_variable.ko create mode 120000 tests/data/test-symtab/kernel-4.19/single_variable_gpl.c create mode 100644 tests/data/test-symtab/kernel-4.19/single_variable_gpl.ko create mode 120000 tests/data/test-symtab/kernel-5.4/Makefile create mode 120000 tests/data/test-symtab/kernel-5.4/empty.c create mode 100644 tests/data/test-symtab/kernel-5.4/empty.ko create mode 120000 tests/data/test-symtab/kernel-5.4/one_of_each.c create mode 100644 tests/data/test-symtab/kernel-5.4/one_of_each.ko create mode 120000 tests/data/test-symtab/kernel-5.4/single_function.c create mode 100644 tests/data/test-symtab/kernel-5.4/single_function.ko create mode 120000 tests/data/test-symtab/kernel-5.4/single_function_gpl.c create mode 100644 tests/data/test-symtab/kernel-5.4/single_function_gpl.ko create mode 120000 tests/data/test-symtab/kernel-5.4/single_variable.c create mode 100644 tests/data/test-symtab/kernel-5.4/single_variable.ko create mode 120000 tests/data/test-symtab/kernel-5.4/single_variable_gpl.c create mode 100644 tests/data/test-symtab/kernel-5.4/single_variable_gpl.ko create mode 120000 tests/data/test-symtab/kernel-5.6/Makefile create mode 120000 tests/data/test-symtab/kernel-5.6/empty.c create mode 100644 tests/data/test-symtab/kernel-5.6/empty.ko create mode 120000 tests/data/test-symtab/kernel-5.6/one_of_each.c create mode 100644 tests/data/test-symtab/kernel-5.6/one_of_each.ko create mode 120000 tests/data/test-symtab/kernel-5.6/single_function.c create mode 100644 tests/data/test-symtab/kernel-5.6/single_function.ko create mode 120000 tests/data/test-symtab/kernel-5.6/single_function_gpl.c create mode 100644 tests/data/test-symtab/kernel-5.6/single_function_gpl.ko create mode 120000 tests/data/test-symtab/kernel-5.6/single_variable.c create mode 100644 tests/data/test-symtab/kernel-5.6/single_variable.ko create mode 120000 tests/data/test-symtab/kernel-5.6/single_variable_gpl.c create mode 100644 tests/data/test-symtab/kernel-5.6/single_variable_gpl.ko create mode 100644 tests/data/test-symtab/kernel/Makefile create mode 100644 tests/data/test-symtab/kernel/empty.c create mode 100644 tests/data/test-symtab/kernel/one_of_each.c create mode 100644 tests/data/test-symtab/kernel/single_function.c create mode 100644 tests/data/test-symtab/kernel/single_function_gpl.c create mode 100644 tests/data/test-symtab/kernel/single_variable.c create mode 100644 tests/data/test-symtab/kernel/single_variable_gpl.c diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 6505de594ab2..af31d33ae219 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -1720,4 +1720,77 @@ test-symtab/basic/single_undefined_function.so \ test-symtab/basic/single_undefined_variable.c \ test-symtab/basic/single_undefined_variable.so \ test-symtab/basic/single_variable.c \ -test-symtab/basic/single_variable.so +test-symtab/basic/single_variable.so \ +\ +test-symtab/kernel/Makefile \ +test-symtab/kernel/empty.c \ +test-symtab/kernel/one_of_each.c \ +test-symtab/kernel/single_function.c \ +test-symtab/kernel/single_function_gpl.c \ +test-symtab/kernel/single_variable.c \ +test-symtab/kernel/single_variable_gpl.c \ +test-symtab/kernel-4.14/Makefile \ +test-symtab/kernel-4.14/empty.c \ +test-symtab/kernel-4.14/empty.ko \ +test-symtab/kernel-4.14/one_of_each.c \ +test-symtab/kernel-4.14/one_of_each.ko \ +test-symtab/kernel-4.14/single_function.c \ +test-symtab/kernel-4.14/single_function.ko \ +test-symtab/kernel-4.14/single_function_gpl.c \ +test-symtab/kernel-4.14/single_function_gpl.ko \ +test-symtab/kernel-4.14/single_variable.c \ +test-symtab/kernel-4.14/single_variable.ko \ +test-symtab/kernel-4.14/single_variable_gpl.c \ +test-symtab/kernel-4.14/single_variable_gpl.ko \ +test-symtab/kernel-4.19/Makefile \ +test-symtab/kernel-4.19/empty.c \ +test-symtab/kernel-4.19/empty.ko \ +test-symtab/kernel-4.19/one_of_each.c \ +test-symtab/kernel-4.19/one_of_each.ko \ +test-symtab/kernel-4.19/single_function.c \ +test-symtab/kernel-4.19/single_function.ko \ +test-symtab/kernel-4.19/single_function_gpl.c \ +test-symtab/kernel-4.19/single_function_gpl.ko \ +test-symtab/kernel-4.19/single_variable.c \ +test-symtab/kernel-4.19/single_variable.ko \ +test-symtab/kernel-4.19/single_variable_gpl.c \ +test-symtab/kernel-4.19/single_variable_gpl.ko \ +test-symtab/kernel-5.3/Makefile \ +test-symtab/kernel-5.3/empty.c \ +test-symtab/kernel-5.3/empty.ko \ +test-symtab/kernel-5.3/one_of_each.c \ +test-symtab/kernel-5.3/one_of_each.ko \ +test-symtab/kernel-5.3/single_function.c \ +test-symtab/kernel-5.3/single_function.ko \ +test-symtab/kernel-5.3/single_function_gpl.c \ +test-symtab/kernel-5.3/single_function_gpl.ko \ +test-symtab/kernel-5.3/single_variable.c \ +test-symtab/kernel-5.3/single_variable.ko \ +test-symtab/kernel-5.3/single_variable_gpl.c \ +test-symtab/kernel-5.3/single_variable_gpl.ko \ +test-symtab/kernel-5.4/Makefile \ +test-symtab/kernel-5.4/empty.c \ +test-symtab/kernel-5.4/empty.ko \ +test-symtab/kernel-5.4/one_of_each.c \ +test-symtab/kernel-5.4/one_of_each.ko \ +test-symtab/kernel-5.4/single_function.c \ +test-symtab/kernel-5.4/single_function.ko \ +test-symtab/kernel-5.4/single_function_gpl.c \ +test-symtab/kernel-5.4/single_function_gpl.ko \ +test-symtab/kernel-5.4/single_variable.c \ +test-symtab/kernel-5.4/single_variable.ko \ +test-symtab/kernel-5.4/single_variable_gpl.c \ +test-symtab/kernel-5.4/single_variable_gpl.ko \ +test-symtab/kernel-5.6/Makefile \ +test-symtab/kernel-5.6/empty.c \ +test-symtab/kernel-5.6/empty.ko \ +test-symtab/kernel-5.6/one_of_each.c \ +test-symtab/kernel-5.6/one_of_each.ko \ +test-symtab/kernel-5.6/single_function.c \ +test-symtab/kernel-5.6/single_function.ko \ +test-symtab/kernel-5.6/single_function_gpl.c \ +test-symtab/kernel-5.6/single_function_gpl.ko \ +test-symtab/kernel-5.6/single_variable.c \ +test-symtab/kernel-5.6/single_variable.ko \ +test-symtab/kernel-5.6/single_variable_gpl.c \ +test-symtab/kernel-5.6/single_variable_gpl.ko diff --git a/tests/data/test-symtab/kernel-4.14/Makefile b/tests/data/test-symtab/kernel-4.14/Makefile new file mode 120000 index 000000000000..c7e68bddd8d2 --- /dev/null +++ b/tests/data/test-symtab/kernel-4.14/Makefile @@ -0,0 +1 @@ +../kernel/Makefile \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-4.14/empty.c b/tests/data/test-symtab/kernel-4.14/empty.c new file mode 120000 index 000000000000..ac07d5e725cc --- /dev/null +++ b/tests/data/test-symtab/kernel-4.14/empty.c @@ -0,0 +1 @@ +../kernel/empty.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-4.14/empty.ko b/tests/data/test-symtab/kernel-4.14/empty.ko new file mode 100644 index 0000000000000000000000000000000000000000..03f62bb9e71b61efaa410688cb75eac8a4a07ecd GIT binary patch literal 2136 zcmeHI&1w`u5U$;czmZ^2K@edN;?H55-8JAwSXtS`5HO1#7DUluemdD9J3TSeD+wNa z1YaTGF?Y{7c=PVrSMUk6YNm^A+ldI~;K62^s`|RVs-B*%ns=*@AJuC$;8BAIFtZp1 zcy?;0_Y1WT7hoRdP``}R!?`vb!RF`W#n;yl^Xs2Bo*y0_9DMj#-yru`?no8qJy1a^ zdotb8`|w8YromPc^_D~%pKhx`o+mTP3?~!of0Tdt1l9(F`;FTxGE4&1SQZ`8Zg#qN zO0Cgpbz1n`#k=`uZohp|ud*`e?$;}MUQrdlE_p@ORN+>US<4=rwyc@z!I_z1X&#)l ztWu?#o`Y}S-Gy_<;8zf@S^FnH8aHtg&h~tP0xTPxdI60~rGO_W7r}ZjKB}TXMFgcx zvlw;XM>(BH-*gKEM#J@|qg8)>#iz#6?*0UE18LtwSdWw3@Bu`=pXwk)sdq~`W=&;U ziY+x2;WU}V%_Ih)<(>wCxf8XSfrtYgK;be;)OMyKDeT}P%ySS?mZnl6t%!%MubJy0 z+BUEK*WwyRps&lv#R2<9xxs*u)Q9aM(4cSb-kjKWvUIoSFB!g@e{49nEH0_;jq4#s zG3mcxkN37=>2Cf3u2u1mnB#1$&$y8R@y7YJ*ygOSW1Iym!L(nVn1 zc3p5cWENdtva7aw(eTHHa31{@aPs+IHSwrEt5WTmi}K3&v2gP*9>f1)_-~nLq|5&S D`b36g literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-4.14/one_of_each.c b/tests/data/test-symtab/kernel-4.14/one_of_each.c new file mode 120000 index 000000000000..27c87e5758cb --- /dev/null +++ b/tests/data/test-symtab/kernel-4.14/one_of_each.c @@ -0,0 +1 @@ +../kernel/one_of_each.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-4.14/one_of_each.ko b/tests/data/test-symtab/kernel-4.14/one_of_each.ko new file mode 100644 index 0000000000000000000000000000000000000000..6c5fe2b5fe93b8b8712a1a1cba18ec1f4ca44c96 GIT binary patch literal 3512 zcmeHJ%}*0i5TCN3;CGQ2zta#+@W9$uj9>z30*E98^?-?9)@{4c4ec(r3t~K&c=2ZN z;?+bC9`)j1fQerD3pC*`(6fooyq(!yUbloqPsW$-&dl%4$J=@H=Jo0H+>NeG24rMl z0%A!}fc3tZFDbSJSvUsW$PeIS;4?G70MDLm_q_S~b8Fzo$G6`GKN;oTi-Vh+o66#E zyqxtFzZp1HYt3%DcDe3YODlC~Lt|ud)vE-q@9oqR6spdO<5gSZ;Moml-1i*IU$h*% zQiC<8*|3+~%J_&`z~5*-N9*sxhw_t_Bbt|y^d#7S`VVGcW^(d+ZfMFWySA4bGmBG-_c>b2cjW+#d))&2g z)_<<>IB(+r9qSLVp4fd>ICaHvi2gQ;8O-wpB~TKHD2PI zaFK<&$dDfy;s+9q)2x7HEw>&w0=sOrwRqLgX+CJ~KHtG!`R-tw7FVu}PI24jwYV~$ z7B`wpetpBQsth1q#e0r#Dl}i1pS`m%ZOu+ubZHevcR+G&6|Ny1)ZCU8+C$y1*mWz4 z6pC_-$~LHdIu}V0?KABgRln4&)HC5{6Z$8a7kxPoqC)t25s*q9iN2hpq<^VpGSmG> zuFSAbzzpjFX-zoK4;*vJTQ$q8ZoN9}R>2IM^#IJKQ@5iE)5K_-!)-)guD8?z6SL`h zi$0iDJFr2yt-Ic`?^PT#nQpV(LhXv*XgD5*Qft6JNW-nbu27Tt!*K@fsjI~&E_7H5 z30z<*BsyOVm`Ew-`$U0hm1*3$LV$FWV+;kt^!O{Rlw&GH_EY2$WN1w#0hso3K|Emj z2vS;$)QRl>O~lgTZ?IjCsSrK>Bu=EoucgGNy4U01MJz4;2M&0fsSrJXwGQ^mDb5Xx zAybJj@Iz$Cr@l{l4y50x`u;!aU|*7jY8zWZ{p6s&PHWQRmvn%Q#I5*vg$!YN0ho&Y zyoQUt(APLGd{Xtr9^;d(_KC{PhS)Qu{}pscO8%w(=;jhtWyr4$K2Yo0;xrNOzI6L9 M9O!-0De}7gZx<*+kN^Mx literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-4.14/single_function.c b/tests/data/test-symtab/kernel-4.14/single_function.c new file mode 120000 index 000000000000..a0055533bd8e --- /dev/null +++ b/tests/data/test-symtab/kernel-4.14/single_function.c @@ -0,0 +1 @@ +../kernel/single_function.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-4.14/single_function.ko b/tests/data/test-symtab/kernel-4.14/single_function.ko new file mode 100644 index 0000000000000000000000000000000000000000..bfa2e2c31d1eafae7cf428d124be98b756475eba GIT binary patch literal 2744 zcmeHIOKTKC5boWH?^hBP6fx|~aUWFd(mD2pBz1R>+>OlLD>b|&o1hUDM_ z#G60BgZ==$c=6&fIKlDt%|QA9-mIM`Y#84H@~#oQT}6oJ)eJ6Uy9XQ}()UC-CN`?Hc@MsugrA zlka{IbH)9L`9H=#Sb?Sa`RkR*1=$YVs4{EU?b=j*=5oeW>eYG`eplgc|C!luH)s{U zEPOk~H`h|HYB;1N4h(~USVDWGnuR3}X;RKw;&3i#oF$HEQqEf9Xf9}+C5~xQ#$pc{ z5nq3piqim;w0(_|!4-w)`x+i-ZGFgYowujcIkpzNm)LNNi6y&U&)lP2ILL-270N_KJ08q;Bl1Xh8eW z9I0bM_*QfIZfnt5UU0B^)@JrV+&XL508ZC}#L4_c7<+D*x7bYFbbEo@4khnK)dTxI z557TIhrymvX=i%`s`dkPjkzdJrQM18cDo;h{#4)#JC$3huzNCe2i4K)1di|lNQ4ck z2GMFPY~M{?p<;wVv>r#EwDrB%?F6j7xZ9Nx#8nHz*J&zAU2mOJ|0{X{yzy0;FSkKa zFA-(3r#1lEFtKL&4bCk6j10x)dq!$83k+iB`Ws}x?~3hBc^VX$Q-ckNPEtZul8*z$ zZ#$p!Il||G7Onq;^!$EFRJP0`ZNV(^e?dkyqD**wmREp5f6PrEA4xFlZOT~ZBL6|6 zMqwNJBEUa_i8-0;4+EJauBDHsARxwd9_T1wa{y!v`!jtGF!Q=;b10#`{%niB#uk<8 s4*8Fg@&urGmRx^6f9$VCOFf_#{y{~{|IA#+e&K(Q?jQDLeVG0~0VR#qV*mgE literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-4.14/single_function_gpl.c b/tests/data/test-symtab/kernel-4.14/single_function_gpl.c new file mode 120000 index 000000000000..3f9b47f8514e --- /dev/null +++ b/tests/data/test-symtab/kernel-4.14/single_function_gpl.c @@ -0,0 +1 @@ +../kernel/single_function_gpl.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-4.14/single_function_gpl.ko b/tests/data/test-symtab/kernel-4.14/single_function_gpl.ko new file mode 100644 index 0000000000000000000000000000000000000000..b05ec4d551e1d8b8e60af0d50f910c7ab72aa9a4 GIT binary patch literal 2760 zcmeHIy>HV%6u;C3%6D531;G#y0}MGOX;D+8prE!y6)1wCLQJk>UlS{i9b%^{VgPkP zEQkdOiG@D^iH(7gPHeECF8mSv1@P|tUe0w~gir?tPPX5BzxR1x&rg=`+#1W}7>yje z!L&puV-troUsG(2on$B2IPj<8HQ=o`R@wU<_j%{d*PGwJ%|4zfe0cHc_J!^3ZRL>p z5u3fB9|^}?ANY3U2EN(qd0^>?p75Qp%6zLUs-f$*Jh9tmL-e~=%eAX>yaZ3Bn3oC0 zpk@`#;3LwgUCV#q0SiOQPvoetv|H88D~F! zrWG>)v^3){65gEI1iP*o-b9rg*eIQFwQH)FQI%2={ulP$#uZ3_z3tk z>as+1aJ8R-W<4|Q*a%|Be5AV-WQ&wS4#dEv;@xZQwSM{a$SEt zVBE1Hi>WxC>vsa*7Cbp0-VDLo4!T|8Lu{24{#b=Dvg}Tx(7$8PgPYv_^i8f|xXVb1 z49^Dw9H?9~eWGK9gZgw_I*+Jk3&2P$ZP!Bsx@TmcmghhrYpRg}(h3$-MEMv{`LCya zK8tuAXjcBGsHgjkqOv7k(g*Nn`M*Y^YeYzNI$aT-|F#r;x%%+y_Yd*b<+nS-+pl&$ruNl; za&tY566snScI4STUy_+C*Ja?wGa|72awhhI6<-!M8#3zKE1okmX*S_E)u^M}0hm>} zqi(-LkGNm||Mve#1r}y!Z`H@=WY4pM`n1_Hn-i_6YZ+H>HChe$-GICOXJ)_Mw6VwS zG}4<}b~VyhRfQicgMb)9d8CSkAr322!5ZR7At;<7jw({Y8e+H*6wVOG6e(lz9S(`@ zpSt2S05xS_BV=$r#fyE75q=kF)jD=+U+kANjtFP@EUojB@Jl3P9yqpOj;eLQCIaIf z%rWI$xUXCUd=%=5eGdoI_rN30gK?oX64McuwH80=Cw9*&H$T)RQMFEAsUN!OYCs3j z9I0c%^4-qjgYLYwIA>w=Y)D62b852z(Q!(sLGp2+ z_-*HNK1cX0(5m>)Nzd<>#8Up)##wJOwOYT=*K)rvno*U>%vm+1asUsi|i{|ht+)WiS) literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-4.14/single_variable_gpl.c b/tests/data/test-symtab/kernel-4.14/single_variable_gpl.c new file mode 120000 index 000000000000..dc09c0d27870 --- /dev/null +++ b/tests/data/test-symtab/kernel-4.14/single_variable_gpl.c @@ -0,0 +1 @@ +../kernel/single_variable_gpl.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-4.14/single_variable_gpl.ko b/tests/data/test-symtab/kernel-4.14/single_variable_gpl.ko new file mode 100644 index 0000000000000000000000000000000000000000..30f9a082c6506752ca89cb95c24eae601e55eb6e GIT binary patch literal 2760 zcmeHIJ8u&~5MJj32?>w~5f9NAL;*!swh4-Z2(pxyA|VTk2vJ?mcN_c2`Of&xQK&#^ zkfNPB$De;UXMT)5{h;jg z|HN)5=tjaZcdV{!H9TQ9J06%iq9c4KTx7o07K@?lH$k<}W=C|}R@1c?=Xe=@)lyML z7=oFXztkOMGeirlG2~-_=mBDi1%@4+3Ja!vk>b@oE+Z8`Y$gHQ13<&^UvQX;R7>Y&;c^lW%aC zefybJoC2Vr?Q0SZ<`tgq>m=g0f#$7qPuZvYrHuCwC;1Gn^9=FxD4#(37U-0I4zhv3 zI0tizji~-6W!dNCcn5P@yD#cB9|4#4G{~OiG!kwz)7%d4wYD1_Rmuix5OG1r$(*-XpTeGs+L@;ty%%MH!gpLv08dFEEnw<9<3QKSw` z+f)@zXDLCdsQCU9GsbwlU!ZDVKwHH5K_qz7@9{>@^_*GPVLTGM5#wFqS?Nj14?`+} zGkg?6#vxtT-wGIatjJ<&9nbZ*1K$>0-w$tuU~LEOw(wzX6%@W$vteY}+ghT3$DRc@ zdHYyC$s#r6E+k0IB=vzf2P)4jt>{?cpq}as#lB9m019c7jo(2BdS~RHmFGYqbE=U6 z(kdoYLis3A`K_mWK8^Sq(7gB$QBUs~#lHOS4Df$}4p+z#Da9wa0gQ|+edfvN`+Qj?;7M@E?#%nm{N8(+%uHT3*Y8d_4zM_I8;)0u z0vwz;w*B1nVFu2@G};&Naq(GecVMU4KMFtG+IjN$&b#-opMLxD`RkjL=*#!S*Lti* zd$?wa+h^M7`?Wyk1xpujbY8vw*cZS=b+w;Ffj<)&5i|&&|7H+~ww7Q-&K&X1HCT z4jLC1PK|?zxN!P6_?a=B`f?h+AK8u>1RUd@%)G2|UZ2&(y2fc1ken|R+(Ydc`MId^ z2dK-=eT4YD`F%OHc|(h27>OPP0qW5}26}oR&}p|GcA7zJHK0M_)qjC_pm;S1)G(95 z4Jfvwt+LHH)%yX6bU(?$F6wNz(3@-#QS{YFbVuTtB94aQ7$mCuIbiY__3_(O; z7D66Ah}G6m^`tNl65TWf(Hka-R7lG=!tq&6v#__NQ}kEr60)f}IDNdCuZ=4VXian6 z6oHE}ex!r=cVv#uUq%PjmR-3om|*Gr|G~g~v#eBxKj#1N{?DG#T9@Fge6*>s3ae&s$Z(BI?SwBZV+h*vjeIf0% xV`*J>)j7>S&;;uLIea+(To*JS%8vS^3uOcSrr77tqqB@Zt4HKplZ>{_{{bw_k_7+& literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-4.19/one_of_each.c b/tests/data/test-symtab/kernel-4.19/one_of_each.c new file mode 120000 index 000000000000..27c87e5758cb --- /dev/null +++ b/tests/data/test-symtab/kernel-4.19/one_of_each.c @@ -0,0 +1 @@ +../kernel/one_of_each.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-4.19/one_of_each.ko b/tests/data/test-symtab/kernel-4.19/one_of_each.ko new file mode 100644 index 0000000000000000000000000000000000000000..293d07eb038666fb2debde483584dce42553851e GIT binary patch literal 3648 zcmeHJ&1)1{5U;U=U+b#TAj>N596V$XdCZKWiI~t3vq6yffpL#*&vYkgGSeMrdO`$c z1AAY>o>vgTy$JpTdJuB)k8lrO_N+HAqE)Y}dR|`lM8TU_Oixw)>g#pAul{51>Ti20 z6%eYx3=A|u0bU*$$gUP$I0mCIg7O$X4nFe>i|}{l>4#_Y|J83^dhurR)$cQR-i$xl zi#DAT|E@-He*<-*?d|PM*yTUmSWCKT7LjfHiOZ~W&MoGNWPf!TL zwJ;8P(-8Zea5{-YFIn}5S6`!F&y5A*qs ze*+zupPju}9lsnlBR{TAsfMagG$wz|q-vwqsNwG{?u{>V+qEIikX7jDRay*n^sX$! zY1bCX0otiWa$tWEM8pB(P%u0kIA~}C(SaWZiXl00$j}C&13wNFLvrA-p=BcN&k=a{ z(KZ}MpkjikPVqzw_*9HO|D;iX+sMo62HIZi^CsdI?B|TO1D>H7 z{i9j2|1S_H|8e#^!Th!6BZZlH&;H^k`N#ADwzuGa4spsaByqP8A2sKT4nm~U8b7Gd zebVI(n}{F76~S(pGo$~JjpBNc3gRClPX0pT|1aaB3%`p3vlnlLV>-o`<}T zHwB;d2rMpKxv@CsUAgShvEQigfaKtB)WD0AH1y8zNJTwsLowWS6m%nhP=Cx!#Xx@Jj1-Z-* z;k2q{y~{cv{4_p7asr6ItV6LAUKItoonQ8cng5jGZ|BcVDw|qR*)$?w5s4OqT8{gw z*^k=6L==G1Q1%U@(r_aM)eYNzzCbKB?{+pDm^X@-dqC?nikA{lfuH)IOSGeSHHllH zGFz{jJ@jrRolY2IDP0^tvLaR&ID`!j)W$C-X3Wc)xfF0zV z6n{JZA{uCq+b7?B4j7ye86f8Yn_&(G!tC*Hvcpm4!eo7j?xH|rB5sn)j&~S5f}H#$ zUf$~#VrBKWIPP=xuW??N{e?X$sZTw!>o*ZAtN(}-U1u)L?q71=rM|!q zP@s5wo~m3(_MQ0K^Z)0Ncvl8$O{^=4m_I~LW3ubJHo*RpmQ{F+0%0`)m`gm}`zA@e z@TX`L+4TGC3+q#?^@=*p7RT3^(>kKPD*c!BN8c}HrC#!e+O!5|sd%TB$IBU+*oCu*ia9FfZN*Zjy!CLnTK{zMW)%b~Aq*8O(NT@IQP z*I0FoRqc^7ck3bF{SY(Leq#Oi{f9d+GdVe49-8tSfg6>_n9Zug_UM(2E87*jf}asQ z+ka;E+l^XMzpO;W4{N0gv(7974Ho?-3uw=Ot&Sr0ax}d#?W~;;8=T6&QnuwPKGo!EumwaP-kU zL|~ylJHIgP%uYFcG}_f&kQ|J51)L~OedjuufqBr?Ko zxao#!BxmBf+Ya1D=*w-36MiqZ5SQaNq$G zQ1(t?slSl|Yx|*_Z%o@F2Ems{0=%I?v=jsL+|&gTFASp9IBNP#-xq5nXx)rkEkDAz zA``yhhLhB7uId&46@L-E_^nhYH49VA2wWyAiR_n@88Suw9vR4UFYQhLaa8a#s!n)j z`H&pUy5xB#HB2MJG1Klb8K{$;0j69-nAgOqz80yV3W3Lway#iS_jMbwqWqiWC+{nX z`Mr~}yNCa4GN?*JqB6gP?<2$W^Zz~i`c8t`Z&O}FyCVO*P@}OmJqhy9@XKp5^LGQ8 zBhRI;=O}PY_Bq#4z?p+}GHmP~9Q_8Yxd8%Ku-={>$gj e-v>phUeGZ4CZeeyv(|yV{OSC?Q?7zD{eJ;hHsJyQ literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-4.19/single_function_gpl.c b/tests/data/test-symtab/kernel-4.19/single_function_gpl.c new file mode 120000 index 000000000000..3f9b47f8514e --- /dev/null +++ b/tests/data/test-symtab/kernel-4.19/single_function_gpl.c @@ -0,0 +1 @@ +../kernel/single_function_gpl.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-4.19/single_function_gpl.ko b/tests/data/test-symtab/kernel-4.19/single_function_gpl.ko new file mode 100644 index 0000000000000000000000000000000000000000..237832543c6a73a5fb44d6c941d4847fa82266ff GIT binary patch literal 2896 zcmeHJ&1=+95T9+T)^Dpt6fcX2sMyDDs$vUm7us41WoeQ1;K7hhUbmsyWZ7g(1yPTl zM9`y$diUtngY7}D-nkas{bNSl))gOED*O|RH@$ATl`;CtWQJ2KT z*RmJ%wosf4Wu7-ZJ19>wlU2vf+gDSrY*x$) z{!L(S|DM^tr!=%Ti|&rTTaDya4Tdz5Tc^Y6rVTCwl*_BA4H!|RoHgKZE-0JpE&I3q`H0M zL{C$!f4xGn1bIEr3iUgrqiTJ`Ry&BF#@|cMPDvjNT)1cY&q8_*lt?-DNOpfyPrN@ z_ac!U_@QI_*@zb6rrq`Irq5*=l8%=(B~YH9%6TBOLWZTOAx%<1x-L076l(=N*6ew{ zJMOu_5-9z~u$XVfz`ESG^8?aHC6_P|eo!Ky0(-$)2+Xx(8fOBaQ_Dxfp_rHKbD@R>WC$zTJrxFd$EQG1t|3f05mi@5BvcXLainA?{pGptBBtB_ znebD4j-X=x)S){6Z8FAnGbPzu?k|A=8S=Q>`UM5qgNJ(PV>cCPE0u+|mO@!SpcgMOyGh%$*`#c;Wd%X; zB%1SNL-L(?NIS*~GWwXyZBY zwHid7F6u;I1>$B(>Z9wN8p&nH2&5&D_WuHSCC8$oma zI;+mIsy$t%umOCEdLY|T$*gqLxc`3t*bXc&EXF0W>`U`W$4(SnniqDdAEYg#5+ za4J(Y$$}A06C&NqLD)Yq4VMroY3o!gn3TBEFUY`~62Bt#amnva z_WXW6N4%u%=a|g%0r{xDKeE(k#K*MXOU<8M?mxumB&AT5zDS%fB87u7cvvg;SQ8uv zc?UNcGG^d(!`?q^Fk zgG8G@)tKU9CSMe-9_p92@0f-I6H7wQ%Ol@Z5;ej$q7G|xg3y}^ zJYXCW-xQYm-4s~c58Ym4T8o$jKOPCth6d4k49s&=7kIufh_>UX=`+1A)=1F18Mj(~ zgn4--{K8EosoUJvSNvD<1V+)V%ucFEQxgoXO0HP%d`N&HFN*i1U7h=W@pEXPGipwZ z$1*^jUlniaOETVE|5F)YP8L(Ip&#``T&IU}K@|y}MoxYzUiEbcF0FwC|(xnLBT$E(<-)5U1)15)U_h@rXjn@Zez1A%O+bYhu&pPumFL_O3Dc%H!CNuM!k2mx7y-6R;EnXQYm6)Ou zyTnpWp^Po2u8F+gJ^FzxbcW`hlBS}GcBcdBTT z!S-lcDjIBWs%VnI_Gwxy;+-61KYnEmCjlsFb*c)^60YYV}1k@&ZAsn%Hr(@WyRBnrLbNi0{yF#^cg}%MyUEC<&Y5 zZPDkAzUMn*p2N6=;%^L(-1Ug@p6lCbgZNQNHAn;>l#t;Dd!iLE?%0vdWKQ1`tAS{` zTrqNT7agFTyc_0qLwRCz83Sw%X6B{M0CqOKyc*S1=tYqD_o-1f`yz<4^OpDUA tMDaB;9sqO%9<`t9_s8!<(NfQ7sC)yvPT5+A!B`Z(LFey{9t?6e{x{2j?8yKC literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-5.4/Makefile b/tests/data/test-symtab/kernel-5.4/Makefile new file mode 120000 index 000000000000..c7e68bddd8d2 --- /dev/null +++ b/tests/data/test-symtab/kernel-5.4/Makefile @@ -0,0 +1 @@ +../kernel/Makefile \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-5.4/empty.c b/tests/data/test-symtab/kernel-5.4/empty.c new file mode 120000 index 000000000000..ac07d5e725cc --- /dev/null +++ b/tests/data/test-symtab/kernel-5.4/empty.c @@ -0,0 +1 @@ +../kernel/empty.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-5.4/empty.ko b/tests/data/test-symtab/kernel-5.4/empty.ko new file mode 100644 index 0000000000000000000000000000000000000000..6a0769eb96c66ed6e58ef026f7b9d22e00cc3c75 GIT binary patch literal 2336 zcmeHIQEL-H5T5H*t7yT3piq>E3i^;Gy`;fbB8P1)ff^Obqa2sqwmF*Hgx*CP5c=pp z5MTWZJ_x>uKgCD!&0nB1d%I@4cZ$?UU3xdO-^@3=oy^P~ZS6dma~#mifqO99X%yh| zshRFe)rUnm5A&#B#K*;FyVHf~hi3imrH}XDzq@kv>%!}!?%>+^G}>fLeC@%?zdK1gEdwv((weZJlY9}|0(}g2DUdg)+@I*c`pt{ zWsP}krRv?eoof}Z=GE}8jd&naS4;WSHVE#(3pqI8V>Tvm7&W!bsU z5MMI>UtgzI4g{8rBG!i>=yuvqx?4eeGf+dwTRn!-MDiNPAU&D9Is{^r@t_HLOp2Ec z;xxeElOYFS=`_j09?I+>mjkU4k?n~I>rLWeRE;BG63WLS%lKgibjeukj(|mB7J_si z#$taY`ka{uv0j=2>yMIz3#7?FID@Nc7WVg5p8i%WV*siWokktcSIP|yC`sP~b1~eM z@gwD=e^1S^`Riz)8nY|-r6yQXerF8KN1ZVH{+fT&@Fmsew-rX;H*>u;H->KWAEAvf zoBv61e%7bnE2%|{3U#B+F9JEkK3^bASS>ft-YQ^chDc5GwS0l7)=k$=;X=99_NBd@ ud-8m&_-_<}=D-Df^yJZXL35()s4uEe>^is4r#Vu_f2v01E3})-=Klb7yUpbmWi@AciLVvsL$+I(`tIM46qL8N$*iqANv)|NVe{~ z{JjEc1x_A2cDOut+^+>*SU#jGYI3}Ca8JUOD-)Fo{7vEB`ZBXLY!TxOShsZks`9JRe)>xL zgm0?1{N?J@bF%XG=?3_vaR>OaK3)vEE|#>{@}U*gy_TE4a3ZF;q$x}{}cYzf$Mg9#okn>XP zZU4ilpuKLNfLGZeJ1G)C&IMM(EHZ@I^S{9cpUYoGJDL+wbKK^m@e+eSBPBaIF(vMK z#ESCYWk0cFF;~C8P*IfsZ9#sjk)6MWSW*7RobYd^LhSm*1N?PR)a?~Vrndhz_P6`A zj}2u%N*KHUHwXAv*}rNvwkm;`-a|??vGd=s0k*g2{{V5qCRi^-{O1H-&5TB(eehb8}#Ki1DjUM(11^ghvGyx}_^v!f%PR`uxs#Jhi1@1y2 zF$%EWQ}9;CTF?upp&R)#_%-l5H9H5luBK0~bbapGc-8l)*8BMT=Fg?Y!>G$*;?GPF zwboFUYkNDV{Ohl+#Ld+A?DHm=dbvYmyAK=H2kq7h!#S>(60K;hO-d3VpyuIvnHWL;Z^%TDcF1}M$1s0}!xNCj)a(Lzu-1CA+D!5VP95ERaU z6N;3xa*lMvk6*gtJOULZPtKr5ILl|r(IWg3$$dm0W_VH03xwN9%l3Ve>E#sMz22f& zfuf%Mr2dGsPpOYZTYW;jAD($haEV6j2^Va8Zg%>?+@w7{ zVbf4GM|Pod!kWXoAfB)05ZF;6@L-EWOo)fHVl+XZyCy`1!?ifDTeZJ0$4m)#VkmlQDIFPL$^h$F`Uu`WmUMiSBRd0NLyLze8MN zTxT)^_Mc^dDEl*gk2v$H>Bc_ym%jSlk#RQ3pU-~^G5J4LfBy2lP`1?$4U?~^SC^iv Sd~cNbf1~@ir8*<8`~L>+9pJA3 literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-5.4/single_function_gpl.c b/tests/data/test-symtab/kernel-5.4/single_function_gpl.c new file mode 120000 index 000000000000..3f9b47f8514e --- /dev/null +++ b/tests/data/test-symtab/kernel-5.4/single_function_gpl.c @@ -0,0 +1 @@ +../kernel/single_function_gpl.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-5.4/single_function_gpl.ko b/tests/data/test-symtab/kernel-5.4/single_function_gpl.ko new file mode 100644 index 0000000000000000000000000000000000000000..d518defe2da8e7381fb9340ac40a4f7718d86151 GIT binary patch literal 2968 zcmeHJ&1=+95T9-8_h&^!(ZeDh^w39}wxWfVg|?PLDTwssA!L(u8=Ab7O}4ZkDtMJ5 z2%_N0ix>X@doJj~iy%nxUhpRV1v-h7!{+#b&A)=K@Ui)_Bmjv|8Dje@J&L-r8< zjbLx=&uq_1S(Tkhy;ptPt-LFDhqUspt-`5OcP|UH=GW8~9Mzy4B znu5LSHHtMT>v=(`H;@i!^=YcDJ|TV%zb~G>OrI)Tx$o$|<#EdT?_^LhxI~=z!UM;d zpPRWiKjq9!I%=reV?8KMSbMYw;@N7CfFqMEaBf1?4itSUU5hifb;HOX z41EweRJ>Ip3sy4_ogi|{Gt$FUN*D;Ar4*>ppNDY z0}9KB%E8Qw@4HgN6f%UFc2AUnIT_6Tn`lQEQGI<-2@NUm6jHL|PU3UjN33f9XUb2% za|D_B(i)ggosl>F{{R}I@?8J` literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-5.4/single_variable.c b/tests/data/test-symtab/kernel-5.4/single_variable.c new file mode 120000 index 000000000000..196fb4c0ba58 --- /dev/null +++ b/tests/data/test-symtab/kernel-5.4/single_variable.c @@ -0,0 +1 @@ +../kernel/single_variable.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-5.4/single_variable.ko b/tests/data/test-symtab/kernel-5.4/single_variable.ko new file mode 100644 index 0000000000000000000000000000000000000000..d62235ec6d9eb2b0d04146396960589b7d40e7f1 GIT binary patch literal 2944 zcmeHJOHUL*5UyoV@hwEfL}T_~q8_$^0gRAfCgBwl0`WjRPG)xo7@3{H-C2UsC`V&_ z-aL6muO9dTCZ4&Nc=zJX_ydeq^>i^!?_j{Ic6O$!zIt?3Pj~e`o}8WPD3yRm32s3y zF$%D8BA*4D>SQ*9yMqkS*#VGpEzm+Z3?f@k`qaKdOX4o2e=^~4u7aNUKu zncEAK?#zU%nyNj#3#ATg5AA}uzuJS~#z`8uH`=08w6T{iT@ITr zrq{woA0;&}au-{1Ee(@ci96RoR-$~_f%_BZ88zYT5ax&+Ch8PV# zx0#gLGEdaQr^x@UGU`*5iCO<$;n5Mr35qFHj9K`hT6a|{Y z^mj}^IhpytM4T{QXJrQLKgWQg?9cQK;>_!&FZMY<`5Gn4Ft3z9*MAC8`k%_{$={#u fg`%mpRWtc4qvbC%SGqTf{J*IEx0$<2&h-BcXZ_&m literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-5.4/single_variable_gpl.c b/tests/data/test-symtab/kernel-5.4/single_variable_gpl.c new file mode 120000 index 000000000000..dc09c0d27870 --- /dev/null +++ b/tests/data/test-symtab/kernel-5.4/single_variable_gpl.c @@ -0,0 +1 @@ +../kernel/single_variable_gpl.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-5.4/single_variable_gpl.ko b/tests/data/test-symtab/kernel-5.4/single_variable_gpl.ko new file mode 100644 index 0000000000000000000000000000000000000000..cdbd6a7d80b7cdc3c8b103104ab94833b3967c0f GIT binary patch literal 2968 zcmeHJ&1=*^6o1>aT0d(=#iGJ09u(}*Zd=hpCD5*=PzoZw=pkg2bQ_vY%5Ju_ASih7 zB2^GU!INJ71N7{{qn^a82SEf69zE%MlX+%#HkQS!4x7C9e(z)6yv)4W+ttOZeWeoc zD8UuTB}M_B?9O>xvNjxoA?Qc`2tF1*^GnNc@5RW4Z>NR^PCp(#8NZwQbmPH~ue(qu zW8!NujN6+i(|D7S-|t{^J!z(a?`*iu(5*#*Q(uq357vX&Z_PmLHiDT}7}rtJVX+Z3 z8*V-HW~RiXm>e%tz&?D6)nM$tUI`2Dx}$0{&CJ3C!IHy6}GH!fcm6)`?qxpY3` z%9XLo82%>kZ1iTfWAUs%>}X5w_HI{8p2{MePHp$FfKF=nus}Qfn%aUvP0Cpd_T+-b zS+G}=a@K-r8C_R-+!8l69|;FJUN4Lg|j@O9Oo2%M#;m9-jq0Xk8B)Q z)I(Y{@0Qee*YhdjC9R&vRGimHhqe0HYO1>uAC&!+OgZ9PW;TR0m2OwldiPac`|mfDBhbBfzI z>C@&;`gApHIhblY3Lr{6H*!|mv6qHPtVC}5*^09_mG7tqa2*IA&~Ol0c1UFwNLQJo zb%}c17PWR5`Jr~9I4s`sj?e3sGjmzgWwCq@2W)c$*!yGqXV{{^x{?kE5N literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-5.6/Makefile b/tests/data/test-symtab/kernel-5.6/Makefile new file mode 120000 index 000000000000..c7e68bddd8d2 --- /dev/null +++ b/tests/data/test-symtab/kernel-5.6/Makefile @@ -0,0 +1 @@ +../kernel/Makefile \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-5.6/empty.c b/tests/data/test-symtab/kernel-5.6/empty.c new file mode 120000 index 000000000000..ac07d5e725cc --- /dev/null +++ b/tests/data/test-symtab/kernel-5.6/empty.c @@ -0,0 +1 @@ +../kernel/empty.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-5.6/empty.ko b/tests/data/test-symtab/kernel-5.6/empty.ko new file mode 100644 index 0000000000000000000000000000000000000000..265d7eaa15cfc9d27f37e0420589f9c4882eca34 GIT binary patch literal 2336 zcmeHI&1w`u5U$C@-xzSggWzRB1wCxLnKg?ptPCV^S%~XT*rN=yJDp_6PEW|pY61a| zzJeZo1D`+yPa^mX;z^G_fmZc&yPcjAqBbScG#hkNO3CTzqQmZZ|5jKyXOEDG}w zr28ZmJE<6RW*)>wSq5yJCJ7fvlYwvsH?lk&@2EWet+<2%s7iDibv$1wS2Um`eGkmV za8t#Pl#~8FHOJ<6&_Fe2SMZ@GSW zjWC=4R&jpTr`{{6MT`n{qs=b^1;ajHAWT@ZFwfp9;9!PGP4l&Uim292*Fot*h1K?@ wy`6jVe4zL*6oKZzd3^Nb(RD#{qUxwGs!;4Yx6h|JQpMj;qw+c0&1Lg{06qDUC;$Ke literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-5.6/one_of_each.c b/tests/data/test-symtab/kernel-5.6/one_of_each.c new file mode 120000 index 000000000000..27c87e5758cb --- /dev/null +++ b/tests/data/test-symtab/kernel-5.6/one_of_each.c @@ -0,0 +1 @@ +../kernel/one_of_each.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-5.6/one_of_each.ko b/tests/data/test-symtab/kernel-5.6/one_of_each.ko new file mode 100644 index 0000000000000000000000000000000000000000..72bb8e1cc2acb7c472f5d3ba502dbec783587da0 GIT binary patch literal 4040 zcmeHJJ8TqZ5FWD*F(wb}M34tjj)Ve&yt2>ON>DC32^@lij1X}}vDv#@+l%jZt-C#A zl$WI_5>-aeMoL*dloeS6R|NiUM9~SOk`s>a& zH}8Hq^W%-(XfrwS?`#Z9$ip&bu?S6@XpXE4@qE80pv0 zSv3A!em(-Z5jcJF5^KQ+gE?=kbs^@W$W+?Tm7bae8k}7Y#mIn3>D$U(?Pg|HL?r zlcrk+-(AS_FX9uBt%o`f?Y6q>DqLa-morJ3O+SYfp!?acaNW-Vh3kGQ3fKJ{RJiWv9fgD2Goy{%%p3Am zk!ZcUD^cHV^uu;*Dr|vkp!8ePO@hq?+-}hJX}xfkoN7%d<_)8j9?*UaqvaUfmY?`w zO0>ghEsmOjt7q43^w7H*cRE3YrA%@B*q!PnesfK~#Q&Gy#?Tk>p?T6&XGPBuK{8Kl z1{a00_!c|JeIx#M{0TJBS!SR7UvWTo5~hHhdu)aU6bQ5X-(rU+)vu!;^+a6LDqpbI z7o*Xi`c-^1{mBaTr%A?7c!I{V z{zuv2m=0!N4Smg+Jx|jdFZ)zt?D_w0NPL~+>(<29B@y#qkkgph^|x$*{W&db0M}6> zY`o;)zAjZrQurBy09|i_vXF3H#u{ut56U; z3gV*3Bu0f;-<9!J!dl|6I3&7(KMIcl&s2F=JKTkb->+b|z z5))oCUeH_t8OPdMO8M=sEQO8Ot=V(Upc;E&AVkewa)VklCIYAKjzwND@4K0L*=^LF zd9OM)EJx(vP!R%kaj@o!0-Y+YJ2X$P9Dhc#Ih zwmn;(zBW5)Pfyr%)|$g@C?34#xi*N8U2{m-K^VLCh|r^BJPB;WL1;fGbn&#r@1Ty`3sQvq$;z;faq;lXu5TwNos9O6gV7^#esoPZ`@ z1$2Qqtbv>lnzGXL{94JY37J6YT_Oeytc5ai?2I%5WVS zmcZos*T{hTiS2d&QBdGs);sDBIp}%uzUO$8LoC5~+|L-YYqtcgCqr2}NI=l>XR#0E&ug#F755M_U+&jDv%HGQs4ld%7D`d1Ab1GbB;AH)U&L@2C4;UTqKVEnhof46_R0`oI7Q{|hpK{a$``L3|V=&(I`t0k4~5qkuG zW7r#qGdr+SR$*sS?-lQME9=VrA+4-yi*V}H{bYgG{MxVuJ(`w_7M#o#O|qa@({j;* zzFg5H3r=ZTOQdt83x4mJ16L6!X?b!6qY7vJigKJ)_;scCEB-9Q^Lk!ZxQD!G-mPqW zf8E|G{G#$__Bj*i)a;}msP=1htEd!yB0hlMkw4$ijVj9xJ(YP z*s32CAzcj<2N%NdiwGakaIPfb=QSKelI4Uv zTOIOMmZ%=0CYz$#3?qLy^g(1$>+Tb2u$h8r1d&T?Z>@|jx?ICRc*`X~A1IV7F$mvH zUC3fapOV literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-5.6/single_variable.c b/tests/data/test-symtab/kernel-5.6/single_variable.c new file mode 120000 index 000000000000..196fb4c0ba58 --- /dev/null +++ b/tests/data/test-symtab/kernel-5.6/single_variable.c @@ -0,0 +1 @@ +../kernel/single_variable.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-5.6/single_variable.ko b/tests/data/test-symtab/kernel-5.6/single_variable.ko new file mode 100644 index 0000000000000000000000000000000000000000..a3d71e6df73a0deebeac405a32900a21f2b000a8 GIT binary patch literal 3024 zcmeHJ&1=+95P#cLt>3mP3W6-?p&s_xrnYFI5^QU&l!}L-s1WOWa@|T)OB@l0MK|cj;4$Etnw=A$H?OaKIb($1`Xbdxc4a#pcWtp50(WY$8A93oirWx9ij}K|*qa-QW{7=? zm8*u>pBsv1hy#k1s<^ki#m`^5;{*UDB~Q+vLO9#UiD(gin(SVZw-Ovrk+hv8X@hJx z?%l*+tlM+K`-sotU7{50zXo`(Qa6iI*Z{mw`Hp+2IdP3}2$!g25yA|IRGJ(>&PR8D9EM(KGJ2>w&N~YNm1a7rR;0N)8 z`A|sLi5-!|tNX!H7}PwePFhwY=v@mN4KIMW$w+YXR-)LcEvXs*m3|6XxZ7#@Wic$$ z&Sprea2*+zptR$=)PeUC_t*KO;J`Jm@2LAk;PuaZ-JT@Ap8rE4=qHLkz6JddL#ei} zl+ZN-4}!#gyk2--Hvq$&OnB7xjErq-3NX%}r9+sW{~O|;C&_|&Y~KL|G5kNKwskT% zU-s$qUj|1zJ}1iO67wxqNInILW9Z{sIzavP{9gi&*Z}!iFn^W-lFVoM8gSOtt}i+q zAGvz%G0rRE-zMiF!0;~Ndh++jd#2q`KX!ow+EyyEx1KBBL+$webOpc7n5m-ke*+C0 B@l5~# literal 0 HcmV?d00001 diff --git a/tests/data/test-symtab/kernel-5.6/single_variable_gpl.c b/tests/data/test-symtab/kernel-5.6/single_variable_gpl.c new file mode 120000 index 000000000000..dc09c0d27870 --- /dev/null +++ b/tests/data/test-symtab/kernel-5.6/single_variable_gpl.c @@ -0,0 +1 @@ +../kernel/single_variable_gpl.c \ No newline at end of file diff --git a/tests/data/test-symtab/kernel-5.6/single_variable_gpl.ko b/tests/data/test-symtab/kernel-5.6/single_variable_gpl.ko new file mode 100644 index 0000000000000000000000000000000000000000..a2142a69133f2cdc77c9894874cf31b3b9274f1d GIT binary patch literal 3048 zcmeHJ&1=+95Pxf0Tfc4VCn7B3K@WXxQ(J1Kve4GGP!>cAf`^bz(rsuqDVuC*K~V2f z1W$rD!IL+!7mwl};7#x!sNg{_;!S6gnccT(Z2C!{*f0 zOe&hA<|zEe;cV>BZPyAKf7sDRy4$-$jr3IJ;dpAh$q;x_yU7sB;aALt=vTD1Xoy2? zMUf0~Skc;|A&#^aMKZ)uMax7y(>>z*FWqnffP#`IXD~)M>*pzOj_^yQ4-mhf;@CYh zI!D|Ao;UAiYVWSwbHdM1JhOMH&|Uw}fDb5jD^Us`QoKLyvlz;eUqBvIzAyK>pX86e zNbE0i8k(#}u5^TDEmaooEX`XBa~AblbD{&q#%o^dfVkzFk3v%Uw#aINZ!E9+ZMaT|526DR z?{LJ27(_1PG$-Kc>VU7Xg!PcMuqmreKX8YASI88~?mn4#8;Ot&FR*d#*~;*uYilqN z+;XwN59Ei-k&v#P*diS>@Wa(8bUdjpT2^E5cA|RS3t{YZHn@$4z~_wp_4sKp;2zgc+5-yU{m=2bK2Py_{*Nd??=<@S zCGbNGxk}$Cq1yx=1CD;YZ+KmI0mGb3cvN~q%2^czne%7v5vJ$=lH%Zs=^&0{Fa!ZH z{GX=MCsH_Hw(09nz>pWuiE_W<_!0}mw}9gu`urswAb&moXMiI%N_J)(Utxea$1{Hc zILoT*);{OQSiSZ*&QprNN5 + +void exported_function(void) {} +EXPORT_SYMBOL(exported_function); + +void exported_function_gpl(void) {} +EXPORT_SYMBOL_GPL(exported_function_gpl); + +int exported_variable = 1; +EXPORT_SYMBOL(exported_variable); + +int exported_variable_gpl = 1; +EXPORT_SYMBOL_GPL(exported_variable_gpl); + +void local_function(void) {} +int local_variable = 2; diff --git a/tests/data/test-symtab/kernel/single_function.c b/tests/data/test-symtab/kernel/single_function.c new file mode 100644 index 000000000000..5160865f64ea --- /dev/null +++ b/tests/data/test-symtab/kernel/single_function.c @@ -0,0 +1,7 @@ +#include + +void exported_function(void) {} +EXPORT_SYMBOL(exported_function); + +void local_function(void) {} +int local_variable = 2; diff --git a/tests/data/test-symtab/kernel/single_function_gpl.c b/tests/data/test-symtab/kernel/single_function_gpl.c new file mode 100644 index 000000000000..fb5503a0c111 --- /dev/null +++ b/tests/data/test-symtab/kernel/single_function_gpl.c @@ -0,0 +1,7 @@ +#include + +void exported_function_gpl(void) {} +EXPORT_SYMBOL_GPL(exported_function_gpl); + +void local_function(void) {} +int local_variable = 2; diff --git a/tests/data/test-symtab/kernel/single_variable.c b/tests/data/test-symtab/kernel/single_variable.c new file mode 100644 index 000000000000..20178f257406 --- /dev/null +++ b/tests/data/test-symtab/kernel/single_variable.c @@ -0,0 +1,7 @@ +#include + +int exported_variable = 1; +EXPORT_SYMBOL(exported_variable); + +void local_function(void) {} +int local_variable = 2; diff --git a/tests/data/test-symtab/kernel/single_variable_gpl.c b/tests/data/test-symtab/kernel/single_variable_gpl.c new file mode 100644 index 000000000000..552e9b500fc1 --- /dev/null +++ b/tests/data/test-symtab/kernel/single_variable_gpl.c @@ -0,0 +1,7 @@ +#include + +int exported_variable_gpl = 1; +EXPORT_SYMBOL_GPL(exported_variable_gpl); + +void local_function(void) {} +int local_variable = 2; diff --git a/tests/test-symtab.cc b/tests/test-symtab.cc index 62f8998af5d0..20e3071c7259 100644 --- a/tests/test-symtab.cc +++ b/tests/test-symtab.cc @@ -52,8 +52,9 @@ read_corpus(const std::string path, corpus_sptr& result) environment_sptr env(new environment); const std::vector debug_info_root_paths; - read_context_sptr ctxt = - create_read_context(absolute_path, debug_info_root_paths, env.get()); + read_context_sptr ctxt = create_read_context( + absolute_path, debug_info_root_paths, env.get(), + /* load_all_type = */ true, /* linux_kernel_mode = */ true); dwarf_reader::status status = dwarf_reader::STATUS_UNKNOWN; result = read_corpus_from_elf(*ctxt, status); @@ -105,7 +106,7 @@ assert_symbol_count(const std::string& path, const dwarf_reader::status status = read_corpus(path, corpus_ptr); REQUIRE(corpus_ptr); - REQUIRE(status == dwarf_reader::STATUS_OK); + REQUIRE((status & dwarf_reader::STATUS_OK)); const corpus& corpus = *corpus_ptr; if (function_symbols != N) @@ -203,3 +204,90 @@ TEST_CASE("Symtab::SimpleSymtabs", "[symtab, basic]") const corpus_sptr& corpus = assert_symbol_count(binary, 0, 0, 1, 1); } } + +static const char* kernel_versions[] = { "4.14", "4.19", "5.4", "5.6" }; +static const size_t nr_kernel_versions = + sizeof(kernel_versions) / sizeof(kernel_versions[0]); + +TEST_CASE("Symtab::SimpleKernelSymtabs", "[symtab, basic, kernel, ksymtab]") +{ + for (size_t i = 0; i < nr_kernel_versions; ++i) + { + const std::string base_path = + "kernel-" + std::string(kernel_versions[i]) + "/"; + + GIVEN("The binaries in " + base_path) + { + + GIVEN("a kernel module with no exported symbols") + { + // TODO: should pass, but does currently not as empty tables are + // treated + // like the error case, but this is an edge case anyway. + // assert_symbol_count(base_path + "empty.so"); + } + + GIVEN("a kernel module with a single exported function") + { + const std::string binary = base_path + "single_function.ko"; + const corpus_sptr& corpus = assert_symbol_count(binary, 1, 0); + const elf_symbol_sptr& symbol = + corpus->lookup_function_symbol("exported_function"); + REQUIRE(symbol); + CHECK(!corpus->lookup_variable_symbol("exported_function")); + CHECK(symbol == corpus->lookup_function_symbol(*symbol)); + CHECK(symbol != corpus->lookup_variable_symbol(*symbol)); + } + + GIVEN("a kernel module with a single GPL exported function") + { + const std::string binary = base_path + "single_function_gpl.ko"; + const corpus_sptr& corpus = assert_symbol_count(binary, 1, 0); + const elf_symbol_sptr& symbol = + corpus->lookup_function_symbol("exported_function_gpl"); + REQUIRE(symbol); + CHECK(!corpus->lookup_variable_symbol("exported_function_gpl")); + CHECK(symbol == corpus->lookup_function_symbol(*symbol)); + CHECK(symbol != corpus->lookup_variable_symbol(*symbol)); + } + + GIVEN("a binary with a single exported variable") + { + const std::string binary = base_path + "single_variable.ko"; + const corpus_sptr& corpus = assert_symbol_count(binary, 0, 1); + const elf_symbol_sptr& symbol = + corpus->lookup_variable_symbol("exported_variable"); + REQUIRE(symbol); + CHECK(!corpus->lookup_function_symbol("exported_variable")); + CHECK(symbol == corpus->lookup_variable_symbol(*symbol)); + CHECK(symbol != corpus->lookup_function_symbol(*symbol)); + } + + GIVEN("a binary with a single GPL exported variable") + { + const std::string binary = base_path + "single_variable_gpl.ko"; + const corpus_sptr& corpus = assert_symbol_count(binary, 0, 1); + const elf_symbol_sptr& symbol = + corpus->lookup_variable_symbol("exported_variable_gpl"); + REQUIRE(symbol); + CHECK(!corpus->lookup_function_symbol("exported_variable_gpl")); + CHECK(symbol == corpus->lookup_variable_symbol(*symbol)); + CHECK(symbol != corpus->lookup_function_symbol(*symbol)); + } + + GIVEN("a binary with one function and one variable (GPL) exported") + { + const std::string binary = base_path + "one_of_each.ko"; + const corpus_sptr& corpus = assert_symbol_count(binary, 2, 2); + CHECK(corpus->lookup_function_symbol("exported_function")); + CHECK(!corpus->lookup_variable_symbol("exported_function")); + CHECK(corpus->lookup_function_symbol("exported_function_gpl")); + CHECK(!corpus->lookup_variable_symbol("exported_function_gpl")); + CHECK(corpus->lookup_variable_symbol("exported_variable")); + CHECK(!corpus->lookup_function_symbol("exported_variable")); + CHECK(corpus->lookup_variable_symbol("exported_variable_gpl")); + CHECK(!corpus->lookup_function_symbol("exported_variable_gpl")); + } + } + } +}