1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * linux/init/version.c 4 * 5 * Copyright (C) 1992 Theodore Ts'o 6 * 7 * May be freely distributed as part of Linux. 8 */ 9 10#include <generated/compile.h> 11#include <linux/build-salt.h> 12#include <linux/elfnote-lto.h> 13#include <linux/export.h> 14#include <linux/init.h> 15#include <linux/printk.h> 16#include <linux/uts.h> 17#include <linux/utsname.h> 18#include <linux/proc_ns.h> 19 20static int __init early_hostname(char *arg) 21{ 22 size_t bufsize = sizeof(init_uts_ns.name.nodename); 23 size_t maxlen = bufsize - 1; 24 ssize_t arglen; 25 26 arglen = strscpy(init_uts_ns.name.nodename, arg, bufsize); 27 if (arglen < 0) { 28 pr_warn("hostname parameter exceeds %zd characters and will be truncated", 29 maxlen); 30 } 31 return 0; 32} 33early_param("hostname", early_hostname); 34 35const char linux_proc_banner[] = 36 "%s version %s" 37 " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")" 38 " (" LINUX_COMPILER ") %s\n"; 39 40BUILD_SALT; 41BUILD_LTO_INFO; 42 43/* 44 * init_uts_ns and linux_banner contain the build version and timestamp, 45 * which are really fixed at the very last step of build process. 46 * They are compiled with __weak first, and without __weak later. 47 */ 48 49struct uts_namespace init_uts_ns __weak; 50const char linux_banner[] __weak; 51 52#include "version-timestamp.c" 53 54EXPORT_SYMBOL_GPL(init_uts_ns); 55