diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-06-30 16:05:30 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-06-30 16:05:30 -0400 |
commit | 22d3e0c36e10296da91e3bb8826592bacfbf4b9c (patch) | |
tree | 6148e2c2d60a255c33fffaf13f8eb48a42288445 | |
parent | 0fbc4aeabc91f2e39e0dffebe8f81a0eb3648d97 (diff) | |
parent | 73d1c580f92b203f4c3a189ee98c917c65712f7e (diff) |
Merge tag 'kbuild-fixes-v4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild
Pull Kbuild fixes from Masahiro Yamada:
- introduce __diag_* macros and suppress -Wattribute-alias warnings
from GCC 8
- fix stack protector test script for x86_64
- fix line number handling in Kconfig
- document that '#' starts a comment in Kconfig
- handle P_SYMBOL property in dump debugging of Kconfig
- correct help message of LD_DEAD_CODE_DATA_ELIMINATION
- fix occasional segmentation faults in Kconfig
* tag 'kbuild-fixes-v4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
kconfig: loop boundary condition fix
kbuild: reword help of LD_DEAD_CODE_DATA_ELIMINATION
kconfig: handle P_SYMBOL in print_symbol()
kconfig: document Kconfig source file comments
kconfig: fix line numbers for if-entries in menu tree
stack-protector: Fix test with 32-bit userland and CONFIG_64BIT=y
powerpc: Remove -Wattribute-alias pragmas
disable -Wattribute-alias warning for SYSCALL_DEFINEx()
kbuild: add macro for controlling warnings to linux/compiler.h
-rw-r--r-- | Documentation/kbuild/kconfig-language.txt | 6 | ||||
-rw-r--r-- | arch/powerpc/kernel/pci_32.c | 4 | ||||
-rw-r--r-- | arch/powerpc/kernel/pci_64.c | 4 | ||||
-rw-r--r-- | arch/powerpc/kernel/rtas.c | 4 | ||||
-rw-r--r-- | arch/powerpc/kernel/signal_32.c | 8 | ||||
-rw-r--r-- | arch/powerpc/kernel/signal_64.c | 4 | ||||
-rw-r--r-- | arch/powerpc/kernel/syscalls.c | 4 | ||||
-rw-r--r-- | arch/powerpc/mm/subpage-prot.c | 4 | ||||
-rw-r--r-- | include/linux/compat.h | 8 | ||||
-rw-r--r-- | include/linux/compiler-gcc.h | 25 | ||||
-rw-r--r-- | include/linux/compiler_types.h | 18 | ||||
-rw-r--r-- | include/linux/syscalls.h | 4 | ||||
-rw-r--r-- | init/Kconfig | 7 | ||||
-rwxr-xr-x | scripts/gcc-x86_64-has-stack-protector.sh | 2 | ||||
-rw-r--r-- | scripts/kconfig/expr.h | 3 | ||||
-rw-r--r-- | scripts/kconfig/preprocess.c | 2 | ||||
-rw-r--r-- | scripts/kconfig/zconf.y | 8 |
17 files changed, 74 insertions, 41 deletions
diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt index 3534a84d206c..64e0775a62d4 100644 --- a/Documentation/kbuild/kconfig-language.txt +++ b/Documentation/kbuild/kconfig-language.txt | |||
@@ -430,6 +430,12 @@ This sets the config program's title bar if the config program chooses | |||
430 | to use it. It should be placed at the top of the configuration, before any | 430 | to use it. It should be placed at the top of the configuration, before any |
431 | other statement. | 431 | other statement. |
432 | 432 | ||
433 | '#' Kconfig source file comment: | ||
434 | |||
435 | An unquoted '#' character anywhere in a source file line indicates | ||
436 | the beginning of a source file comment. The remainder of that line | ||
437 | is a comment. | ||
438 | |||
433 | 439 | ||
434 | Kconfig hints | 440 | Kconfig hints |
435 | ------------- | 441 | ------------- |
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c index 4f861055a852..d63b488d34d7 100644 --- a/arch/powerpc/kernel/pci_32.c +++ b/arch/powerpc/kernel/pci_32.c | |||
@@ -285,9 +285,6 @@ pci_bus_to_hose(int bus) | |||
285 | * Note that the returned IO or memory base is a physical address | 285 | * Note that the returned IO or memory base is a physical address |
286 | */ | 286 | */ |
287 | 287 | ||
288 | #pragma GCC diagnostic push | ||
289 | #pragma GCC diagnostic ignored "-Wpragmas" | ||
290 | #pragma GCC diagnostic ignored "-Wattribute-alias" | ||
291 | SYSCALL_DEFINE3(pciconfig_iobase, long, which, | 288 | SYSCALL_DEFINE3(pciconfig_iobase, long, which, |
292 | unsigned long, bus, unsigned long, devfn) | 289 | unsigned long, bus, unsigned long, devfn) |
293 | { | 290 | { |
@@ -313,4 +310,3 @@ SYSCALL_DEFINE3(pciconfig_iobase, long, which, | |||
313 | 310 | ||
314 | return result; | 311 | return result; |
315 | } | 312 | } |
316 | #pragma GCC diagnostic pop | ||
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c index 812171c09f42..dff28f903512 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c | |||
@@ -203,9 +203,6 @@ void pcibios_setup_phb_io_space(struct pci_controller *hose) | |||
203 | #define IOBASE_ISA_IO 3 | 203 | #define IOBASE_ISA_IO 3 |
204 | #define IOBASE_ISA_MEM 4 | 204 | #define IOBASE_ISA_MEM 4 |
205 | 205 | ||
206 | #pragma GCC diagnostic push | ||
207 | #pragma GCC diagnostic ignored "-Wpragmas" | ||
208 | #pragma GCC diagnostic ignored "-Wattribute-alias" | ||
209 | SYSCALL_DEFINE3(pciconfig_iobase, long, which, unsigned long, in_bus, | 206 | SYSCALL_DEFINE3(pciconfig_iobase, long, which, unsigned long, in_bus, |
210 | unsigned long, in_devfn) | 207 | unsigned long, in_devfn) |
211 | { | 208 | { |
@@ -259,7 +256,6 @@ SYSCALL_DEFINE3(pciconfig_iobase, long, which, unsigned long, in_bus, | |||
259 | 256 | ||
260 | return -EOPNOTSUPP; | 257 | return -EOPNOTSUPP; |
261 | } | 258 | } |
262 | #pragma GCC diagnostic pop | ||
263 | 259 | ||
264 | #ifdef CONFIG_NUMA | 260 | #ifdef CONFIG_NUMA |
265 | int pcibus_to_node(struct pci_bus *bus) | 261 | int pcibus_to_node(struct pci_bus *bus) |
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index 7fb9f83dcde8..8afd146bc9c7 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c | |||
@@ -1051,9 +1051,6 @@ struct pseries_errorlog *get_pseries_errorlog(struct rtas_error_log *log, | |||
1051 | } | 1051 | } |
1052 | 1052 | ||
1053 | /* We assume to be passed big endian arguments */ | 1053 | /* We assume to be passed big endian arguments */ |
1054 | #pragma GCC diagnostic push | ||
1055 | #pragma GCC diagnostic ignored "-Wpragmas" | ||
1056 | #pragma GCC diagnostic ignored "-Wattribute-alias" | ||
1057 | SYSCALL_DEFINE1(rtas, struct rtas_args __user *, uargs) | 1054 | SYSCALL_DEFINE1(rtas, struct rtas_args __user *, uargs) |
1058 | { | 1055 | { |
1059 | struct rtas_args args; | 1056 | struct rtas_args args; |
@@ -1140,7 +1137,6 @@ SYSCALL_DEFINE1(rtas, struct rtas_args __user *, uargs) | |||
1140 | 1137 | ||
1141 | return 0; | 1138 | return 0; |
1142 | } | 1139 | } |
1143 | #pragma GCC diagnostic pop | ||
1144 | 1140 | ||
1145 | /* | 1141 | /* |
1146 | * Call early during boot, before mem init, to retrieve the RTAS | 1142 | * Call early during boot, before mem init, to retrieve the RTAS |
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index 5eedbb282d42..e6474a45cef5 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c | |||
@@ -1038,9 +1038,6 @@ static int do_setcontext_tm(struct ucontext __user *ucp, | |||
1038 | } | 1038 | } |
1039 | #endif | 1039 | #endif |
1040 | 1040 | ||
1041 | #pragma GCC diagnostic push | ||
1042 | #pragma GCC diagnostic ignored "-Wpragmas" | ||
1043 | #pragma GCC diagnostic ignored "-Wattribute-alias" | ||
1044 | #ifdef CONFIG_PPC64 | 1041 | #ifdef CONFIG_PPC64 |
1045 | COMPAT_SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx, | 1042 | COMPAT_SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx, |
1046 | struct ucontext __user *, new_ctx, int, ctx_size) | 1043 | struct ucontext __user *, new_ctx, int, ctx_size) |
@@ -1134,7 +1131,6 @@ SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx, | |||
1134 | set_thread_flag(TIF_RESTOREALL); | 1131 | set_thread_flag(TIF_RESTOREALL); |
1135 | return 0; | 1132 | return 0; |
1136 | } | 1133 | } |
1137 | #pragma GCC diagnostic pop | ||
1138 | 1134 | ||
1139 | #ifdef CONFIG_PPC64 | 1135 | #ifdef CONFIG_PPC64 |
1140 | COMPAT_SYSCALL_DEFINE0(rt_sigreturn) | 1136 | COMPAT_SYSCALL_DEFINE0(rt_sigreturn) |
@@ -1231,9 +1227,6 @@ SYSCALL_DEFINE0(rt_sigreturn) | |||
1231 | return 0; | 1227 | return 0; |
1232 | } | 1228 | } |
1233 | 1229 | ||
1234 | #pragma GCC diagnostic push | ||
1235 | #pragma GCC diagnostic ignored "-Wpragmas" | ||
1236 | #pragma GCC diagnostic ignored "-Wattribute-alias" | ||
1237 | #ifdef CONFIG_PPC32 | 1230 | #ifdef CONFIG_PPC32 |
1238 | SYSCALL_DEFINE3(debug_setcontext, struct ucontext __user *, ctx, | 1231 | SYSCALL_DEFINE3(debug_setcontext, struct ucontext __user *, ctx, |
1239 | int, ndbg, struct sig_dbg_op __user *, dbg) | 1232 | int, ndbg, struct sig_dbg_op __user *, dbg) |
@@ -1337,7 +1330,6 @@ SYSCALL_DEFINE3(debug_setcontext, struct ucontext __user *, ctx, | |||
1337 | return 0; | 1330 | return 0; |
1338 | } | 1331 | } |
1339 | #endif | 1332 | #endif |
1340 | #pragma GCC diagnostic pop | ||
1341 | 1333 | ||
1342 | /* | 1334 | /* |
1343 | * OK, we're invoking a handler | 1335 | * OK, we're invoking a handler |
diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c index d42b60020389..83d51bf586c7 100644 --- a/arch/powerpc/kernel/signal_64.c +++ b/arch/powerpc/kernel/signal_64.c | |||
@@ -625,9 +625,6 @@ static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp) | |||
625 | /* | 625 | /* |
626 | * Handle {get,set,swap}_context operations | 626 | * Handle {get,set,swap}_context operations |
627 | */ | 627 | */ |
628 | #pragma GCC diagnostic push | ||
629 | #pragma GCC diagnostic ignored "-Wpragmas" | ||
630 | #pragma GCC diagnostic ignored "-Wattribute-alias" | ||
631 | SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx, | 628 | SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx, |
632 | struct ucontext __user *, new_ctx, long, ctx_size) | 629 | struct ucontext __user *, new_ctx, long, ctx_size) |
633 | { | 630 | { |
@@ -693,7 +690,6 @@ SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx, | |||
693 | set_thread_flag(TIF_RESTOREALL); | 690 | set_thread_flag(TIF_RESTOREALL); |
694 | return 0; | 691 | return 0; |
695 | } | 692 | } |
696 | #pragma GCC diagnostic pop | ||
697 | 693 | ||
698 | 694 | ||
699 | /* | 695 | /* |
diff --git a/arch/powerpc/kernel/syscalls.c b/arch/powerpc/kernel/syscalls.c index 083fa06962fd..466216506eb2 100644 --- a/arch/powerpc/kernel/syscalls.c +++ b/arch/powerpc/kernel/syscalls.c | |||
@@ -62,9 +62,6 @@ out: | |||
62 | return ret; | 62 | return ret; |
63 | } | 63 | } |
64 | 64 | ||
65 | #pragma GCC diagnostic push | ||
66 | #pragma GCC diagnostic ignored "-Wpragmas" | ||
67 | #pragma GCC diagnostic ignored "-Wattribute-alias" | ||
68 | SYSCALL_DEFINE6(mmap2, unsigned long, addr, size_t, len, | 65 | SYSCALL_DEFINE6(mmap2, unsigned long, addr, size_t, len, |
69 | unsigned long, prot, unsigned long, flags, | 66 | unsigned long, prot, unsigned long, flags, |
70 | unsigned long, fd, unsigned long, pgoff) | 67 | unsigned long, fd, unsigned long, pgoff) |
@@ -78,7 +75,6 @@ SYSCALL_DEFINE6(mmap, unsigned long, addr, size_t, len, | |||
78 | { | 75 | { |
79 | return do_mmap2(addr, len, prot, flags, fd, offset, PAGE_SHIFT); | 76 | return do_mmap2(addr, len, prot, flags, fd, offset, PAGE_SHIFT); |
80 | } | 77 | } |
81 | #pragma GCC diagnostic pop | ||
82 | 78 | ||
83 | #ifdef CONFIG_PPC32 | 79 | #ifdef CONFIG_PPC32 |
84 | /* | 80 | /* |
diff --git a/arch/powerpc/mm/subpage-prot.c b/arch/powerpc/mm/subpage-prot.c index 75cb646a79c3..9d16ee251fc0 100644 --- a/arch/powerpc/mm/subpage-prot.c +++ b/arch/powerpc/mm/subpage-prot.c | |||
@@ -186,9 +186,6 @@ static void subpage_mark_vma_nohuge(struct mm_struct *mm, unsigned long addr, | |||
186 | * in a 2-bit field won't allow writes to a page that is otherwise | 186 | * in a 2-bit field won't allow writes to a page that is otherwise |
187 | * write-protected. | 187 | * write-protected. |
188 | */ | 188 | */ |
189 | #pragma GCC diagnostic push | ||
190 | #pragma GCC diagnostic ignored "-Wpragmas" | ||
191 | #pragma GCC diagnostic ignored "-Wattribute-alias" | ||
192 | SYSCALL_DEFINE3(subpage_prot, unsigned long, addr, | 189 | SYSCALL_DEFINE3(subpage_prot, unsigned long, addr, |
193 | unsigned long, len, u32 __user *, map) | 190 | unsigned long, len, u32 __user *, map) |
194 | { | 191 | { |
@@ -272,4 +269,3 @@ SYSCALL_DEFINE3(subpage_prot, unsigned long, addr, | |||
272 | up_write(&mm->mmap_sem); | 269 | up_write(&mm->mmap_sem); |
273 | return err; | 270 | return err; |
274 | } | 271 | } |
275 | #pragma GCC diagnostic pop | ||
diff --git a/include/linux/compat.h b/include/linux/compat.h index b1a5562b3215..c68acc47da57 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
@@ -72,6 +72,9 @@ | |||
72 | */ | 72 | */ |
73 | #ifndef COMPAT_SYSCALL_DEFINEx | 73 | #ifndef COMPAT_SYSCALL_DEFINEx |
74 | #define COMPAT_SYSCALL_DEFINEx(x, name, ...) \ | 74 | #define COMPAT_SYSCALL_DEFINEx(x, name, ...) \ |
75 | __diag_push(); \ | ||
76 | __diag_ignore(GCC, 8, "-Wattribute-alias", \ | ||
77 | "Type aliasing is used to sanitize syscall arguments");\ | ||
75 | asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ | 78 | asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ |
76 | asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ | 79 | asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ |
77 | __attribute__((alias(__stringify(__se_compat_sys##name)))); \ | 80 | __attribute__((alias(__stringify(__se_compat_sys##name)))); \ |
@@ -80,8 +83,11 @@ | |||
80 | asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ | 83 | asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ |
81 | asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ | 84 | asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ |
82 | { \ | 85 | { \ |
83 | return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ | 86 | long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ |
87 | __MAP(x,__SC_TEST,__VA_ARGS__); \ | ||
88 | return ret; \ | ||
84 | } \ | 89 | } \ |
90 | __diag_pop(); \ | ||
85 | static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) | 91 | static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) |
86 | #endif /* COMPAT_SYSCALL_DEFINEx */ | 92 | #endif /* COMPAT_SYSCALL_DEFINEx */ |
87 | 93 | ||
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index f1a7492a5cc8..fd282c7d3e5e 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h | |||
@@ -347,3 +347,28 @@ | |||
347 | #if GCC_VERSION >= 50100 | 347 | #if GCC_VERSION >= 50100 |
348 | #define COMPILER_HAS_GENERIC_BUILTIN_OVERFLOW 1 | 348 | #define COMPILER_HAS_GENERIC_BUILTIN_OVERFLOW 1 |
349 | #endif | 349 | #endif |
350 | |||
351 | /* | ||
352 | * Turn individual warnings and errors on and off locally, depending | ||
353 | * on version. | ||
354 | */ | ||
355 | #define __diag_GCC(version, severity, s) \ | ||
356 | __diag_GCC_ ## version(__diag_GCC_ ## severity s) | ||
357 | |||
358 | /* Severity used in pragma directives */ | ||
359 | #define __diag_GCC_ignore ignored | ||
360 | #define __diag_GCC_warn warning | ||
361 | #define __diag_GCC_error error | ||
362 | |||
363 | /* Compilers before gcc-4.6 do not understand "#pragma GCC diagnostic push" */ | ||
364 | #if GCC_VERSION >= 40600 | ||
365 | #define __diag_str1(s) #s | ||
366 | #define __diag_str(s) __diag_str1(s) | ||
367 | #define __diag(s) _Pragma(__diag_str(GCC diagnostic s)) | ||
368 | #endif | ||
369 | |||
370 | #if GCC_VERSION >= 80000 | ||
371 | #define __diag_GCC_8(s) __diag(s) | ||
372 | #else | ||
373 | #define __diag_GCC_8(s) | ||
374 | #endif | ||
diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h index 6b79a9bba9a7..a8ba6b04152c 100644 --- a/include/linux/compiler_types.h +++ b/include/linux/compiler_types.h | |||
@@ -271,4 +271,22 @@ struct ftrace_likely_data { | |||
271 | # define __native_word(t) (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long)) | 271 | # define __native_word(t) (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long)) |
272 | #endif | 272 | #endif |
273 | 273 | ||
274 | #ifndef __diag | ||
275 | #define __diag(string) | ||
276 | #endif | ||
277 | |||
278 | #ifndef __diag_GCC | ||
279 | #define __diag_GCC(version, severity, string) | ||
280 | #endif | ||
281 | |||
282 | #define __diag_push() __diag(push) | ||
283 | #define __diag_pop() __diag(pop) | ||
284 | |||
285 | #define __diag_ignore(compiler, version, option, comment) \ | ||
286 | __diag_ ## compiler(version, ignore, option) | ||
287 | #define __diag_warn(compiler, version, option, comment) \ | ||
288 | __diag_ ## compiler(version, warn, option) | ||
289 | #define __diag_error(compiler, version, option, comment) \ | ||
290 | __diag_ ## compiler(version, error, option) | ||
291 | |||
274 | #endif /* __LINUX_COMPILER_TYPES_H */ | 292 | #endif /* __LINUX_COMPILER_TYPES_H */ |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 73810808cdf2..a368a68cb667 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -231,6 +231,9 @@ static inline int is_syscall_trace_event(struct trace_event_call *tp_event) | |||
231 | */ | 231 | */ |
232 | #ifndef __SYSCALL_DEFINEx | 232 | #ifndef __SYSCALL_DEFINEx |
233 | #define __SYSCALL_DEFINEx(x, name, ...) \ | 233 | #define __SYSCALL_DEFINEx(x, name, ...) \ |
234 | __diag_push(); \ | ||
235 | __diag_ignore(GCC, 8, "-Wattribute-alias", \ | ||
236 | "Type aliasing is used to sanitize syscall arguments");\ | ||
234 | asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ | 237 | asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ |
235 | __attribute__((alias(__stringify(__se_sys##name)))); \ | 238 | __attribute__((alias(__stringify(__se_sys##name)))); \ |
236 | ALLOW_ERROR_INJECTION(sys##name, ERRNO); \ | 239 | ALLOW_ERROR_INJECTION(sys##name, ERRNO); \ |
@@ -243,6 +246,7 @@ static inline int is_syscall_trace_event(struct trace_event_call *tp_event) | |||
243 | __PROTECT(x, ret,__MAP(x,__SC_ARGS,__VA_ARGS__)); \ | 246 | __PROTECT(x, ret,__MAP(x,__SC_ARGS,__VA_ARGS__)); \ |
244 | return ret; \ | 247 | return ret; \ |
245 | } \ | 248 | } \ |
249 | __diag_pop(); \ | ||
246 | static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) | 250 | static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) |
247 | #endif /* __SYSCALL_DEFINEx */ | 251 | #endif /* __SYSCALL_DEFINEx */ |
248 | 252 | ||
diff --git a/init/Kconfig b/init/Kconfig index fde3d09e8b27..041f3a022122 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -1051,10 +1051,9 @@ config LD_DEAD_CODE_DATA_ELIMINATION | |||
1051 | depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION | 1051 | depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION |
1052 | depends on EXPERT | 1052 | depends on EXPERT |
1053 | help | 1053 | help |
1054 | Select this if the architecture wants to do dead code and | 1054 | Enable this if you want to do dead code and data elimination with |
1055 | data elimination with the linker by compiling with | 1055 | the linker by compiling with -ffunction-sections -fdata-sections, |
1056 | -ffunction-sections -fdata-sections, and linking with | 1056 | and linking with --gc-sections. |
1057 | --gc-sections. | ||
1058 | 1057 | ||
1059 | This can reduce on disk and in-memory size of the kernel | 1058 | This can reduce on disk and in-memory size of the kernel |
1060 | code and static data, particularly for small configs and | 1059 | code and static data, particularly for small configs and |
diff --git a/scripts/gcc-x86_64-has-stack-protector.sh b/scripts/gcc-x86_64-has-stack-protector.sh index 3755af0cd9f7..75e4e22b986a 100755 --- a/scripts/gcc-x86_64-has-stack-protector.sh +++ b/scripts/gcc-x86_64-has-stack-protector.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | # SPDX-License-Identifier: GPL-2.0 | 2 | # SPDX-License-Identifier: GPL-2.0 |
3 | 3 | ||
4 | echo "int foo(void) { char X[200]; return 3; }" | $* -S -x c -c -O0 -mcmodel=kernel -fno-PIE -fstack-protector - -o - 2> /dev/null | grep -q "%gs" | 4 | echo "int foo(void) { char X[200]; return 3; }" | $* -S -x c -c -m64 -O0 -mcmodel=kernel -fno-PIE -fstack-protector - -o - 2> /dev/null | grep -q "%gs" |
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h index 94a383b21df6..f63b41b0dd49 100644 --- a/scripts/kconfig/expr.h +++ b/scripts/kconfig/expr.h | |||
@@ -171,6 +171,9 @@ struct symbol { | |||
171 | * config BAZ | 171 | * config BAZ |
172 | * int "BAZ Value" | 172 | * int "BAZ Value" |
173 | * range 1..255 | 173 | * range 1..255 |
174 | * | ||
175 | * Please, also check zconf.y:print_symbol() when modifying the | ||
176 | * list of property types! | ||
174 | */ | 177 | */ |
175 | enum prop_type { | 178 | enum prop_type { |
176 | P_UNKNOWN, | 179 | P_UNKNOWN, |
diff --git a/scripts/kconfig/preprocess.c b/scripts/kconfig/preprocess.c index 65da87fce907..5ca2df790d3c 100644 --- a/scripts/kconfig/preprocess.c +++ b/scripts/kconfig/preprocess.c | |||
@@ -156,7 +156,7 @@ static char *do_shell(int argc, char *argv[]) | |||
156 | nread--; | 156 | nread--; |
157 | 157 | ||
158 | /* remove trailing new lines */ | 158 | /* remove trailing new lines */ |
159 | while (buf[nread - 1] == '\n') | 159 | while (nread > 0 && buf[nread - 1] == '\n') |
160 | nread--; | 160 | nread--; |
161 | 161 | ||
162 | buf[nread] = 0; | 162 | buf[nread] = 0; |
diff --git a/scripts/kconfig/zconf.y b/scripts/kconfig/zconf.y index 6f9b0aa32a82..4b68272ebdb9 100644 --- a/scripts/kconfig/zconf.y +++ b/scripts/kconfig/zconf.y | |||
@@ -31,7 +31,7 @@ struct symbol *symbol_hash[SYMBOL_HASHSIZE]; | |||
31 | static struct menu *current_menu, *current_entry; | 31 | static struct menu *current_menu, *current_entry; |
32 | 32 | ||
33 | %} | 33 | %} |
34 | %expect 32 | 34 | %expect 31 |
35 | 35 | ||
36 | %union | 36 | %union |
37 | { | 37 | { |
@@ -337,7 +337,7 @@ choice_block: | |||
337 | 337 | ||
338 | /* if entry */ | 338 | /* if entry */ |
339 | 339 | ||
340 | if_entry: T_IF expr nl | 340 | if_entry: T_IF expr T_EOL |
341 | { | 341 | { |
342 | printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); | 342 | printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); |
343 | menu_add_entry(NULL); | 343 | menu_add_entry(NULL); |
@@ -717,6 +717,10 @@ static void print_symbol(FILE *out, struct menu *menu) | |||
717 | print_quoted_string(out, prop->text); | 717 | print_quoted_string(out, prop->text); |
718 | fputc('\n', out); | 718 | fputc('\n', out); |
719 | break; | 719 | break; |
720 | case P_SYMBOL: | ||
721 | fputs( " symbol ", out); | ||
722 | fprintf(out, "%s\n", prop->sym->name); | ||
723 | break; | ||
720 | default: | 724 | default: |
721 | fprintf(out, " unknown prop %d!\n", prop->type); | 725 | fprintf(out, " unknown prop %d!\n", prop->type); |
722 | break; | 726 | break; |