1457c8996SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 21da177e4SLinus Torvalds /* 31da177e4SLinus Torvalds * linux/init/version.c 41da177e4SLinus Torvalds * 51da177e4SLinus Torvalds * Copyright (C) 1992 Theodore Ts'o 61da177e4SLinus Torvalds * 71da177e4SLinus Torvalds * May be freely distributed as part of Linux. 81da177e4SLinus Torvalds */ 91da177e4SLinus Torvalds 1092045954SSam Ravnborg #include <generated/compile.h> 119afb719eSLaura Abbott #include <linux/build-salt.h> 121fdd7433SYonghong Song #include <linux/elfnote-lto.h> 13e4f02fdaSMasahiro Yamada #include <linux/export.h> 145a704629SDan Moulding #include <linux/init.h> 155a704629SDan Moulding #include <linux/printk.h> 161da177e4SLinus Torvalds #include <linux/uts.h> 171da177e4SLinus Torvalds #include <linux/utsname.h> 180bb80f24SDavid Howells #include <linux/proc_ns.h> 191da177e4SLinus Torvalds early_hostname(char * arg)205a704629SDan Mouldingstatic int __init early_hostname(char *arg) 215a704629SDan Moulding { 225a704629SDan Moulding size_t bufsize = sizeof(init_uts_ns.name.nodename); 235a704629SDan Moulding size_t maxlen = bufsize - 1; 245a704629SDan Moulding size_t arglen; 255a704629SDan Moulding 265a704629SDan Moulding arglen = strlcpy(init_uts_ns.name.nodename, arg, bufsize); 275a704629SDan Moulding if (arglen > maxlen) { 285a704629SDan Moulding pr_warn("hostname parameter exceeds %zd characters and will be truncated", 295a704629SDan Moulding maxlen); 305a704629SDan Moulding } 315a704629SDan Moulding return 0; 325a704629SDan Moulding } 335a704629SDan Moulding early_param("hostname", early_hostname); 345a704629SDan Moulding 353eb3c740SRoman Zippel const char linux_proc_banner[] = 363eb3c740SRoman Zippel "%s version %s" 373eb3c740SRoman Zippel " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")" 383eb3c740SRoman Zippel " (" LINUX_COMPILER ") %s\n"; 399afb719eSLaura Abbott 409afb719eSLaura Abbott BUILD_SALT; 411fdd7433SYonghong Song BUILD_LTO_INFO; 42*2df8220cSMasahiro Yamada 43*2df8220cSMasahiro Yamada /* 44*2df8220cSMasahiro Yamada * init_uts_ns and linux_banner contain the build version and timestamp, 45*2df8220cSMasahiro Yamada * which are really fixed at the very last step of build process. 46*2df8220cSMasahiro Yamada * They are compiled with __weak first, and without __weak later. 47*2df8220cSMasahiro Yamada */ 48*2df8220cSMasahiro Yamada 49*2df8220cSMasahiro Yamada struct uts_namespace init_uts_ns __weak; 50*2df8220cSMasahiro Yamada const char linux_banner[] __weak; 51*2df8220cSMasahiro Yamada 52*2df8220cSMasahiro Yamada #include "version-timestamp.c" 53*2df8220cSMasahiro Yamada 54*2df8220cSMasahiro Yamada EXPORT_SYMBOL_GPL(init_uts_ns); 55