Re: [PATCH v3 1/7] vmlinux.lds.h: add linker section for KUnit test suites
From: Brendan Higgins <hidden>
Date: 2020-02-28 07:22:46
Also in:
linux-arch, linux-kselftest, linux-um, lkml
On Thu, Feb 27, 2020 at 5:20 PM Brendan Higgins [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Add a linker section where KUnit can put references to its test suites. This patch is the first step in transitioning to dispatching all KUnit tests from a centralized executor rather than having each as its own separate late_initcall. Co-developed-by: Iurii Zaikin <redacted> Signed-off-by: Iurii Zaikin <redacted> Signed-off-by: Brendan Higgins <redacted> Reviewed-by: Stephen Boyd <sboyd@kernel.org> --- include/asm-generic/vmlinux.lds.h | 8 ++++++++ 1 file changed, 8 insertions(+)diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index e00f41aa8ec4f..99a866f49cb3d 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h@@ -856,6 +856,13 @@ KEEP(*(.con_initcall.init)) \ __con_initcall_end = .; +/* Alignment must be consistent with (kunit_suite *) in include/kunit/test.h */ +#define KUNIT_TEST_SUITES \ + . = ALIGN(8); \
After posting this, I saw I had gotten an email from 0day[1]. After some investigation, I discovered that this 8 byte alignment works for x86 64 bit fine, but only *sometimes* for 32 bit. 4 byte alignment seems to work in all cases (so far). I am not sure why we went with such a large alignment in hindsight. In any case, I should have a fixed revision out pretty soon.
quoted hunk ↗ jump to hunk
+ __kunit_suites_start = .; \ + KEEP(*(.kunit_test_suites)) \ + __kunit_suites_end = .; + #ifdef CONFIG_BLK_DEV_INITRD #define INIT_RAM_FS \ . = ALIGN(4); \@@ -1024,6 +1031,7 @@ INIT_CALLS \ CON_INITCALL \ INIT_RAM_FS \ + KUNIT_TEST_SUITES \ } #define BSS_SECTION(sbss_align, bss_align, stop_align) \ --
[1] https://lists.01.org/hyperkitty/list/lkp@lists.01.org/thread/4I4UW4OAT63ETMIEUJQTOF3BFTMO6ROD/