mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge branch 'kbuild-for-next' of https://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux.git
This commit is contained in:
@@ -164,6 +164,11 @@ applicable everywhere (see syntax).
|
||||
That will limit the usefulness but on the other hand avoid
|
||||
the illegal configurations all over.
|
||||
|
||||
select should also not be used on the member options of a choice.
|
||||
Selecting a choice option will do nothing (dead code). Instead,
|
||||
consider making these a dependency, or using the defaults of the
|
||||
choice to enable the member option when it's needed.
|
||||
|
||||
If "select" <symbol> is followed by "if" <expr>, <symbol> will be
|
||||
selected by the logical AND of the value of the current menu symbol
|
||||
and <expr>. This means, the lower limit can be downgraded due to the
|
||||
|
||||
@@ -1225,6 +1225,12 @@ KBUILD_RUSTFLAGS += $(KRUSTFLAGS)
|
||||
KBUILD_LDFLAGS_MODULE += --build-id=sha1
|
||||
LDFLAGS_vmlinux += --build-id=sha1
|
||||
|
||||
# Specific code, such as outlined KASAN checks, may be placed in
|
||||
# COMDAT-deduplicated sections. Use --force-group-allocation to resolve these
|
||||
# groups when linking modules. The option is available from ld.bfd 2.29 and
|
||||
# ld.lld 19.1.0.
|
||||
KBUILD_LDFLAGS_MODULE += $(call ld-option,--force-group-allocation)
|
||||
|
||||
KBUILD_LDFLAGS += -z noexecstack
|
||||
ifeq ($(CONFIG_LD_IS_BFD),y)
|
||||
KBUILD_LDFLAGS += $(call ld-option,--no-warn-rwx-segments)
|
||||
|
||||
@@ -4,19 +4,6 @@ SECTIONS {
|
||||
.text.ftrace_trampoline 0 : { BYTE(0) }
|
||||
.init.text.ftrace_trampoline 0 : { BYTE(0) }
|
||||
|
||||
#ifdef CONFIG_KASAN_SW_TAGS
|
||||
/*
|
||||
* Outlined checks go into comdat-deduplicated sections named .text.hot.
|
||||
* Because they are in comdats they are not combined by the linker and
|
||||
* we otherwise end up with multiple sections with the same .text.hot
|
||||
* name in the .ko file. The kernel module loader warns if it sees
|
||||
* multiple sections with the same name so we use this sections
|
||||
* directive to force them into a single section and silence the
|
||||
* warning.
|
||||
*/
|
||||
.text.hot 0 : { *(.text.hot) }
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_UNWIND_TABLES
|
||||
/*
|
||||
* Currently, we only use unwind info at module load time, so we can
|
||||
|
||||
@@ -28,6 +28,7 @@ ldflags-y :=
|
||||
|
||||
subdir-asflags-y :=
|
||||
subdir-ccflags-y :=
|
||||
subdir-rustflags-y :=
|
||||
|
||||
# Read auto.conf if it exists, otherwise ignore
|
||||
-include $(objtree)/include/config/auto.conf
|
||||
@@ -159,10 +160,10 @@ targets += $(targets-for-builtin) $(targets-for-modules)
|
||||
|
||||
# Linus' kernel sanity checking tool
|
||||
ifeq ($(KBUILD_CHECKSRC),1)
|
||||
quiet_cmd_checksrc = CHECK $<
|
||||
quiet_cmd_checksrc = CHECK $(patsubst $(srctree)/%,%,$<)
|
||||
cmd_checksrc = $(CHECK) $(CHECKFLAGS) $(c_flags) $<
|
||||
else ifeq ($(KBUILD_CHECKSRC),2)
|
||||
quiet_cmd_force_checksrc = CHECK $<
|
||||
quiet_cmd_force_checksrc = CHECK $(patsubst $(srctree)/%,%,$<)
|
||||
cmd_force_checksrc = $(CHECK) $(CHECKFLAGS) $(c_flags) $<
|
||||
endif
|
||||
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
* gcc produces a very nice and correct list of dependencies which
|
||||
* tells make when to remake a file.
|
||||
*
|
||||
* To use this list as-is however has the drawback that virtually
|
||||
* However, to use this list as-is has the drawback that virtually
|
||||
* every file in the kernel includes autoconf.h.
|
||||
*
|
||||
* If the user re-runs make *config, autoconf.h will be
|
||||
* regenerated. make notices that and will rebuild every file which
|
||||
* includes autoconf.h, i.e. basically all files. This is extremely
|
||||
* annoying if the user just changed CONFIG_HIS_DRIVER from n to m.
|
||||
* annoying if the user just changed CONFIG_USER_DRIVER from n to m.
|
||||
*
|
||||
* So we play the same trick that "mkdep" played before. We replace
|
||||
* the dependency on autoconf.h by a dependency on every config
|
||||
@@ -33,9 +33,9 @@
|
||||
* which then let make pick up the changes and the files that use
|
||||
* the config symbols are rebuilt.
|
||||
*
|
||||
* So if the user changes his CONFIG_HIS_DRIVER option, only the objects
|
||||
* which depend on "include/config/HIS_DRIVER" will be rebuilt,
|
||||
* so most likely only his driver ;-)
|
||||
* So if the user changes their CONFIG_USER_DRIVER option, only the objects
|
||||
* which depend on "include/config/USER_DRIVER" will be rebuilt,
|
||||
* so most likely only the user's driver ;-)
|
||||
*
|
||||
* The idea above dates, by the way, back to Michael E Chastain, AFAIK.
|
||||
*
|
||||
|
||||
+24
-20
@@ -38,7 +38,7 @@ commands:
|
||||
|
||||
options:
|
||||
--file config-file .config file to change (default .config)
|
||||
--keep-case|-k Keep next symbols' case (dont' upper-case it)
|
||||
--keep-case|-k Keep next symbols' case (don't upper-case it)
|
||||
|
||||
$myname doesn't check the validity of the .config file. This is done at next
|
||||
make time.
|
||||
@@ -71,48 +71,45 @@ txt_append() {
|
||||
local anchor="$1"
|
||||
local insert="$2"
|
||||
local infile="$3"
|
||||
local tmpfile="$infile.swp"
|
||||
|
||||
# sed append cmd: 'a\' + newline + text + newline
|
||||
cmd="$(printf "a\\%b$insert" "\n")"
|
||||
|
||||
sed -e "/$anchor/$cmd" "$infile" >"$tmpfile"
|
||||
# replace original file with the edited one
|
||||
mv "$tmpfile" "$infile"
|
||||
# We don't really need a backup file, but in-place editing with backup
|
||||
# skipped is not portable due to different implementations parsing
|
||||
# arguments in incompatible manners.
|
||||
# Create a backup file anyway to ensure portability. The file will be
|
||||
# deleted on exit.
|
||||
sed -E -i.swp -e "/$anchor/$cmd" "$infile"
|
||||
SED_EDITED=1
|
||||
}
|
||||
|
||||
txt_subst() {
|
||||
local before="$1"
|
||||
local after="$2"
|
||||
local infile="$3"
|
||||
local tmpfile="$infile.swp"
|
||||
|
||||
sed -e "s$SED_DELIM$before$SED_DELIM$after$SED_DELIM" "$infile" >"$tmpfile"
|
||||
# replace original file with the edited one
|
||||
mv "$tmpfile" "$infile"
|
||||
sed -E -i.swp -e "s$SED_DELIM$before$SED_DELIM$after$SED_DELIM" "$infile"
|
||||
SED_EDITED=1
|
||||
}
|
||||
|
||||
txt_delete() {
|
||||
local text="$1"
|
||||
local infile="$2"
|
||||
local tmpfile="$infile.swp"
|
||||
|
||||
sed -e "/$text/d" "$infile" >"$tmpfile"
|
||||
# replace original file with the edited one
|
||||
mv "$tmpfile" "$infile"
|
||||
sed -E -i.swp -e "/$text/d" "$infile"
|
||||
SED_EDITED=1
|
||||
}
|
||||
|
||||
set_var() {
|
||||
local name=$1 new=$2 before=$3
|
||||
|
||||
name_re="^($name=|# $name is not set)"
|
||||
name_re="^($name=.*|# $name is not set)"
|
||||
before_re="^($before=|# $before is not set)"
|
||||
if test -n "$before" && grep -Eq "$before_re" "$FN"; then
|
||||
txt_append "^$before=" "$new" "$FN"
|
||||
txt_append "^# $before is not set" "$new" "$FN"
|
||||
txt_append "$before_re" "$new" "$FN"
|
||||
elif grep -Eq "$name_re" "$FN"; then
|
||||
txt_subst "^$name=.*" "$new" "$FN"
|
||||
txt_subst "^# $name is not set" "$new" "$FN"
|
||||
txt_subst "$name_re" "$new" "$FN"
|
||||
else
|
||||
echo "$new" >>"$FN"
|
||||
fi
|
||||
@@ -121,10 +118,17 @@ set_var() {
|
||||
undef_var() {
|
||||
local name=$1
|
||||
|
||||
txt_delete "^$name=" "$FN"
|
||||
txt_delete "^# $name is not set" "$FN"
|
||||
txt_delete "^($name=|# $name is not set)" "$FN"
|
||||
}
|
||||
|
||||
SED_EDITED=0
|
||||
on_exit() {
|
||||
if [ "$SED_EDITED" -ge 1 ]; then
|
||||
rm -f "$FN.swp"
|
||||
fi
|
||||
}
|
||||
trap on_exit EXIT
|
||||
|
||||
FN=.config
|
||||
CMDS=()
|
||||
while [[ $# -gt 0 ]]; do
|
||||
|
||||
@@ -36,6 +36,7 @@ sed -E -e '
|
||||
s/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g
|
||||
s/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g
|
||||
s@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @
|
||||
s/__ASSEMBLY__/__ASSEMBLER__/g
|
||||
' $INFILE > $TMPFILE || exit 1
|
||||
|
||||
scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ $TMPFILE > $OUTFILE
|
||||
|
||||
@@ -348,6 +348,23 @@ static int conf_string(struct menu *menu)
|
||||
}
|
||||
if (def && sym_set_string_value(sym, def))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* A new int or hex symbol whose default fails validation
|
||||
* cannot be set from an empty answer. When standard input is
|
||||
* exhausted, as it is for a non-interactive oldconfig or
|
||||
* syncconfig, re-asking would loop forever and grow the output
|
||||
* until it exhausts memory. Stop with an error that names the
|
||||
* symbol instead. String symbols accept any text, and bool and
|
||||
* tristate symbols (conf_sym()) and choices (conf_choice())
|
||||
* accept the default on an empty line, so they are unaffected.
|
||||
*/
|
||||
if (feof(stdin)) {
|
||||
fprintf(stderr,
|
||||
"\nerror: no value for new symbol '%s' at end of input\n",
|
||||
sym->name);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ union expr_data {
|
||||
* struct expr - expression
|
||||
*
|
||||
* @node: link node for the hash table
|
||||
* @type: expressoin type
|
||||
* @type: expression type
|
||||
* @val: calculated tristate value
|
||||
* @val_is_valid: indicate whether the value is valid
|
||||
* @left: left node
|
||||
@@ -160,7 +160,7 @@ struct symbol {
|
||||
|
||||
#define SYMBOL_MAXLENGTH 256
|
||||
|
||||
/* A property represent the config options that can be associated
|
||||
/* A property represents the config options that can be associated
|
||||
* with a config "symbol".
|
||||
* Sample:
|
||||
* config FOO
|
||||
|
||||
@@ -122,7 +122,7 @@ fi
|
||||
|
||||
MERGE_LIST=$*
|
||||
|
||||
TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX)
|
||||
TMP_FILE=$(mktemp --tmpdir="$OUTPUT" .tmp.config.XXXXXXXXXX)
|
||||
|
||||
echo "Using $INITFILE as base"
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ is_enabled() {
|
||||
}
|
||||
|
||||
# Nice output in kbuild format
|
||||
# Will be supressed by "make -s"
|
||||
# Will be suppressed by "make -s"
|
||||
info()
|
||||
{
|
||||
printf " %-7s %s\n" "${1}" "${2}"
|
||||
|
||||
@@ -1591,14 +1591,14 @@ static void read_symbols(const char *modname)
|
||||
struct elf_info info = { };
|
||||
Elf_Sym *sym;
|
||||
|
||||
if (!parse_elf(&info, modname))
|
||||
return;
|
||||
|
||||
if (!strends(modname, ".o")) {
|
||||
error("%s: filename must be suffixed with .o\n", modname);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!parse_elf(&info, modname))
|
||||
return;
|
||||
|
||||
/* strip trailing .o */
|
||||
mod = new_module(modname, strlen(modname) - strlen(".o"));
|
||||
|
||||
|
||||
+32
-10
@@ -46,13 +46,31 @@ elif [ "${ALLSOURCE_ARCHS}" = "all" ]; then
|
||||
ALLSOURCE_ARCHS=$(find ${tree}arch/ -mindepth 1 -maxdepth 1 -type d -printf '%f ')
|
||||
fi
|
||||
|
||||
setup_name_pattern()
|
||||
{
|
||||
pattern=()
|
||||
for ext; do
|
||||
if [ ${#pattern[@]} -gt 0 ]; then
|
||||
pattern+=("-o" "-name" "$ext")
|
||||
else
|
||||
pattern+=("(" "-name" "$ext")
|
||||
fi
|
||||
done
|
||||
if [ ${#pattern[@]} -gt 0 ]; then
|
||||
pattern+=(")")
|
||||
fi
|
||||
}
|
||||
|
||||
# find sources in arch/$1
|
||||
find_arch_sources()
|
||||
{
|
||||
for i in $archincludedir; do
|
||||
local prune="$prune ( -path $i ) -prune -o"
|
||||
done
|
||||
find ${tree}arch/$1 $ignore $prune -name "$2" -not -type l -print;
|
||||
local src=${tree}arch/$1
|
||||
shift
|
||||
setup_name_pattern "$@"
|
||||
find $src $ignore $prune "${pattern[@]}" -not -type l -print;
|
||||
}
|
||||
|
||||
# find sources in arch/$1/include
|
||||
@@ -61,14 +79,17 @@ find_arch_include_sources()
|
||||
local include=$(find ${tree}arch/$1/ -name include -type d -print);
|
||||
if [ -n "$include" ]; then
|
||||
archincludedir="$archincludedir $include"
|
||||
find $include $ignore -name "$2" -not -type l -print;
|
||||
shift
|
||||
setup_name_pattern "$@"
|
||||
find $include $ignore "${pattern[@]}" -not -type l -print;
|
||||
fi
|
||||
}
|
||||
|
||||
# find sources in include/
|
||||
find_include_sources()
|
||||
{
|
||||
find ${tree}include $ignore -name config -prune -o -name "$1" \
|
||||
setup_name_pattern "$@"
|
||||
find ${tree}include $ignore -name config -prune -o "${pattern[@]}" \
|
||||
-not -type l -print;
|
||||
}
|
||||
|
||||
@@ -76,23 +97,24 @@ find_include_sources()
|
||||
# we could benefit from a list of dirs to search in here
|
||||
find_other_sources()
|
||||
{
|
||||
setup_name_pattern "$@"
|
||||
find ${tree}* $ignore \
|
||||
\( -path ${tree}include -o -path ${tree}arch -o -name '.tmp_*' \) -prune -o \
|
||||
-name "$1" -not -type l -print;
|
||||
"${pattern[@]}" -not -type l -print;
|
||||
}
|
||||
|
||||
all_sources()
|
||||
{
|
||||
find_arch_include_sources ${SRCARCH} '*.[chS]'
|
||||
find_arch_include_sources ${SRCARCH} '*.[chS]' '*.rs'
|
||||
if [ -n "$archinclude" ]; then
|
||||
find_arch_include_sources $archinclude '*.[chS]'
|
||||
find_arch_include_sources $archinclude '*.[chS]' '*.rs'
|
||||
fi
|
||||
find_include_sources '*.[chS]'
|
||||
find_include_sources '*.[chS]' '*.rs'
|
||||
for arch in $ALLSOURCE_ARCHS
|
||||
do
|
||||
find_arch_sources $arch '*.[chS]'
|
||||
find_arch_sources $arch '*.[chS]' '*.rs'
|
||||
done
|
||||
find_other_sources '*.[chS]'
|
||||
find_other_sources '*.[chS]' '*.rs'
|
||||
}
|
||||
|
||||
all_compiled_sources()
|
||||
@@ -100,7 +122,7 @@ all_compiled_sources()
|
||||
{
|
||||
echo include/generated/autoconf.h
|
||||
find $ignore -name "*.cmd" -exec \
|
||||
grep -Poh '(?<=^ )\S+|(?<== )\S+[^\\](?=$)' {} \+ |
|
||||
grep -Poh '(?<=^ )\S+\.([chS]|rs)(?=\s)|(?<== )\S+\.(?1)(?=$)' {} \+ |
|
||||
awk '!a[$0]++'
|
||||
} | xargs realpath -esq $([ -z "$KBUILD_ABS_SRCTREE" ] && echo --relative-to=.) |
|
||||
sort -u
|
||||
|
||||
Reference in New Issue
Block a user