Loading Documentation/driver-api/libata.rst +1 −1 Original line number Diff line number Diff line Loading @@ -250,7 +250,7 @@ High-level taskfile hooks :: void (*qc_prep) (struct ata_queued_cmd *qc); enum ata_completion_errors (*qc_prep) (struct ata_queued_cmd *qc); int (*qc_issue) (struct ata_queued_cmd *qc); Loading Documentation/kbuild/llvm.rst 0 → 100644 +87 −0 Original line number Diff line number Diff line ============================== Building Linux with Clang/LLVM ============================== This document covers how to build the Linux kernel with Clang and LLVM utilities. About ----- The Linux kernel has always traditionally been compiled with GNU toolchains such as GCC and binutils. Ongoing work has allowed for `Clang <https://clang.llvm.org/>`_ and `LLVM <https://llvm.org/>`_ utilities to be used as viable substitutes. Distributions such as `Android <https://www.android.com/>`_, `ChromeOS <https://www.chromium.org/chromium-os>`_, and `OpenMandriva <https://www.openmandriva.org/>`_ use Clang built kernels. `LLVM is a collection of toolchain components implemented in terms of C++ objects <https://www.aosabook.org/en/llvm.html>`_. Clang is a front-end to LLVM that supports C and the GNU C extensions required by the kernel, and is pronounced "klang," not "see-lang." Clang ----- The compiler used can be swapped out via `CC=` command line argument to `make`. `CC=` should be set when selecting a config and during a build. make CC=clang defconfig make CC=clang Cross Compiling --------------- A single Clang compiler binary will typically contain all supported backends, which can help simplify cross compiling. ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make CC=clang `CROSS_COMPILE` is not used to prefix the Clang compiler binary, instead `CROSS_COMPILE` is used to set a command line flag: `--target <triple>`. For example: clang --target aarch64-linux-gnu foo.c LLVM Utilities -------------- LLVM has substitutes for GNU binutils utilities. Kbuild supports `LLVM=1` to enable them. make LLVM=1 They can be enabled individually. The full list of the parameters: make CC=clang LD=ld.lld AR=llvm-ar NM=llvm-nm STRIP=llvm-strip \\ OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump OBJSIZE=llvm-size \\ READELF=llvm-readelf HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar \\ HOSTLD=ld.lld Currently, the integrated assembler is disabled by default. You can pass `LLVM_IAS=1` to enable it. Getting Help ------------ - `Website <https://clangbuiltlinux.github.io/>`_ - `Mailing List <https://groups.google.com/forum/#!forum/clang-built-linux>`_: <clang-built-linux@googlegroups.com> - `Issue Tracker <https://github.com/ClangBuiltLinux/linux/issues>`_ - IRC: #clangbuiltlinux on chat.freenode.net - `Telegram <https://t.me/ClangBuiltLinux>`_: @ClangBuiltLinux - `Wiki <https://github.com/ClangBuiltLinux/linux/wiki>`_ - `Beginner Bugs <https://github.com/ClangBuiltLinux/linux/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22>`_ Getting LLVM ------------- - http://releases.llvm.org/download.html - https://github.com/llvm/llvm-project - https://llvm.org/docs/GettingStarted.html - https://llvm.org/docs/CMake.html - https://apt.llvm.org/ - https://www.archlinux.org/packages/extra/x86_64/llvm/ - https://github.com/ClangBuiltLinux/tc-build - https://github.com/ClangBuiltLinux/linux/wiki/Building-Clang-from-source - https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/ MAINTAINERS +9 −0 Original line number Diff line number Diff line Loading @@ -3619,6 +3619,15 @@ M: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> S: Maintained F: .clang-format CLANG/LLVM BUILD SUPPORT L: clang-built-linux@googlegroups.com W: https://clangbuiltlinux.github.io/ B: https://github.com/ClangBuiltLinux/linux/issues C: irc://chat.freenode.net/clangbuiltlinux S: Supported K: \b(?i:clang|llvm)\b F: Documentation/kbuild/llvm.rst CLEANCACHE API M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> L: linux-kernel@vger.kernel.org Loading Makefile +29 −9 Original line number Diff line number Diff line # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 SUBLEVEL = 146 SUBLEVEL = 152 EXTRAVERSION = NAME = "People's Front" Loading Loading @@ -358,8 +358,13 @@ HOST_LFS_CFLAGS := $(shell getconf LFS_CFLAGS 2>/dev/null) HOST_LFS_LDFLAGS := $(shell getconf LFS_LDFLAGS 2>/dev/null) HOST_LFS_LIBS := $(shell getconf LFS_LIBS 2>/dev/null) ifneq ($(LLVM),) HOSTCC = clang HOSTCXX = clang++ else HOSTCC = gcc HOSTCXX = g++ endif KBUILD_HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 \ -fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS) \ $(HOSTCFLAGS) Loading @@ -368,15 +373,28 @@ KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS) KBUILD_HOSTLDLIBS := $(HOST_LFS_LIBS) $(HOSTLDLIBS) # Make variables (CC, etc...) AS = $(CROSS_COMPILE)as LD = $(CROSS_COMPILE)ld REAL_CC = $(CROSS_COMPILE)gcc CPP = $(CC) -E ifneq ($(LLVM),) CC = clang LD = ld.lld AR = llvm-ar NM = llvm-nm OBJCOPY = llvm-objcopy OBJDUMP = llvm-objdump READELF = llvm-readelf OBJSIZE = llvm-size STRIP = llvm-strip else REAL_CC = $(CROSS_COMPILE)gcc LD = $(CROSS_COMPILE)ld AR = $(CROSS_COMPILE)ar NM = $(CROSS_COMPILE)nm STRIP = $(CROSS_COMPILE)strip OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump READELF = $(CROSS_COMPILE)readelf OBJSIZE = $(CROSS_COMPILE)size STRIP = $(CROSS_COMPILE)strip endif LEX = flex YACC = bison AWK = awk Loading Loading @@ -436,8 +454,8 @@ KBUILD_LDFLAGS := GCC_PLUGINS_CFLAGS := CLANG_FLAGS := export ARCH SRCARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC export CPP AR NM STRIP OBJCOPY OBJDUMP KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS export ARCH SRCARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE READELF KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS export MAKE LEX YACC AWK GENKSYMS INSTALLKERNEL PERL PYTHON PYTHON2 PYTHON3 UTS_MACHINE export HOSTCXX KBUILD_HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS Loading Loading @@ -499,7 +517,9 @@ endif ifneq ($(GCC_TOOLCHAIN),) CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN) endif ifneq ($(LLVM_IAS),1) CLANG_FLAGS += -no-integrated-as endif CLANG_FLAGS += $(call cc-option, -Wno-misleading-indentation) CLANG_FLAGS += $(call cc-option, -Wno-bool-operation) CLANG_FLAGS += -Werror=unknown-warning-option Loading android/abi_gki_aarch64 +1 −1 Original line number Diff line number Diff line [abi_whitelist] [abi_symbol_list] # commonly used symbols __cfi_slowpath __const_udelay Loading Loading
Documentation/driver-api/libata.rst +1 −1 Original line number Diff line number Diff line Loading @@ -250,7 +250,7 @@ High-level taskfile hooks :: void (*qc_prep) (struct ata_queued_cmd *qc); enum ata_completion_errors (*qc_prep) (struct ata_queued_cmd *qc); int (*qc_issue) (struct ata_queued_cmd *qc); Loading
Documentation/kbuild/llvm.rst 0 → 100644 +87 −0 Original line number Diff line number Diff line ============================== Building Linux with Clang/LLVM ============================== This document covers how to build the Linux kernel with Clang and LLVM utilities. About ----- The Linux kernel has always traditionally been compiled with GNU toolchains such as GCC and binutils. Ongoing work has allowed for `Clang <https://clang.llvm.org/>`_ and `LLVM <https://llvm.org/>`_ utilities to be used as viable substitutes. Distributions such as `Android <https://www.android.com/>`_, `ChromeOS <https://www.chromium.org/chromium-os>`_, and `OpenMandriva <https://www.openmandriva.org/>`_ use Clang built kernels. `LLVM is a collection of toolchain components implemented in terms of C++ objects <https://www.aosabook.org/en/llvm.html>`_. Clang is a front-end to LLVM that supports C and the GNU C extensions required by the kernel, and is pronounced "klang," not "see-lang." Clang ----- The compiler used can be swapped out via `CC=` command line argument to `make`. `CC=` should be set when selecting a config and during a build. make CC=clang defconfig make CC=clang Cross Compiling --------------- A single Clang compiler binary will typically contain all supported backends, which can help simplify cross compiling. ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make CC=clang `CROSS_COMPILE` is not used to prefix the Clang compiler binary, instead `CROSS_COMPILE` is used to set a command line flag: `--target <triple>`. For example: clang --target aarch64-linux-gnu foo.c LLVM Utilities -------------- LLVM has substitutes for GNU binutils utilities. Kbuild supports `LLVM=1` to enable them. make LLVM=1 They can be enabled individually. The full list of the parameters: make CC=clang LD=ld.lld AR=llvm-ar NM=llvm-nm STRIP=llvm-strip \\ OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump OBJSIZE=llvm-size \\ READELF=llvm-readelf HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar \\ HOSTLD=ld.lld Currently, the integrated assembler is disabled by default. You can pass `LLVM_IAS=1` to enable it. Getting Help ------------ - `Website <https://clangbuiltlinux.github.io/>`_ - `Mailing List <https://groups.google.com/forum/#!forum/clang-built-linux>`_: <clang-built-linux@googlegroups.com> - `Issue Tracker <https://github.com/ClangBuiltLinux/linux/issues>`_ - IRC: #clangbuiltlinux on chat.freenode.net - `Telegram <https://t.me/ClangBuiltLinux>`_: @ClangBuiltLinux - `Wiki <https://github.com/ClangBuiltLinux/linux/wiki>`_ - `Beginner Bugs <https://github.com/ClangBuiltLinux/linux/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22>`_ Getting LLVM ------------- - http://releases.llvm.org/download.html - https://github.com/llvm/llvm-project - https://llvm.org/docs/GettingStarted.html - https://llvm.org/docs/CMake.html - https://apt.llvm.org/ - https://www.archlinux.org/packages/extra/x86_64/llvm/ - https://github.com/ClangBuiltLinux/tc-build - https://github.com/ClangBuiltLinux/linux/wiki/Building-Clang-from-source - https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/
MAINTAINERS +9 −0 Original line number Diff line number Diff line Loading @@ -3619,6 +3619,15 @@ M: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> S: Maintained F: .clang-format CLANG/LLVM BUILD SUPPORT L: clang-built-linux@googlegroups.com W: https://clangbuiltlinux.github.io/ B: https://github.com/ClangBuiltLinux/linux/issues C: irc://chat.freenode.net/clangbuiltlinux S: Supported K: \b(?i:clang|llvm)\b F: Documentation/kbuild/llvm.rst CLEANCACHE API M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> L: linux-kernel@vger.kernel.org Loading
Makefile +29 −9 Original line number Diff line number Diff line # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 SUBLEVEL = 146 SUBLEVEL = 152 EXTRAVERSION = NAME = "People's Front" Loading Loading @@ -358,8 +358,13 @@ HOST_LFS_CFLAGS := $(shell getconf LFS_CFLAGS 2>/dev/null) HOST_LFS_LDFLAGS := $(shell getconf LFS_LDFLAGS 2>/dev/null) HOST_LFS_LIBS := $(shell getconf LFS_LIBS 2>/dev/null) ifneq ($(LLVM),) HOSTCC = clang HOSTCXX = clang++ else HOSTCC = gcc HOSTCXX = g++ endif KBUILD_HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 \ -fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS) \ $(HOSTCFLAGS) Loading @@ -368,15 +373,28 @@ KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS) KBUILD_HOSTLDLIBS := $(HOST_LFS_LIBS) $(HOSTLDLIBS) # Make variables (CC, etc...) AS = $(CROSS_COMPILE)as LD = $(CROSS_COMPILE)ld REAL_CC = $(CROSS_COMPILE)gcc CPP = $(CC) -E ifneq ($(LLVM),) CC = clang LD = ld.lld AR = llvm-ar NM = llvm-nm OBJCOPY = llvm-objcopy OBJDUMP = llvm-objdump READELF = llvm-readelf OBJSIZE = llvm-size STRIP = llvm-strip else REAL_CC = $(CROSS_COMPILE)gcc LD = $(CROSS_COMPILE)ld AR = $(CROSS_COMPILE)ar NM = $(CROSS_COMPILE)nm STRIP = $(CROSS_COMPILE)strip OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump READELF = $(CROSS_COMPILE)readelf OBJSIZE = $(CROSS_COMPILE)size STRIP = $(CROSS_COMPILE)strip endif LEX = flex YACC = bison AWK = awk Loading Loading @@ -436,8 +454,8 @@ KBUILD_LDFLAGS := GCC_PLUGINS_CFLAGS := CLANG_FLAGS := export ARCH SRCARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC export CPP AR NM STRIP OBJCOPY OBJDUMP KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS export ARCH SRCARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE READELF KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS export MAKE LEX YACC AWK GENKSYMS INSTALLKERNEL PERL PYTHON PYTHON2 PYTHON3 UTS_MACHINE export HOSTCXX KBUILD_HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS Loading Loading @@ -499,7 +517,9 @@ endif ifneq ($(GCC_TOOLCHAIN),) CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN) endif ifneq ($(LLVM_IAS),1) CLANG_FLAGS += -no-integrated-as endif CLANG_FLAGS += $(call cc-option, -Wno-misleading-indentation) CLANG_FLAGS += $(call cc-option, -Wno-bool-operation) CLANG_FLAGS += -Werror=unknown-warning-option Loading
android/abi_gki_aarch64 +1 −1 Original line number Diff line number Diff line [abi_whitelist] [abi_symbol_list] # commonly used symbols __cfi_slowpath __const_udelay Loading