From 47bad82779f7fcd46b8a269cfe9a99f8ef34d317 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 13 Dec 2025 12:13:08 -0800
Subject: [PATCH 2/5] kexec: Add imaxdiv implementation for klibc builds

klibc doesn't provide the imaxdiv_t structure or imaxdiv() function
from inttypes.h. Add a simple inline implementation when building
with klibc.

The imaxdiv() function computes the quotient and remainder of the
division of numer by denom, which is required for standard C99
compliance but missing in minimal libc implementations.

Upstream-Status: Pending

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 util_lib/include/elf_info.h | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/util_lib/include/elf_info.h b/util_lib/include/elf_info.h
index fdf4c3d..9338205 100644
--- a/util_lib/include/elf_info.h
+++ b/util_lib/include/elf_info.h
@@ -22,7 +22,23 @@
 #include <stdbool.h>
 #include <inttypes.h>
 #include <ctype.h>
+#ifdef __KLIBC__
+/* klibc doesn't provide imaxdiv_t or imaxdiv() */
+#include <inttypes.h>
+
+typedef struct {
+    intmax_t quot;  /* Quotient */
+    intmax_t rem;   /* Remainder */
+} imaxdiv_t;
 
+static inline imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom)
+{
+    imaxdiv_t result;
+    result.quot = numer / denom;
+    result.rem = numer % denom;
+    return result;
+}
+#endif /* __KLIBC__ */
 int get_pt_load(int idx,
 	unsigned long long *phys_start,
 	unsigned long long *phys_end,
