Hi,

Are there any concerns or comments on this patch?

On 5/12/26 17:26, Alex Hung wrote:
GCC emits per-translation-unit gcov destructors into
.fini_array.NNNNN sections (prioritized). The UML linker
scripts only captured *(.fini_array), silently discarding
all prioritized destructor entries.

As a result, gcov's __gcov_exit never ran at process halt
and no .gcda files were written after KUnit tests completed.

Add *(.fini_array.*) to common.lds.S and dyn.lds.S, mirroring
the existing *(.init_array.*) pattern already present for
constructors.

Signed-off-by: Alex Hung <[email protected]>
Assisted-by: Copilot:Claude-Sonnet-4.6
---
  arch/um/include/asm/common.lds.S | 1 +
  arch/um/kernel/dyn.lds.S         | 2 +-
  2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/um/include/asm/common.lds.S b/arch/um/include/asm/common.lds.S
index fd481ac371de..336361412b47 100644
--- a/arch/um/include/asm/common.lds.S
+++ b/arch/um/include/asm/common.lds.S
@@ -90,6 +90,7 @@
    }
    .fini_array : {
        __fini_array_start = .;
+       *(.fini_array.*)
        *(.fini_array)
        __fini_array_end = .;
    }
diff --git a/arch/um/kernel/dyn.lds.S b/arch/um/kernel/dyn.lds.S
index ad3cefeff2ac..fbd8d559f21f 100644
--- a/arch/um/kernel/dyn.lds.S
+++ b/arch/um/kernel/dyn.lds.S
@@ -113,7 +113,7 @@ SECTIONS
      *(.init_array.*)
      *(.init_array)
    }
-  .fini_array     : { *(.fini_array) }
+  .fini_array     : { *(.fini_array.*) *(.fini_array) }
    .data           : {
      INIT_TASK_DATA(KERNEL_STACK_SIZE)
      DATA_DATA
--
2.43.0



Reply via email to