[PATCH] um: fix CONFIG_GCOV for built-in code

Alex Hung <[email protected]> Mon, 27 Jul 2026 13:55:15 -0600
Newsgroups org.infradead.lists.linux-um
Message-ID <[email protected]>
From: Johannes Berg <[email protected]>

With contemporary toolchains, CONFIG_GCOV doesn't work because
gcov now relies on both init and exit handlers, but those are
discarded from the binary. Fix the linker scripts to keep them
instead, so that CONFIG_GCOV can work again.

Note that this does not make it work in modules yet, since we
don't call their exit handlers.

Note: the .init_array.* wildcard and the RUNTIME_DISCARD_EXIT
define are already present in this tree; only the matching
.fini_array.* wildcard remained to be added.

Signed-off-by: Johannes Berg <[email protected]>
Signed-off-by: Alex Hung <[email protected]>
---

This is a revived patch. The original can be found at
https://lkml.iu.edu/hypermail/linux/kernel/2103.1/06608.html

 arch/um/include/asm/common.lds.S | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/um/include/asm/common.lds.S b/arch/um/include/asm/common.lds.S
index fd481ac371de..2ed213913afe 100644
--- a/arch/um/include/asm/common.lds.S
+++ b/arch/um/include/asm/common.lds.S
@@ -91,6 +91,7 @@
   .fini_array : {
 	__fini_array_start = .;
 	*(.fini_array)
+	*(.fini_array.*)
 	__fini_array_end = .;
   }

--
2.43.0