xref: /openbmc/linux/init/version.c (revision 9edb4fd3)
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 Moulding static 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