From nobody Mon Nov 22 22:37:58 2021 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AD1871893289; Mon, 22 Nov 2021 22:38:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4HyhxN2Yzhz4YQX; Mon, 22 Nov 2021 22:37:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6FBDF300C; Mon, 22 Nov 2021 22:37:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 1AMMbw0F047472; Mon, 22 Nov 2021 22:37:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1AMMbw8X047471; Mon, 22 Nov 2021 22:37:58 GMT (envelope-from git) Date: Mon, 22 Nov 2021 22:37:58 GMT Message-Id: <202111222237.1AMMbw8X047471@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: 5e7093118478 - main - makesyscalls: allow config to force OBSOL and UNIMPL List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5e709311847834a2f69662550cbe771f28831270 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=5e709311847834a2f69662550cbe771f28831270 commit 5e709311847834a2f69662550cbe771f28831270 Author: Brooks Davis AuthorDate: 2021-11-22 22:36:57 +0000 Commit: Brooks Davis CommitDate: 2021-11-22 22:36:57 +0000 makesyscalls: allow config to force OBSOL and UNIMPL The obsol and unimpl config variables are space-seperated lists of syscalls that should treated as being declared OBSOL and UNIMPL. The allows an ABI to exclude select system calls listed in syscalls.master. Reviewed by: kevans --- sys/tools/makesyscalls.lua | 53 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/sys/tools/makesyscalls.lua b/sys/tools/makesyscalls.lua index 1e66a6b319f3..78f0e2e906e9 100644 --- a/sys/tools/makesyscalls.lua +++ b/sys/tools/makesyscalls.lua @@ -68,6 +68,10 @@ local config = { abi_semid_t = "semid_t", abi_ptr_array_t = "", ptr_intptr_t_cast = "intptr_t", + obsol = "", + obsol_dict = {}, + unimpl = "", + unimpl_dict = {}, } local config_modified = {} @@ -373,6 +377,20 @@ local function process_abi_flags() config["abi_flags_mask"] = mask end +local function process_obsol() + local obsol = config["obsol"] + for syscall in obsol:gmatch("([^ ]+)") do + config["obsol_dict"][syscall] = true + end +end + +local function process_unimpl() + local unimpl = config["unimpl"] + for syscall in unimpl:gmatch("([^ ]+)") do + config["unimpl_dict"][syscall] = true + end +end + local function abi_changes(name) if known_abi_flags[name] == nil then abort(1, "abi_changes: unknown flag: " .. name) @@ -1134,6 +1152,24 @@ process_syscall_def = function(line) funcname = trim(funcname) + if config["obsol_dict"][funcname] then + local compat_prefix = "" + for _, v in pairs(compat_options) do + if flags & v["mask"] ~= 0 then + compat_prefix = v["prefix"] + goto obsol_compat_done + end + end + ::obsol_compat_done:: + args = nil + flags = known_flags['OBSOL'] + funcomment = compat_prefix .. funcname + end + if config["unimpl_dict"][funcname] then + flags = known_flags['UNIMPL'] + funcomment = funcname + end + sysflags = "0" -- NODEF events do not get audited @@ -1192,8 +1228,13 @@ process_syscall_def = function(line) local ncompatflags = get_mask({"STD", "NODEF", "NOARGS", "NOPROTO", "NOSTD"}) local compatflags = get_mask_pat("COMPAT.*") - -- Now try compat... - if flags & compatflags ~= 0 then + if flags & known_flags["OBSOL"] ~= 0 then + handle_obsol(sysnum, funcname, funcomment) + elseif flags & known_flags["RESERVED"] ~= 0 then + handle_reserved(sysnum, sysstart, sysend) + elseif flags & known_flags["UNIMPL"] ~= 0 then + handle_unimpl(sysnum, sysstart, sysend, funcomment) + elseif flags & compatflags ~= 0 then if flags & known_flags['STD'] ~= 0 then abort(1, "Incompatible COMPAT/STD: " .. line) end @@ -1203,12 +1244,6 @@ process_syscall_def = function(line) handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype, auditev, syscallret, funcname, funcalias, funcargs, argalias) - elseif flags & known_flags["OBSOL"] ~= 0 then - handle_obsol(sysnum, funcname, funcomment) - elseif flags & known_flags["RESERVED"] ~= 0 then - handle_reserved(sysnum, sysstart, sysend) - elseif flags & known_flags["UNIMPL"] ~= 0 then - handle_unimpl(sysnum, sysstart, sysend, funcomment) else abort(1, "Bad flags? " .. line) end @@ -1257,6 +1292,8 @@ elseif config["capenabled"] ~= "" then end process_compat() process_abi_flags() +process_obsol() +process_unimpl() if not lfs.mkdir(tmpspace) then error("Failed to create tempdir " .. tmpspace)