Message ID | df1ce8c514c3efc1323d5ed69e6ecbdb2542b960.1695679700.git.falcon@tinylab.org (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | DCE/DSE: Add Dead Syscalls Elimination support, part1 | expand |
On Tue, Sep 26, 2023, at 00:38, Zhangjin Wu wrote: > When CONFIG_TRIM_UNUSED_SYSCALLS is enabled, get used syscalls from > CONFIG_USED_SYSCALLS. CONFIG_USED_SYSCALLS may be a list of used > syscalls or a file to store such a list. > > If CONFIG_USED_SYSCALLS is configured as a list of the used syscalls, > directly record them in a used_syscalls variable, if it is a file to > store the list, record the file name to the used_syscalls_file variable > and put its content to the used_syscalls variable. > > Signed-off-by: Zhangjin Wu <falcon@tinylab.org> I like the idea of configuring the set of syscalls more, but we should probably discuss the implementation of this here. You introduce two new ways of doing this, on top of the existing coarse-grained method (per syscall class Kconfig symbols). Both methods seem a little awkward to me, but are doable in principle if we can't come up with a better way. However, I'd much prefer to not add both the Kconfig symbol and the extra file here, since at least one of them is redundant. Do you have automatic tooling to generate these lists from a profile, or do you require manually writing them? Do you have an example list? Arnd
diff --git a/scripts/Makefile.syscalls b/scripts/Makefile.syscalls new file mode 100644 index 000000000000..5864d3a85996 --- /dev/null +++ b/scripts/Makefile.syscalls @@ -0,0 +1,29 @@ +# SPDX-License-Identifier: GPL-2.0 + +ifndef SCRIPTS_MAKEFILE_SYSCALLS + SCRIPTS_MAKEFILE_SYSCALLS = 1 + + ifdef CONFIG_TRIM_UNUSED_SYSCALLS + ifneq ($(wildcard $(CONFIG_USED_SYSCALLS)),) + used_syscalls_file = $(CONFIG_USED_SYSCALLS) + ifeq ($(shell test -s $(used_syscalls_file); echo $$?),0) + used_syscalls != cat $(CONFIG_USED_SYSCALLS) + endif + else + ifeq ($(subst /,,$(CONFIG_USED_SYSCALLS)),$(CONFIG_USED_SYSCALLS)) + used_syscalls = $(CONFIG_USED_SYSCALLS) + else + $(error No such file: $(CONFIG_USED_SYSCALLS)) + endif + endif + + ifneq ($(used_syscalls),) + used_syscalls := $(subst $(space),|,$(strip $(used_syscalls))) + endif + + used_syscalls_deps = $(used_syscalls_file) $(objtree)/.config + + export used_syscalls used_syscalls_deps + endif # CONFIG_TRIM_UNUSED_SYSCALLS + +endif # SCRIPTS_MAKEFILE_SYSCALLS
When CONFIG_TRIM_UNUSED_SYSCALLS is enabled, get used syscalls from CONFIG_USED_SYSCALLS. CONFIG_USED_SYSCALLS may be a list of used syscalls or a file to store such a list. If CONFIG_USED_SYSCALLS is configured as a list of the used syscalls, directly record them in a used_syscalls variable, if it is a file to store the list, record the file name to the used_syscalls_file variable and put its content to the used_syscalls variable. Signed-off-by: Zhangjin Wu <falcon@tinylab.org> --- scripts/Makefile.syscalls | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 scripts/Makefile.syscalls