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")); + } + } + } +}