From 1a30f3015eac3c40852845acdaeb6bf157c58776 Mon Sep 17 00:00:00 2001 From: wangmingrong1 Date: Thu, 15 Aug 2024 18:00:20 +0800 Subject: [PATCH] libc/lib_utsname: Store version number for debugging and preventing optimization In order to directly read the version information of the current file from elf or bin files, memory files, etc., for easy debugging and one-to-one correspondence. Signed-off-by: wangmingrong1 --- libs/libc/misc/lib_utsname.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/libs/libc/misc/lib_utsname.c b/libs/libc/misc/lib_utsname.c index 77fc671e7fecb..57aa62d590cc6 100644 --- a/libs/libc/misc/lib_utsname.c +++ b/libs/libc/misc/lib_utsname.c @@ -47,6 +47,20 @@ #include #include +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static char g_sysname[] = "NuttX"; +static char g_machine[] = CONFIG_ARCH; +static char g_release[] = CONFIG_VERSION_STRING; + +#if defined(__DATE__) && defined(__TIME__) +static char g_version[] = CONFIG_VERSION_BUILD " " __DATE__ " " __TIME__; +#else +static char g_version[] = CONFIG_VERSION_BUILD; +#endif + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -83,26 +97,15 @@ int uname(FAR struct utsname *name) { int ret = 0; - /* Copy the strings. Assure that each is NUL terminated. */ - - strlcpy(name->sysname, "NuttX", sizeof(name->sysname)); - /* Get the hostname */ ret = gethostname(name->nodename, HOST_NAME_MAX); name->nodename[HOST_NAME_MAX - 1] = '\0'; - strlcpy(name->release, CONFIG_VERSION_STRING, sizeof(name->release)); - -#if defined(__DATE__) && defined(__TIME__) && \ - !defined(CONFIG_LIBC_UNAME_DISABLE_TIMESTAMP) - snprintf(name->version, VERSION_NAMELEN, "%s %s %s", - CONFIG_VERSION_BUILD, __DATE__, __TIME__); -#else - strlcpy(name->version, CONFIG_VERSION_BUILD, sizeof(name->version)); -#endif - - strlcpy(name->machine, CONFIG_ARCH, sizeof(name->machine)); + strlcpy(name->sysname, g_sysname, sizeof(name->sysname)); + strlcpy(name->release, g_release, sizeof(name->release)); + strlcpy(name->version, g_version, sizeof(name->version)); + strlcpy(name->machine, g_machine, sizeof(name->machine)); return ret; }