Kbuild updates for v4.12

- Improve Clang support
 
 - Clean up various Makefiles
 
 - Improve build log visibility (objtool, alpha, ia64)
 
 - Improve compiler flag evaluation for better build performance
 
 - Fix GCC version-dependent warning
 
 - Fix genksyms
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJZE6qLAAoJED2LAQed4NsGk8YP/R7ZajSruFRmathN+wO1GEUv
 +1cIJVpCv8OpM9fCSIuV3udAUUrH7Sj5IgHdg4P05/qmlgsG/4kUL5r9RyKdwjrA
 dWqp8KKh40/JAfYNlMcRGz3cB4csvhMhnzZgV0zMSM1BBPP/xu2bCXrD4f/TGFMg
 q04hHkmkesV0RUqOyPsCrKusxIsHhaGOmYUB285omGHO85IRItAW5CPh6sMhoJuQ
 x7d5ZaXKCUH2fHXVMaw7gXcg28loUfKVJcU+em/0YZxoNZ31y6brM5YY7buF4FoJ
 5RTXlvm12TUygY3fFCb3NURDSILHmL8Wk2wgFgYAC3NnXH1KJDOM4xxKXIVtTLGw
 d71/hAurlLLZzjwmdUSSrhD+1OjFRZ4a5TJK/o3xehKUzYmFB49bcSKwdQ4H0jnM
 m4iqNHw3rK+LJ0Zp71Ki3k3mcSW9yovpnJ2Uzi5Oz7g+oYAob7SZjejL2KsCtxZH
 sQZQE5YeZj39Ot1K3Zw9CWx3JcUXWKtNu8cH7hXBgCyKS7H56xgtmib/S2yjXGu0
 YIaMFJWTEB+FLrHRB4fYmeLG/kXIRn+N8Gy+/QUeXEHp4dFTV/il4Q2W+JAG35MS
 3IGMr8PEZA7gTSYDQ/2kpv0HXDCwYSDxN3p8dlrnLy1bokVJX7Nk1pNq6gXfOl/E
 4zIj3UsK0gPyO+CgprwC
 =Nka/
 -----END PGP SIGNATURE-----

Merge tag 'kbuild-v4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull Kbuild updates from Masahiro Yamada:

 - improve Clang support

 - clean up various Makefiles

 - improve build log visibility (objtool, alpha, ia64)

 - improve compiler flag evaluation for better build performance

 - fix GCC version-dependent warning

 - fix genksyms

* tag 'kbuild-v4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (23 commits)
  kbuild: dtbinst: remove unnecessary __dtbs_install_prep target
  ia64: beatify build log for gate.so and gate-syms.o
  alpha: make short build log available for division routines
  alpha: merge build rules of division routines
  alpha: add $(src)/ rather than $(obj)/ to make source file path
  Makefile: evaluate LDFLAGS_BUILD_ID only once
  objtool: make it visible in make V=1 output
  kbuild: clang: add -no-integrated-as to KBUILD_[AC]FLAGS
  kbuild: Add support to generate LLVM assembly files
  kbuild: Add better clang cross build support
  kbuild: drop -Wno-unknown-warning-option from clang options
  kbuild: fix asm-offset generation to work with clang
  kbuild: consolidate redundant sed script ASM offset generation
  frv: Use OFFSET macro in DEF_*REG()
  kbuild: avoid conflict between -ffunction-sections and -pg on gcc-4.7
  kbuild: Consolidate header generation from ASM offset information
  kbuild: use -Oz instead of -Os when using clang
  kbuild, LLVMLinux: Add -Werror to cc-option to support clang
  Kbuild: make designated_init attribute fatal
  kbuild: drop unneeded patterns '.*.orig' and '.*.rej' from distclean
  ...
This commit is contained in:
Linus Torvalds 2017-05-10 20:11:05 -07:00
commit 593043d35d
16 changed files with 336 additions and 381 deletions

View file

@ -116,12 +116,12 @@ CC_OPTION_CFLAGS = $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS))
# Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
cc-option = $(call try-run,\
$(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2))
$(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2))
# cc-option-yn
# Usage: flag := $(call cc-option-yn,-march=winchip-c6)
cc-option-yn = $(call try-run,\
$(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n)
$(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n)
# cc-option-align
# Prefix align with either -falign or -malign
@ -131,7 +131,7 @@ cc-option-align = $(subst -functions=0,,\
# cc-disable-warning
# Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
cc-disable-warning = $(call try-run,\
$(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
$(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
# cc-name
# Expands to either gcc or clang

View file

@ -177,6 +177,14 @@ cmd_cc_symtypes_c = \
$(obj)/%.symtypes : $(src)/%.c FORCE
$(call cmd,cc_symtypes_c)
# LLVM assembly
# Generate .ll files from .c
quiet_cmd_cc_ll_c = CC $(quiet_modtag) $@
cmd_cc_ll_c = $(CC) $(c_flags) -emit-llvm -S -o $@ $<
$(obj)/%.ll: $(src)/%.c FORCE
$(call if_changed_dep,cc_ll_c)
# C (.c) files
# The C file is compiled and updated dependency information is generated.
# (See cmd_cc_o_c + relevant part of rule_cc_o_c)
@ -272,14 +280,14 @@ define rule_cc_o_c
$(call echo-cmd,checksrc) $(cmd_checksrc) \
$(call cmd_and_fixdep,cc_o_c) \
$(cmd_modversions_c) \
$(cmd_objtool) \
$(call echo-cmd,objtool) $(cmd_objtool) \
$(call echo-cmd,record_mcount) $(cmd_record_mcount)
endef
define rule_as_o_S
$(call cmd_and_fixdep,as_o_S) \
$(cmd_modversions_S) \
$(cmd_objtool)
$(call echo-cmd,objtool) $(cmd_objtool)
endef
# List module undefined symbols (or empty line if not enabled)

View file

@ -20,12 +20,6 @@ include include/config/auto.conf
include scripts/Kbuild.include
include $(src)/Makefile
PHONY += __dtbs_install_prep
__dtbs_install_prep:
ifeq ("$(dtbinst-root)", "$(obj)")
$(Q)mkdir -p $(INSTALL_DTBS_PATH)
endif
dtbinst-files := $(dtb-y)
dtbinst-dirs := $(dts-dirs)
@ -35,8 +29,6 @@ quiet_cmd_dtb_install = INSTALL $<
install-dir = $(patsubst $(dtbinst-root)%,$(INSTALL_DTBS_PATH)%,$(obj))
$(dtbinst-files) $(dtbinst-dirs): | __dtbs_install_prep
$(dtbinst-files): %.dtb: $(obj)/%.dtb
$(call cmd,dtb_install,$(install-dir))

View file

@ -64,7 +64,6 @@ ifeq ($(cc-name),clang)
KBUILD_CFLAGS += $(call cc-disable-warning, initializer-overrides)
KBUILD_CFLAGS += $(call cc-disable-warning, unused-value)
KBUILD_CFLAGS += $(call cc-disable-warning, format)
KBUILD_CFLAGS += $(call cc-disable-warning, unknown-warning-option)
KBUILD_CFLAGS += $(call cc-disable-warning, sign-compare)
KBUILD_CFLAGS += $(call cc-disable-warning, format-zero-length)
KBUILD_CFLAGS += $(call cc-disable-warning, uninitialized)

View file

@ -420,3 +420,34 @@ quiet_cmd_xzmisc = XZMISC $@
cmd_xzmisc = (cat $(filter-out FORCE,$^) | \
xz --check=crc32 --lzma2=dict=1MiB) > $@ || \
(rm -f $@ ; false)
# ASM offsets
# ---------------------------------------------------------------------------
# Default sed regexp - multiline due to syntax constraints
#
# Use [:space:] because LLVM's integrated assembler inserts <tab> around
# the .ascii directive whereas GCC keeps the <space> as-is.
define sed-offsets
's:^[[:space:]]*\.ascii[[:space:]]*"\(.*\)".*:\1:; \
/^->/{s:->#\(.*\):/* \1 */:; \
s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
s:->::; p;}'
endef
# Use filechk to avoid rebuilds when a header changes, but the resulting file
# does not
define filechk_offsets
(set -e; \
echo "#ifndef $2"; \
echo "#define $2"; \
echo "/*"; \
echo " * DO NOT MODIFY."; \
echo " *"; \
echo " * This file was generated by Kbuild"; \
echo " */"; \
echo ""; \
sed -ne $(sed-offsets); \
echo ""; \
echo "#endif" )
endef

View file

@ -440,16 +440,16 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 4
/* YYLAST -- Last index in YYTABLE. */
#define YYLAST 524
#define YYLAST 522
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 55
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 49
/* YYNRULES -- Number of rules. */
#define YYNRULES 134
#define YYNRULES 133
/* YYNRULES -- Number of states. */
#define YYNSTATES 189
#define YYNSTATES 187
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@ -506,13 +506,13 @@ static const yytype_uint16 yyprhs[] =
97, 101, 105, 109, 112, 115, 118, 120, 122, 124,
126, 128, 130, 132, 134, 136, 138, 140, 142, 145,
146, 148, 150, 153, 155, 157, 159, 161, 164, 166,
168, 170, 175, 180, 183, 187, 191, 194, 196, 198,
200, 205, 210, 213, 217, 221, 224, 226, 230, 231,
233, 235, 239, 242, 245, 247, 248, 250, 252, 257,
262, 265, 269, 273, 277, 278, 280, 283, 287, 291,
292, 294, 296, 299, 303, 306, 307, 309, 311, 315,
318, 321, 323, 326, 327, 330, 334, 339, 341, 345,
347, 351, 354, 355, 357
168, 170, 175, 180, 183, 187, 190, 192, 194, 196,
201, 206, 209, 213, 217, 220, 222, 226, 227, 229,
231, 235, 238, 241, 243, 244, 246, 248, 253, 258,
261, 265, 269, 273, 274, 276, 279, 283, 287, 288,
290, 292, 295, 299, 302, 303, 305, 307, 311, 314,
317, 319, 322, 323, 326, 330, 335, 337, 341, 343,
347, 350, 351, 353
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
@ -536,25 +536,24 @@ static const yytype_int8 yyrhs[] =
74, 75, -1, 8, -1, 27, -1, 32, -1, 18,
-1, 72, 76, -1, 77, -1, 39, -1, 43, -1,
77, 49, 80, 50, -1, 77, 49, 1, 50, -1,
77, 35, -1, 49, 76, 50, -1, 49, 1, 50,
-1, 72, 78, -1, 79, -1, 39, -1, 43, -1,
79, 49, 80, 50, -1, 79, 49, 1, 50, -1,
79, 35, -1, 49, 78, 50, -1, 49, 1, 50,
-1, 81, 38, -1, 81, -1, 82, 48, 38, -1,
-1, 82, -1, 83, -1, 82, 48, 83, -1, 67,
84, -1, 72, 84, -1, 85, -1, -1, 39, -1,
43, -1, 85, 49, 80, 50, -1, 85, 49, 1,
50, -1, 85, 35, -1, 49, 84, 50, -1, 49,
1, 50, -1, 66, 76, 34, -1, -1, 88, -1,
52, 36, -1, 53, 90, 47, -1, 53, 1, 47,
-1, -1, 91, -1, 92, -1, 91, 92, -1, 66,
93, 46, -1, 1, 46, -1, -1, 94, -1, 95,
-1, 94, 48, 95, -1, 78, 97, -1, 39, 96,
-1, 96, -1, 54, 36, -1, -1, 97, 32, -1,
53, 99, 47, -1, 53, 99, 48, 47, -1, 100,
-1, 99, 48, 100, -1, 39, -1, 39, 52, 36,
-1, 31, 46, -1, -1, 31, -1, 30, 49, 39,
50, 46, -1
77, 35, -1, 49, 76, 50, -1, 72, 78, -1,
79, -1, 39, -1, 43, -1, 79, 49, 80, 50,
-1, 79, 49, 1, 50, -1, 79, 35, -1, 49,
78, 50, -1, 49, 1, 50, -1, 81, 38, -1,
81, -1, 82, 48, 38, -1, -1, 82, -1, 83,
-1, 82, 48, 83, -1, 67, 84, -1, 72, 84,
-1, 85, -1, -1, 39, -1, 43, -1, 85, 49,
80, 50, -1, 85, 49, 1, 50, -1, 85, 35,
-1, 49, 84, 50, -1, 49, 1, 50, -1, 66,
76, 34, -1, -1, 88, -1, 52, 36, -1, 53,
90, 47, -1, 53, 1, 47, -1, -1, 91, -1,
92, -1, 91, 92, -1, 66, 93, 46, -1, 1,
46, -1, -1, 94, -1, 95, -1, 94, 48, 95,
-1, 78, 97, -1, 39, 96, -1, 96, -1, 54,
36, -1, -1, 97, 32, -1, 53, 99, 47, -1,
53, 99, 48, 47, -1, 100, -1, 99, 48, 100,
-1, 39, -1, 39, 52, 36, -1, 31, 46, -1,
-1, 31, -1, 30, 49, 39, 50, 46, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
@ -567,13 +566,13 @@ static const yytype_uint16 yyrline[] =
238, 240, 242, 247, 250, 251, 255, 256, 257, 258,
259, 260, 261, 262, 263, 264, 265, 266, 270, 275,
276, 280, 281, 285, 285, 285, 286, 294, 295, 299,
308, 317, 319, 321, 323, 325, 332, 333, 337, 338,
339, 341, 343, 345, 347, 352, 353, 354, 358, 359,
363, 364, 369, 374, 376, 380, 381, 389, 393, 395,
397, 399, 401, 406, 415, 416, 421, 426, 427, 431,
432, 436, 437, 441, 443, 448, 449, 453, 454, 458,
459, 460, 464, 468, 469, 473, 474, 478, 479, 482,
487, 495, 499, 500, 504
308, 317, 319, 321, 323, 330, 331, 335, 336, 337,
339, 341, 343, 345, 350, 351, 352, 356, 357, 361,
362, 367, 372, 374, 378, 379, 387, 391, 393, 395,
397, 399, 404, 413, 414, 419, 424, 425, 429, 430,
434, 435, 439, 441, 446, 447, 451, 452, 456, 457,
458, 462, 466, 467, 471, 472, 476, 477, 480, 485,
493, 497, 498, 502
};
#endif
@ -636,13 +635,13 @@ static const yytype_uint8 yyr1[] =
70, 70, 70, 70, 70, 70, 71, 71, 71, 71,
71, 71, 71, 71, 71, 71, 71, 71, 72, 73,
73, 74, 74, 75, 75, 75, 75, 76, 76, 77,
77, 77, 77, 77, 77, 77, 78, 78, 79, 79,
79, 79, 79, 79, 79, 80, 80, 80, 81, 81,
82, 82, 83, 84, 84, 85, 85, 85, 85, 85,
85, 85, 85, 86, 87, 87, 88, 89, 89, 90,
90, 91, 91, 92, 92, 93, 93, 94, 94, 95,
95, 95, 96, 97, 97, 98, 98, 99, 99, 100,
100, 101, 102, 102, 103
77, 77, 77, 77, 77, 78, 78, 79, 79, 79,
79, 79, 79, 79, 80, 80, 80, 81, 81, 82,
82, 83, 84, 84, 85, 85, 85, 85, 85, 85,
85, 85, 86, 87, 87, 88, 89, 89, 90, 90,
91, 91, 92, 92, 93, 93, 94, 94, 95, 95,
95, 96, 97, 97, 98, 98, 99, 99, 100, 100,
101, 102, 102, 103
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@ -655,13 +654,13 @@ static const yytype_uint8 yyr2[] =
3, 3, 3, 2, 2, 2, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 2, 0,
1, 1, 2, 1, 1, 1, 1, 2, 1, 1,
1, 4, 4, 2, 3, 3, 2, 1, 1, 1,
4, 4, 2, 3, 3, 2, 1, 3, 0, 1,
1, 3, 2, 2, 1, 0, 1, 1, 4, 4,
2, 3, 3, 3, 0, 1, 2, 3, 3, 0,
1, 1, 2, 3, 2, 0, 1, 1, 3, 2,
2, 1, 2, 0, 2, 3, 4, 1, 3, 1,
3, 2, 0, 1, 5
1, 4, 4, 2, 3, 2, 1, 1, 1, 4,
4, 2, 3, 3, 2, 1, 3, 0, 1, 1,
3, 2, 2, 1, 0, 1, 1, 4, 4, 2,
3, 3, 3, 0, 1, 2, 3, 3, 0, 1,
1, 2, 3, 2, 0, 1, 1, 3, 2, 2,
1, 2, 0, 2, 3, 4, 1, 3, 1, 3,
2, 0, 1, 5
};
/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@ -675,189 +674,189 @@ static const yytype_uint8 yydefact[] =
0, 56, 0, 0, 65, 36, 57, 5, 10, 17,
23, 24, 26, 27, 33, 34, 11, 12, 13, 14,
15, 39, 0, 43, 6, 37, 0, 44, 22, 38,
45, 0, 0, 131, 69, 70, 0, 59, 0, 18,
19, 0, 132, 68, 25, 42, 129, 0, 127, 22,
40, 0, 115, 0, 0, 111, 9, 17, 41, 95,
0, 0, 0, 0, 58, 60, 61, 16, 0, 67,
133, 103, 123, 73, 0, 0, 125, 0, 7, 114,
108, 78, 79, 0, 0, 0, 123, 77, 0, 116,
117, 121, 107, 0, 112, 132, 96, 57, 0, 95,
92, 94, 35, 0, 75, 74, 62, 20, 104, 0,
0, 86, 89, 90, 130, 126, 128, 120, 0, 78,
0, 122, 76, 119, 82, 0, 113, 0, 0, 97,
0, 93, 100, 0, 134, 124, 0, 21, 105, 72,
71, 85, 0, 84, 83, 0, 0, 118, 102, 101,
0, 0, 106, 87, 91, 81, 80, 99, 98
45, 0, 0, 130, 69, 70, 0, 59, 0, 18,
19, 0, 131, 68, 25, 42, 128, 0, 126, 22,
40, 0, 114, 0, 0, 110, 9, 17, 41, 94,
0, 0, 0, 58, 60, 61, 16, 0, 67, 132,
102, 122, 73, 0, 0, 124, 0, 7, 113, 107,
77, 78, 0, 0, 0, 122, 76, 0, 115, 116,
120, 106, 0, 111, 131, 95, 57, 0, 94, 91,
93, 35, 0, 74, 62, 20, 103, 0, 0, 85,
88, 89, 129, 125, 127, 119, 0, 77, 0, 121,
75, 118, 81, 0, 112, 0, 0, 96, 0, 92,
99, 0, 133, 123, 0, 21, 104, 72, 71, 84,
0, 83, 82, 0, 0, 117, 101, 100, 0, 0,
105, 86, 90, 80, 79, 98, 97
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
-1, 1, 2, 3, 37, 79, 58, 38, 68, 69,
70, 82, 40, 41, 42, 43, 44, 71, 94, 95,
45, 125, 73, 116, 117, 140, 141, 142, 143, 130,
131, 46, 167, 168, 57, 83, 84, 85, 118, 119,
120, 121, 138, 53, 77, 78, 47, 102, 48
70, 82, 40, 41, 42, 43, 44, 71, 93, 94,
45, 124, 73, 115, 116, 138, 139, 140, 141, 129,
130, 46, 165, 166, 57, 83, 84, 85, 117, 118,
119, 120, 136, 53, 77, 78, 47, 101, 48
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
#define YYPACT_NINF -111
#define YYPACT_NINF -94
static const yytype_int16 yypact[] =
{
-111, 13, -111, 210, -111, -111, 28, -111, -111, -111,
-111, -111, -27, -111, 44, -111, -111, -111, -111, -111,
-111, -111, -111, -111, -24, -111, -20, -111, -111, -111,
31, -111, 32, 42, -111, -111, -111, -111, -111, 34,
481, -111, -111, -111, -111, -111, -111, -111, -111, -111,
-111, 51, 56, -111, -111, 52, 108, -111, 481, 52,
-111, 481, 58, -111, -111, -111, 19, 0, 54, 55,
-111, 34, 30, -18, -111, -111, 68, -25, -111, 481,
-111, 45, 33, 59, 159, -111, -111, 34, -111, 395,
57, 60, 81, 88, -111, 0, -111, -111, 34, -111,
-111, -111, -111, -111, 257, 72, -111, -23, -111, -111,
-111, 85, -111, 20, 106, 47, -111, -10, 97, 96,
-111, -111, -111, 99, -111, 115, -111, -111, 5, 50,
-111, 11, -111, 102, -111, -111, -111, -111, -22, 100,
103, 111, 104, -111, -111, -111, -111, -111, 113, -111,
121, -111, -111, 124, -111, 303, -111, 33, 132, -111,
139, -111, -111, 349, -111, -111, 122, -111, -111, -111,
-111, -111, 442, -111, -111, 140, 143, -111, -111, -111,
144, 145, -111, -111, -111, -111, -111, -111, -111
-94, 15, -94, 208, -94, -94, 34, -94, -94, -94,
-94, -94, -27, -94, -5, -94, -94, -94, -94, -94,
-94, -94, -94, -94, -25, -94, -16, -94, -94, -94,
-4, -94, 19, -24, -94, -94, -94, -94, -94, 24,
479, -94, -94, -94, -94, -94, -94, -94, -94, -94,
-94, 29, 48, -94, -94, 37, 106, -94, 479, 37,
-94, 479, 54, -94, -94, -94, 24, -2, 49, 53,
-94, 24, -14, -11, -94, -94, 47, 38, -94, 479,
-94, 51, 23, 55, 157, -94, -94, 24, -94, 393,
56, 58, 68, -94, -2, -94, -94, 24, -94, -94,
-94, -94, -94, 255, 67, -94, 5, -94, -94, -94,
50, -94, 7, 69, 40, -94, -8, 83, 88, -94,
-94, -94, 91, -94, 109, -94, -94, 4, 45, -94,
16, -94, 95, -94, -94, -94, -23, 92, 93, 108,
96, -94, -94, -94, -94, -94, 97, -94, 98, -94,
-94, 118, -94, 301, -94, 23, 101, -94, 104, -94,
-94, 347, -94, -94, 120, -94, -94, -94, -94, -94,
440, -94, -94, 111, 119, -94, -94, -94, 130, 137,
-94, -94, -94, -94, -94, -94, -94
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
-111, -111, 160, -111, -111, -111, -111, -51, -111, -111,
98, -1, -61, -37, -111, -111, -111, -78, -111, -111,
-53, -30, -111, -66, -111, -110, -111, -111, -60, -63,
-111, -111, -111, -111, -21, -111, -111, 116, -111, -111,
40, 90, 83, 152, -111, 105, -111, -111, -111
-94, -94, 158, -94, -94, -94, -94, -45, -94, -94,
94, -1, -61, -29, -94, -94, -94, -79, -94, -94,
-63, -7, -94, -93, -94, -92, -94, -94, -60, -57,
-94, -94, -94, -94, -19, -94, -94, 110, -94, -94,
33, 82, 78, 144, -94, 99, -94, -94, -94
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
number is the opposite. If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -111
#define YYTABLE_NINF -110
static const yytype_int16 yytable[] =
{
89, 90, 39, 74, 115, 60, 158, 86, 10, 72,
165, 129, 51, 4, 96, 55, 76, 103, 20, 59,
92, 148, 106, 107, 145, 154, 52, 29, 108, 56,
166, 104, 34, 56, 80, 115, 93, 115, 88, 155,
-95, 99, 136, 89, 126, 176, 162, 150, 159, 152,
129, 129, 74, 181, 128, -95, 67, 87, 64, 149,
163, 100, 65, 112, 101, 160, 161, 54, 66, 113,
67, 67, 111, 64, 49, 50, 112, 65, 87, 115,
61, 62, 113, 66, 67, 67, 149, 114, 63, 126,
112, 109, 110, 159, 89, 76, 113, 91, 67, 128,
97, 67, 89, 98, 52, 56, 122, 132, 144, 81,
133, 89, 184, 7, 8, 9, 10, 11, 12, 13,
105, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 134, 26, 27, 28, 29, 30, 31, 135, 114,
34, 35, 151, 156, 157, 109, 100, -22, 164, 171,
169, 36, 172, 170, -22, -109, 165, -22, 182, -22,
123, 5, -22, 173, 7, 8, 9, 10, 11, 12,
13, 174, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 178, 26, 27, 28, 29, 30, 31, 179,
185, 34, 35, 186, 187, 188, 137, 177, -22, 153,
124, 147, 36, 75, 0, -22, -110, 0, -22, 0,
-22, 6, 146, -22, 0, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 0, 0, 0, 0, 0, -22,
0, 0, 0, 36, 0, 0, -22, 0, 139, -22,
0, -22, 7, 8, 9, 10, 11, 12, 13, 0,
89, 90, 39, 114, 95, 156, 10, 60, 146, 163,
128, 74, 51, 86, 55, 4, 20, 99, 54, 148,
100, 150, 63, 59, 102, 29, 52, 152, 56, 164,
34, 134, 72, 114, 107, 114, 80, 56, 103, -94,
88, 153, 89, 125, 76, 61, 147, 157, 128, 128,
111, 160, 143, 127, -94, 67, 112, 87, 67, 92,
74, 174, 110, 64, 98, 161, 111, 65, 62, 179,
158, 159, 112, 66, 67, 67, 114, 113, 87, 147,
49, 50, 52, 111, 125, 105, 106, 76, 157, 112,
56, 67, 89, 91, 127, 96, 67, 108, 109, 104,
89, 97, 121, 142, 113, 149, 131, 81, 132, 89,
182, 7, 8, 9, 10, 11, 12, 13, 133, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 154,
26, 27, 28, 29, 30, 31, 155, 108, 34, 35,
99, 162, 167, 168, 170, -22, 169, 171, 172, 36,
163, 176, -22, -108, 177, -22, 180, -22, 122, 5,
-22, 183, 7, 8, 9, 10, 11, 12, 13, 184,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
0, 26, 27, 28, 29, 30, 31, 0, 0, 34,
35, 0, 0, 0, 0, -88, 0, 0, 0, 0,
36, 0, 0, 0, 175, 0, 0, -88, 7, 8,
9, 10, 11, 12, 13, 0, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 0, 26, 27, 28,
29, 30, 31, 0, 0, 34, 35, 0, 0, 0,
0, -88, 0, 0, 0, 0, 36, 0, 0, 0,
180, 0, 0, -88, 7, 8, 9, 10, 11, 12,
13, 0, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 0, 26, 27, 28, 29, 30, 31, 0,
0, 34, 35, 0, 0, 0, 0, -88, 0, 0,
0, 0, 36, 0, 0, 0, 0, 0, 0, -88,
185, 26, 27, 28, 29, 30, 31, 186, 175, 34,
35, 135, 145, 151, 123, 75, -22, 0, 0, 0,
36, 0, 0, -22, -109, 144, -22, 0, -22, 6,
0, -22, 0, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 0, 0, 0, 0, 0, -22, 0, 0,
0, 36, 0, 0, -22, 0, 137, -22, 0, -22,
7, 8, 9, 10, 11, 12, 13, 0, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 0, 26,
27, 28, 29, 30, 31, 0, 0, 34, 35, 0,
0, 0, 0, 0, 126, 0, 0, 0, 127, 0,
0, 0, 0, 0, 128, 0, 67, 7, 8, 9,
10, 11, 12, 13, 0, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 0, 0, 34, 35, 0, 0, 0, 0,
183, 0, 0, 0, 0, 36, 7, 8, 9, 10,
0, 0, 0, -87, 0, 0, 0, 0, 36, 0,
0, 0, 173, 0, 0, -87, 7, 8, 9, 10,
11, 12, 13, 0, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 0, 26, 27, 28, 29, 30,
31, 0, 0, 34, 35, 0, 0, 0, 0, 0,
0, 0, 0, 0, 36
31, 0, 0, 34, 35, 0, 0, 0, 0, -87,
0, 0, 0, 0, 36, 0, 0, 0, 178, 0,
0, -87, 7, 8, 9, 10, 11, 12, 13, 0,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
0, 26, 27, 28, 29, 30, 31, 0, 0, 34,
35, 0, 0, 0, 0, -87, 0, 0, 0, 0,
36, 0, 0, 0, 0, 0, 0, -87, 7, 8,
9, 10, 11, 12, 13, 0, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 0, 26, 27, 28,
29, 30, 31, 0, 0, 34, 35, 0, 0, 0,
0, 0, 125, 0, 0, 0, 126, 0, 0, 0,
0, 0, 127, 0, 67, 7, 8, 9, 10, 11,
12, 13, 0, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 0, 26, 27, 28, 29, 30, 31,
0, 0, 34, 35, 0, 0, 0, 0, 181, 0,
0, 0, 0, 36, 7, 8, 9, 10, 11, 12,
13, 0, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 0, 26, 27, 28, 29, 30, 31, 0,
0, 34, 35, 0, 0, 0, 0, 0, 0, 0,
0, 0, 36
};
#define yypact_value_is_default(Yystate) \
(!!((Yystate) == (-111)))
(!!((Yystate) == (-94)))
#define yytable_value_is_error(Yytable_value) \
YYID (0)
static const yytype_int16 yycheck[] =
{
61, 61, 3, 40, 82, 26, 1, 58, 8, 39,
32, 89, 39, 0, 67, 39, 39, 35, 18, 39,
1, 1, 47, 48, 47, 35, 53, 27, 79, 53,
52, 49, 32, 53, 55, 113, 66, 115, 59, 49,
35, 71, 95, 104, 39, 155, 35, 113, 43, 115,
128, 129, 89, 163, 49, 50, 51, 58, 39, 39,
49, 31, 43, 43, 34, 128, 129, 23, 49, 49,
51, 51, 39, 39, 46, 47, 43, 43, 79, 157,
49, 49, 49, 49, 51, 51, 39, 54, 46, 39,
43, 46, 47, 43, 155, 39, 49, 39, 51, 49,
46, 51, 163, 48, 53, 53, 47, 50, 36, 1,
50, 172, 172, 5, 6, 7, 8, 9, 10, 11,
52, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 50, 24, 25, 26, 27, 28, 29, 50, 54,
32, 33, 36, 46, 48, 46, 31, 39, 46, 38,
50, 43, 48, 50, 46, 47, 32, 49, 36, 51,
1, 1, 54, 50, 5, 6, 7, 8, 9, 10,
11, 50, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 50, 24, 25, 26, 27, 28, 29, 50,
50, 32, 33, 50, 50, 50, 98, 157, 39, 116,
84, 111, 43, 51, -1, 46, 47, -1, 49, -1,
51, 1, 107, 54, -1, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, -1, -1, -1, -1, -1, 39,
-1, -1, -1, 43, -1, -1, 46, -1, 1, 49,
-1, 51, 5, 6, 7, 8, 9, 10, 11, -1,
61, 61, 3, 82, 67, 1, 8, 26, 1, 32,
89, 40, 39, 58, 39, 0, 18, 31, 23, 112,
34, 114, 46, 39, 35, 27, 53, 35, 53, 52,
32, 94, 39, 112, 79, 114, 55, 53, 49, 35,
59, 49, 103, 39, 39, 49, 39, 43, 127, 128,
43, 35, 47, 49, 50, 51, 49, 58, 51, 66,
89, 153, 39, 39, 71, 49, 43, 43, 49, 161,
127, 128, 49, 49, 51, 51, 155, 54, 79, 39,
46, 47, 53, 43, 39, 47, 48, 39, 43, 49,
53, 51, 153, 39, 49, 46, 51, 46, 47, 52,
161, 48, 47, 36, 54, 36, 50, 1, 50, 170,
170, 5, 6, 7, 8, 9, 10, 11, 50, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 46,
24, 25, 26, 27, 28, 29, 48, 46, 32, 33,
31, 46, 50, 50, 48, 39, 38, 50, 50, 43,
32, 50, 46, 47, 50, 49, 36, 51, 1, 1,
54, 50, 5, 6, 7, 8, 9, 10, 11, 50,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
-1, 24, 25, 26, 27, 28, 29, -1, -1, 32,
33, -1, -1, -1, -1, 38, -1, -1, -1, -1,
43, -1, -1, -1, 1, -1, -1, 50, 5, 6,
7, 8, 9, 10, 11, -1, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, -1, 24, 25, 26,
27, 28, 29, -1, -1, 32, 33, -1, -1, -1,
-1, 38, -1, -1, -1, -1, 43, -1, -1, -1,
1, -1, -1, 50, 5, 6, 7, 8, 9, 10,
11, -1, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, -1, 24, 25, 26, 27, 28, 29, -1,
-1, 32, 33, -1, -1, -1, -1, 38, -1, -1,
-1, -1, 43, -1, -1, -1, -1, -1, -1, 50,
50, 24, 25, 26, 27, 28, 29, 50, 155, 32,
33, 97, 110, 115, 84, 51, 39, -1, -1, -1,
43, -1, -1, 46, 47, 106, 49, -1, 51, 1,
-1, 54, -1, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, -1, -1, -1, -1, -1, 39, -1, -1,
-1, 43, -1, -1, 46, -1, 1, 49, -1, 51,
5, 6, 7, 8, 9, 10, 11, -1, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, -1, 24,
25, 26, 27, 28, 29, -1, -1, 32, 33, -1,
-1, -1, -1, -1, 39, -1, -1, -1, 43, -1,
-1, -1, -1, -1, 49, -1, 51, 5, 6, 7,
8, 9, 10, 11, -1, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, -1, 24, 25, 26, 27,
28, 29, -1, -1, 32, 33, -1, -1, -1, -1,
38, -1, -1, -1, -1, 43, 5, 6, 7, 8,
-1, -1, -1, 38, -1, -1, -1, -1, 43, -1,
-1, -1, 1, -1, -1, 50, 5, 6, 7, 8,
9, 10, 11, -1, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, -1, 24, 25, 26, 27, 28,
29, -1, -1, 32, 33, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 43
29, -1, -1, 32, 33, -1, -1, -1, -1, 38,
-1, -1, -1, -1, 43, -1, -1, -1, 1, -1,
-1, 50, 5, 6, 7, 8, 9, 10, 11, -1,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
-1, 24, 25, 26, 27, 28, 29, -1, -1, 32,
33, -1, -1, -1, -1, 38, -1, -1, -1, -1,
43, -1, -1, -1, -1, -1, -1, 50, 5, 6,
7, 8, 9, 10, 11, -1, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, -1, 24, 25, 26,
27, 28, 29, -1, -1, 32, 33, -1, -1, -1,
-1, -1, 39, -1, -1, -1, 43, -1, -1, -1,
-1, -1, 49, -1, 51, 5, 6, 7, 8, 9,
10, 11, -1, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, -1, 24, 25, 26, 27, 28, 29,
-1, -1, 32, 33, -1, -1, -1, -1, 38, -1,
-1, -1, -1, 43, 5, 6, 7, 8, 9, 10,
11, -1, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, -1, 24, 25, 26, 27, 28, 29, -1,
-1, 32, 33, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 43
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@ -873,16 +872,16 @@ static const yytype_uint8 yystos[] =
89, 49, 49, 46, 39, 43, 49, 51, 63, 64,
65, 72, 76, 77, 68, 98, 39, 99, 100, 60,
89, 1, 66, 90, 91, 92, 62, 66, 89, 67,
83, 39, 1, 76, 73, 74, 75, 46, 48, 76,
31, 34, 102, 35, 49, 52, 47, 48, 62, 46,
47, 39, 43, 49, 54, 72, 78, 79, 93, 94,
95, 96, 47, 1, 92, 76, 39, 43, 49, 72,
84, 85, 50, 50, 50, 50, 75, 65, 97, 1,
80, 81, 82, 83, 36, 47, 100, 96, 1, 39,
78, 36, 78, 97, 35, 49, 46, 48, 1, 43,
84, 84, 35, 49, 46, 32, 52, 87, 88, 50,
50, 38, 48, 50, 50, 1, 80, 95, 50, 50,
1, 80, 36, 38, 83, 50, 50, 50, 50
83, 39, 76, 73, 74, 75, 46, 48, 76, 31,
34, 102, 35, 49, 52, 47, 48, 62, 46, 47,
39, 43, 49, 54, 72, 78, 79, 93, 94, 95,
96, 47, 1, 92, 76, 39, 43, 49, 72, 84,
85, 50, 50, 50, 75, 65, 97, 1, 80, 81,
82, 83, 36, 47, 100, 96, 1, 39, 78, 36,
78, 97, 35, 49, 46, 48, 1, 43, 84, 84,
35, 49, 46, 32, 52, 87, 88, 50, 50, 38,
48, 50, 50, 1, 80, 95, 50, 50, 1, 80,
36, 38, 83, 50, 50, 50, 50
};
#define yyerrok (yyerrstatus = 0)
@ -1928,12 +1927,12 @@ yyreduce:
case 75:
{ (yyval) = (yyvsp[(3) - (3)]); }
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 76:
case 79:
{ (yyval) = (yyvsp[(2) - (2)]); }
{ (yyval) = (yyvsp[(4) - (4)]); }
break;
case 80:
@ -1943,12 +1942,12 @@ yyreduce:
case 81:
{ (yyval) = (yyvsp[(4) - (4)]); }
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 82:
{ (yyval) = (yyvsp[(2) - (2)]); }
{ (yyval) = (yyvsp[(3) - (3)]); }
break;
case 83:
@ -1958,27 +1957,27 @@ yyreduce:
case 84:
{ (yyval) = (yyvsp[(3) - (3)]); }
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 85:
case 86:
{ (yyval) = (yyvsp[(2) - (2)]); }
{ (yyval) = (yyvsp[(3) - (3)]); }
break;
case 87:
{ (yyval) = (yyvsp[(3) - (3)]); }
{ (yyval) = NULL; }
break;
case 88:
case 90:
{ (yyval) = NULL; }
{ (yyval) = (yyvsp[(3) - (3)]); }
break;
case 91:
{ (yyval) = (yyvsp[(3) - (3)]); }
{ (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); }
break;
case 92:
@ -1986,17 +1985,12 @@ yyreduce:
{ (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); }
break;
case 93:
{ (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); }
break;
case 95:
case 94:
{ (yyval) = NULL; }
break;
case 96:
case 95:
{ /* For version 2 checksums, we don't want to remember
private parameter names. */
@ -2005,13 +1999,18 @@ yyreduce:
}
break;
case 97:
case 96:
{ remove_node((yyvsp[(1) - (1)]));
(yyval) = (yyvsp[(1) - (1)]);
}
break;
case 97:
{ (yyval) = (yyvsp[(4) - (4)]); }
break;
case 98:
{ (yyval) = (yyvsp[(4) - (4)]); }
@ -2019,12 +2018,12 @@ yyreduce:
case 99:
{ (yyval) = (yyvsp[(4) - (4)]); }
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 100:
{ (yyval) = (yyvsp[(2) - (2)]); }
{ (yyval) = (yyvsp[(3) - (3)]); }
break;
case 101:
@ -2034,11 +2033,6 @@ yyreduce:
case 102:
{ (yyval) = (yyvsp[(3) - (3)]); }
break;
case 103:
{ struct string_list *decl = *(yyvsp[(2) - (3)]);
*(yyvsp[(2) - (3)]) = NULL;
add_symbol(current_name, SYM_NORMAL, decl, is_extern);
@ -2046,16 +2040,21 @@ yyreduce:
}
break;
case 104:
case 103:
{ (yyval) = NULL; }
break;
case 106:
case 105:
{ remove_list((yyvsp[(2) - (2)]), &(*(yyvsp[(1) - (2)]))->next); (yyval) = (yyvsp[(2) - (2)]); }
break;
case 106:
{ (yyval) = (yyvsp[(3) - (3)]); }
break;
case 107:
{ (yyval) = (yyvsp[(3) - (3)]); }
@ -2063,70 +2062,65 @@ yyreduce:
case 108:
{ (yyval) = (yyvsp[(3) - (3)]); }
{ (yyval) = NULL; }
break;
case 109:
case 111:
{ (yyval) = NULL; }
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 112:
{ (yyval) = (yyvsp[(2) - (2)]); }
{ (yyval) = (yyvsp[(3) - (3)]); }
break;
case 113:
{ (yyval) = (yyvsp[(3) - (3)]); }
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 114:
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 115:
{ (yyval) = NULL; }
break;
case 118:
case 117:
{ (yyval) = (yyvsp[(3) - (3)]); }
break;
case 119:
case 118:
{ (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); }
break;
case 120:
case 119:
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 121:
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 122:
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 123:
{ (yyval) = NULL; }
break;
case 125:
case 124:
{ (yyval) = (yyvsp[(3) - (3)]); }
break;
case 126:
case 125:
{ (yyval) = (yyvsp[(4) - (4)]); }
break;
case 129:
case 128:
{
const char *name = strdup((*(yyvsp[(1) - (1)]))->string);
@ -2134,7 +2128,7 @@ yyreduce:
}
break;
case 130:
case 129:
{
const char *name = strdup((*(yyvsp[(1) - (3)]))->string);
@ -2143,17 +2137,17 @@ yyreduce:
}
break;
case 131:
case 130:
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 132:
case 131:
{ (yyval) = NULL; }
break;
case 134:
case 133:
{ export_symbol((*(yyvsp[(3) - (5)]))->string); (yyval) = (yyvsp[(5) - (5)]); }
break;

View file

@ -322,8 +322,6 @@ direct_declarator:
{ $$ = $2; }
| '(' declarator ')'
{ $$ = $3; }
| '(' error ')'
{ $$ = $3; }
;
/* Nested declarators differ from regular declarators in that they do

View file

@ -7,32 +7,8 @@ modpost-objs := modpost.o file2alias.o sumversion.o
devicetable-offsets-file := devicetable-offsets.h
define sed-y
"/^->/{s:->#\(.*\):/* \1 */:; \
s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
s:->::; p;}"
endef
quiet_cmd_offsets = GEN $@
define cmd_offsets
(set -e; \
echo "#ifndef __DEVICETABLE_OFFSETS_H__"; \
echo "#define __DEVICETABLE_OFFSETS_H__"; \
echo "/*"; \
echo " * DO NOT MODIFY."; \
echo " *"; \
echo " * This file was generated by Kbuild"; \
echo " *"; \
echo " */"; \
echo ""; \
sed -ne $(sed-y) $<; \
echo ""; \
echo "#endif" ) > $@
endef
$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s
$(call if_changed,offsets)
$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s FORCE
$(call filechk,offsets,__DEVICETABLE_OFFSETS_H__)
targets += $(devicetable-offsets-file) devicetable-offsets.s