| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
|
| 6 |
|
| 7 |
|
| 8 |
|
| 9 |
|
| 10 |
|
| 11 |
|
| 12 |
|
| 13 | ifdef cross_compiling
|
| 14 | ifeq ($(CROSS_COMPILE),)
|
| 15 |
|
| 16 |
|
| 17 | CC_ARCHES := powerpc powerpc64 powerpc64le
|
| 18 | CC_SUFFIXES := linux linux-gnu unknown-linux-gnu
|
| 19 | CROSS_COMPILE := $(call cc-cross-prefix, $(foreach a,$(CC_ARCHES), \
|
| 20 | $(foreach s,$(CC_SUFFIXES),$(a)-$(s)-)))
|
| 21 | endif
|
| 22 | endif
|
| 23 |
|
| 24 | HAS_BIARCH := $(call cc-option-yn, -m32)
|
| 25 |
|
| 26 |
|
| 27 | CROSS32_COMPILE ?=
|
| 28 |
|
| 29 |
|
| 30 |
|
| 31 | uname := $(shell uname -m)
|
| 32 | KBUILD_DEFCONFIG := $(if $(filter ppc%,$(uname)),$(uname),ppc64le)_defconfig
|
| 33 |
|
| 34 | new_nm := $(shell if $(NM) --help 2>&1 | grep -- '--synthetic' > /dev/null; then echo y; else echo n; fi)
|
| 35 |
|
| 36 | ifeq ($(new_nm),y)
|
| 37 | NM := $(NM) --synthetic
|
| 38 | endif
|
| 39 |
|
| 40 |
|
| 41 |
|
| 42 |
|
| 43 | export BITS
|
| 44 |
|
| 45 | ifdef CONFIG_PPC64
|
| 46 | BITS := 64
|
| 47 | else
|
| 48 | BITS := 32
|
| 49 | endif
|
| 50 |
|
| 51 | machine-y = ppc
|
| 52 | machine-$(CONFIG_PPC64) += 64
|
| 53 | machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le
|
| 54 | UTS_MACHINE := $(subst $(space),,$(machine-y))
|
| 55 |
|
| 56 | ifeq ($(CONFIG_PPC64)$(CONFIG_LD_IS_BFD),yy)
|
| 57 |
|
| 58 |
|
| 59 | KBUILD_LDFLAGS_MODULE += --save-restore-funcs
|
| 60 | else
|
| 61 | KBUILD_LDFLAGS_MODULE += $(objtree)/arch/powerpc/lib/crtsavres.o
|
| 62 | endif
|
| 63 |
|
| 64 | ifdef CONFIG_PPC64
|
| 65 | KBUILD_RUSTFLAGS += --target=powerpc64le-unknown-linux-gnu
|
| 66 | KBUILD_RUSTFLAGS += -Ctarget-feature=-mma,-vsx,-hard-float,-altivec
|
| 67 | else
|
| 68 | KBUILD_RUSTFLAGS += --target=powerpc-unknown-linux-gnu
|
| 69 | endif
|
| 70 |
|
| 71 | ifdef CONFIG_CPU_LITTLE_ENDIAN
|
| 72 | KBUILD_CPPFLAGS += -mlittle-endian
|
| 73 | KBUILD_LDFLAGS += -EL
|
| 74 | LDEMULATION := lppc
|
| 75 | GNUTARGET := powerpcle
|
| 76 | MULTIPLEWORD := -mno-multiple
|
| 77 | KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-save-toc-indirect)
|
| 78 | else
|
| 79 | KBUILD_CPPFLAGS += $(call cc-option,-mbig-endian)
|
| 80 | KBUILD_LDFLAGS += -EB
|
| 81 | LDEMULATION := ppc
|
| 82 | GNUTARGET := powerpc
|
| 83 | MULTIPLEWORD := -mmultiple
|
| 84 | endif
|
| 85 |
|
| 86 | ifdef CONFIG_PPC64
|
| 87 | ifndef CONFIG_CC_IS_CLANG
|
| 88 | cflags-$(CONFIG_PPC64_ELF_ABI_V1) += $(call cc-option,-mabi=elfv1)
|
| 89 | cflags-$(CONFIG_PPC64_ELF_ABI_V1) += $(call cc-option,-mcall-aixdesc)
|
| 90 | aflags-$(CONFIG_PPC64_ELF_ABI_V1) += $(call cc-option,-mabi=elfv1)
|
| 91 | aflags-$(CONFIG_PPC64_ELF_ABI_V2) += -mabi=elfv2
|
| 92 | endif
|
| 93 | endif
|
| 94 |
|
| 95 | ifndef CONFIG_CC_IS_CLANG
|
| 96 | cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mno-strict-align
|
| 97 | endif
|
| 98 |
|
| 99 | cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mbig-endian)
|
| 100 | cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian
|
| 101 | aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mbig-endian)
|
| 102 | aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian
|
| 103 |
|
| 104 | ifeq ($(HAS_BIARCH),y)
|
| 105 | KBUILD_CPPFLAGS += -m$(BITS)
|
| 106 | KBUILD_AFLAGS += -m$(BITS)
|
| 107 | KBUILD_LDFLAGS += -m elf$(BITS)$(LDEMULATION)
|
| 108 | endif
|
| 109 |
|
| 110 | LDFLAGS_vmlinux-y := -Bstatic
|
| 111 | LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie --no-dynamic-linker
|
| 112 | LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) += -z notext
|
| 113 | LDFLAGS_vmlinux := $(LDFLAGS_vmlinux-y)
|
| 114 |
|
| 115 | ifdef CONFIG_PPC64
|
| 116 | ifndef CONFIG_PPC_KERNEL_PCREL
|
| 117 |
|
| 118 |
|
| 119 |
|
| 120 |
|
| 121 |
|
| 122 |
|
| 123 |
|
| 124 |
|
| 125 | KBUILD_CFLAGS_MODULE += -mcmodel=large
|
| 126 | endif
|
| 127 | endif
|
| 128 |
|
| 129 | CFLAGS-$(CONFIG_PPC64) := $(call cc-option,-mtraceback=no)
|
| 130 | ifdef CONFIG_PPC64_ELF_ABI_V2
|
| 131 | CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2,$(call cc-option,-mcall-aixdesc))
|
| 132 | else
|
| 133 | ifndef CONFIG_CC_IS_CLANG
|
| 134 | CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1)
|
| 135 | CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcall-aixdesc)
|
| 136 | endif
|
| 137 | endif
|
| 138 | CFLAGS-$(CONFIG_PPC64) += -mcmodel=medium
|
| 139 | CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mno-pointers-to-nested-functions)
|
| 140 | CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mlong-double-128)
|
| 141 |
|
| 142 |
|
| 143 |
|
| 144 | CFLAGS-$(CONFIG_PPC32) := $(call cc-option, -ffixed-r2)
|
| 145 |
|
| 146 |
|
| 147 |
|
| 148 | CFLAGS-$(CONFIG_PPC32) += $(call cc-option, $(MULTIPLEWORD))
|
| 149 |
|
| 150 | CFLAGS-$(CONFIG_PPC32) += $(call cc-option,-mno-readonly-in-sdata)
|
| 151 |
|
| 152 | CC_FLAGS_FPU := $(call cc-option,-mhard-float)
|
| 153 | CC_FLAGS_NO_FPU := $(call cc-option,-msoft-float)
|
| 154 |
|
| 155 | ifdef CONFIG_FUNCTION_TRACER
|
| 156 | ifdef CONFIG_ARCH_USING_PATCHABLE_FUNCTION_ENTRY
|
| 157 | KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY
|
| 158 | ifdef CONFIG_PPC_FTRACE_OUT_OF_LINE
|
| 159 | CC_FLAGS_FTRACE := -fpatchable-function-entry=1
|
| 160 | else
|
| 161 | ifdef CONFIG_DYNAMIC_FTRACE_WITH_CALL_OPS # PPC32 only
|
| 162 | CC_FLAGS_FTRACE := -fpatchable-function-entry=3,1
|
| 163 | else
|
| 164 | CC_FLAGS_FTRACE := -fpatchable-function-entry=2
|
| 165 | endif
|
| 166 | endif
|
| 167 | else
|
| 168 | CC_FLAGS_FTRACE := -pg
|
| 169 | ifdef CONFIG_MPROFILE_KERNEL
|
| 170 | CC_FLAGS_FTRACE += -mprofile-kernel
|
| 171 | endif
|
| 172 | endif
|
| 173 | endif
|
| 174 |
|
| 175 | CFLAGS-$(CONFIG_TARGET_CPU_BOOL) += -mcpu=$(CONFIG_TARGET_CPU)
|
| 176 | AFLAGS-$(CONFIG_TARGET_CPU_BOOL) += -mcpu=$(CONFIG_TARGET_CPU)
|
| 177 |
|
| 178 | CFLAGS-y += $(CONFIG_TUNE_CPU)
|
| 179 |
|
| 180 | asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1)
|
| 181 |
|
| 182 | KBUILD_CPPFLAGS += -I $(srctree)/arch/powerpc $(asinstr)
|
| 183 | KBUILD_AFLAGS += $(AFLAGS-y)
|
| 184 | KBUILD_CFLAGS += $(CC_FLAGS_NO_FPU)
|
| 185 | KBUILD_CFLAGS += $(CFLAGS-y)
|
| 186 |
|
| 187 | CHECKFLAGS += -m$(BITS) -D__powerpc__ -D__powerpc$(BITS)__
|
| 188 | ifdef CONFIG_CPU_BIG_ENDIAN
|
| 189 | CHECKFLAGS += -D__BIG_ENDIAN__
|
| 190 | else
|
| 191 | CHECKFLAGS += -D__LITTLE_ENDIAN__
|
| 192 | endif
|
| 193 |
|
| 194 | ifdef CONFIG_476FPE_ERR46
|
| 195 | KBUILD_LDFLAGS_MODULE += --ppc476-workaround \
|
| 196 | -T $(srctree)/arch/powerpc/platforms/44x/ppc476_modules.lds
|
| 197 | endif
|
| 198 |
|
| 199 |
|
| 200 | ifdef CONFIG_PPC_KERNEL_PREFIXED
|
| 201 | KBUILD_CFLAGS += $(call cc-option,-mprefixed)
|
| 202 | else
|
| 203 | KBUILD_CFLAGS += $(call cc-option,-mno-prefixed)
|
| 204 | endif
|
| 205 | ifdef CONFIG_PPC_KERNEL_PCREL
|
| 206 | KBUILD_CFLAGS += $(call cc-option,-mpcrel)
|
| 207 | else
|
| 208 | KBUILD_CFLAGS += $(call cc-option,-mno-pcrel)
|
| 209 | endif
|
| 210 |
|
| 211 |
|
| 212 | KBUILD_CFLAGS += $(call cc-option,-mno-altivec)
|
| 213 | KBUILD_CFLAGS += $(call cc-option,-mno-vsx)
|
| 214 | KBUILD_CFLAGS += $(call cc-option,-mno-mma)
|
| 215 |
|
| 216 |
|
| 217 |
|
| 218 | KBUILD_CFLAGS += $(call cc-option,-mno-spe)
|
| 219 | KBUILD_CFLAGS += $(call cc-option,-mspe=no)
|
| 220 |
|
| 221 |
|
| 222 | KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
|
| 223 |
|
| 224 |
|
| 225 |
|
| 226 | KBUILD_CFLAGS += $(call cc-option,-mno-string)
|
| 227 |
|
| 228 | KBUILD_AFLAGS += $(aflags-y)
|
| 229 | KBUILD_CFLAGS += $(cflags-y)
|
| 230 |
|
| 231 |
|
| 232 | all: zImage
|
| 233 |
|
| 234 |
|
| 235 | BOOT_TARGETS1 := zImage zImage.initrd uImage
|
| 236 | BOOT_TARGETS2 := zImage% dtbImage% treeImage.% cuImage.% simpleImage.% uImage.%
|
| 237 |
|
| 238 | PHONY += $(BOOT_TARGETS1) $(BOOT_TARGETS2)
|
| 239 |
|
| 240 | boot := arch/powerpc/boot
|
| 241 |
|
| 242 | $(BOOT_TARGETS1): vmlinux
|
| 243 | $(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
|
| 244 | $(BOOT_TARGETS2): vmlinux
|
| 245 | $(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
|
| 246 |
|
| 247 |
|
| 248 | PHONY += bootwrapper_install
|
| 249 | bootwrapper_install:
|
| 250 | $(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
|
| 251 |
|
| 252 | include $(srctree)/scripts/Makefile.defconf
|
| 253 |
|
| 254 | generated_configs += ppc64le_defconfig
|
| 255 | ppc64le_defconfig:
|
| 256 | $(call merge_into_defconfig,ppc64_defconfig,le)
|
| 257 |
|
| 258 | generated_configs += ppc64le_guest_defconfig
|
| 259 | ppc64le_guest_defconfig:
|
| 260 | $(call merge_into_defconfig,ppc64_defconfig,le guest kvm_guest)
|
| 261 |
|
| 262 | generated_configs += ppc64_guest_defconfig
|
| 263 | ppc64_guest_defconfig:
|
| 264 | $(call merge_into_defconfig,ppc64_defconfig,be guest kvm_guest)
|
| 265 |
|
| 266 | generated_configs += pseries_le_defconfig
|
| 267 | pseries_le_defconfig: ppc64le_guest_defconfig
|
| 268 |
|
| 269 | generated_configs += pseries_defconfig
|
| 270 | pseries_defconfig: ppc64le_guest_defconfig
|
| 271 |
|
| 272 | generated_configs += powernv_be_defconfig
|
| 273 | powernv_be_defconfig:
|
| 274 | $(call merge_into_defconfig,powernv_defconfig,be)
|
| 275 |
|
| 276 | generated_configs += mpc85xx_defconfig
|
| 277 | mpc85xx_defconfig:
|
| 278 | $(call merge_into_defconfig,mpc85xx_base.config,\
|
| 279 | 85xx-32bit 85xx-hw fsl-emb-nonhw)
|
| 280 |
|
| 281 | generated_configs += mpc85xx_smp_defconfig
|
| 282 | mpc85xx_smp_defconfig:
|
| 283 | $(call merge_into_defconfig,mpc85xx_base.config,\
|
| 284 | 85xx-32bit 85xx-smp 85xx-hw fsl-emb-nonhw)
|
| 285 |
|
| 286 | generated_configs += corenet32_smp_defconfig
|
| 287 | corenet32_smp_defconfig:
|
| 288 | $(call merge_into_defconfig,corenet_base.config,\
|
| 289 | 85xx-32bit 85xx-smp 85xx-hw fsl-emb-nonhw dpaa)
|
| 290 |
|
| 291 | generated_configs += corenet64_smp_defconfig
|
| 292 | corenet64_smp_defconfig:
|
| 293 | $(call merge_into_defconfig,corenet_base.config,\
|
| 294 | 85xx-64bit 85xx-smp altivec 85xx-hw fsl-emb-nonhw dpaa)
|
| 295 |
|
| 296 | generated_configs += mpc86xx_defconfig
|
| 297 | mpc86xx_defconfig:
|
| 298 | $(call merge_into_defconfig,mpc86xx_base.config,\
|
| 299 | 86xx-hw fsl-emb-nonhw)
|
| 300 |
|
| 301 | generated_configs += mpc86xx_smp_defconfig
|
| 302 | mpc86xx_smp_defconfig:
|
| 303 | $(call merge_into_defconfig,mpc86xx_base.config,\
|
| 304 | 86xx-smp 86xx-hw fsl-emb-nonhw)
|
| 305 |
|
| 306 | generated_configs += ppc32_allmodconfig
|
| 307 | ppc32_allmodconfig:
|
| 308 | $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/book3s_32.config \
|
| 309 | -f $(srctree)/Makefile allmodconfig
|
| 310 |
|
| 311 | generated_configs += ppc44x_allmodconfig
|
| 312 | ppc44x_allmodconfig:
|
| 313 | $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/44x.config \
|
| 314 | -f $(srctree)/Makefile allmodconfig
|
| 315 |
|
| 316 | generated_configs += ppc8xx_allmodconfig
|
| 317 | ppc8xx_allmodconfig:
|
| 318 | $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/8xx.config \
|
| 319 | -f $(srctree)/Makefile allmodconfig
|
| 320 |
|
| 321 | generated_configs += ppc85xx_allmodconfig
|
| 322 | ppc85xx_allmodconfig:
|
| 323 | $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/85xx-32bit.config \
|
| 324 | -f $(srctree)/Makefile allmodconfig
|
| 325 |
|
| 326 | generated_configs += ppc_defconfig
|
| 327 | ppc_defconfig:
|
| 328 | $(call merge_into_defconfig,book3s_32.config,)
|
| 329 |
|
| 330 | generated_configs += ppc64le_allmodconfig
|
| 331 | ppc64le_allmodconfig:
|
| 332 | $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/le.config \
|
| 333 | -f $(srctree)/Makefile allmodconfig
|
| 334 |
|
| 335 | generated_configs += ppc64le_allnoconfig
|
| 336 | ppc64le_allnoconfig:
|
| 337 | $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/ppc64le.config \
|
| 338 | -f $(srctree)/Makefile allnoconfig
|
| 339 |
|
| 340 | generated_configs += ppc64_book3e_allmodconfig
|
| 341 | ppc64_book3e_allmodconfig:
|
| 342 | $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/85xx-64bit.config \
|
| 343 | -f $(srctree)/Makefile allmodconfig
|
| 344 |
|
| 345 | generated_configs += ppc32_randconfig
|
| 346 | ppc32_randconfig:
|
| 347 | $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/32-bit.config \
|
| 348 | -f $(srctree)/Makefile randconfig
|
| 349 |
|
| 350 | generated_configs += ppc64_randconfig
|
| 351 | ppc64_randconfig:
|
| 352 | $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/64-bit.config \
|
| 353 | -f $(srctree)/Makefile randconfig
|
| 354 |
|
| 355 | PHONY += $(generated_configs)
|
| 356 |
|
| 357 | define archhelp
|
| 358 | echo '* zImage - Build default images selected by kernel config'
|
| 359 | echo ' zImage.* - Compressed kernel image (arch/powerpc/boot/zImage.*)'
|
| 360 | echo ' uImage - U-Boot native image format'
|
| 361 | echo ' cuImage.<dt> - Backwards compatible U-Boot image for older'
|
| 362 | echo ' versions which do not support device trees'
|
| 363 | echo ' dtbImage.<dt> - zImage with an embedded device tree blob'
|
| 364 | echo ' simpleImage.<dt> - Firmware independent image.'
|
| 365 | echo ' treeImage.<dt> - Support for older IBM 4xx firmware (not U-Boot)'
|
| 366 | echo ' install - Install kernel using'
|
| 367 | echo ' (your) ~/bin/$(INSTALLKERNEL) or'
|
| 368 | echo ' (distribution) /sbin/$(INSTALLKERNEL) or'
|
| 369 | echo ' install to $$(INSTALL_PATH)'
|
| 370 | echo ' *_defconfig - Select default config from arch/powerpc/configs'
|
| 371 | echo ''
|
| 372 | echo ' Targets with <dt> embed a device tree blob inside the image'
|
| 373 | echo ' These targets support board with firmware that does not'
|
| 374 | echo ' support passing a device tree directly. Replace <dt> with the'
|
| 375 | echo ' name of a dts file from the arch/powerpc/boot/dts/ directory'
|
| 376 | echo ' (minus the .dts extension).'
|
| 377 | echo
|
| 378 | $(foreach cfg,$(generated_configs),
|
| 379 | printf " %-27s - Build for %s\\n" $(cfg) $(subst _defconfig,,$(cfg));)
|
| 380 | endef
|
| 381 |
|
| 382 | PHONY += install
|
| 383 | install:
|
| 384 | $(call cmd,install)
|
| 385 |
|
| 386 | ifeq ($(KBUILD_EXTMOD),)
|
| 387 |
|
| 388 |
|
| 389 |
|
| 390 |
|
| 391 |
|
| 392 |
|
| 393 | prepare: vdso_prepare
|
| 394 | vdso_prepare: prepare0
|
| 395 | $(if $(CONFIG_VDSO32),$(Q)$(MAKE) \
|
| 396 | $(build)=arch/powerpc/kernel/vdso include/generated/vdso32-offsets.h)
|
| 397 | $(if $(CONFIG_PPC64),$(Q)$(MAKE) \
|
| 398 | $(build)=arch/powerpc/kernel/vdso include/generated/vdso64-offsets.h)
|
| 399 | endif
|
| 400 |
|
| 401 | archprepare: checkbin
|
| 402 |
|
| 403 | archheaders:
|
| 404 | $(Q)$(MAKE) $(build)=arch/powerpc/kernel/syscalls all
|
| 405 |
|
| 406 | ifdef CONFIG_STACKPROTECTOR
|
| 407 | prepare: stack_protector_prepare
|
| 408 |
|
| 409 | PHONY += stack_protector_prepare
|
| 410 | stack_protector_prepare: prepare0
|
| 411 | ifdef CONFIG_PPC64
|
| 412 | $(eval KBUILD_CFLAGS += -mstack-protector-guard=tls -mstack-protector-guard-reg=r13 \
|
| 413 | -mstack-protector-guard-offset=$(shell awk '{if ($$2 == "PACA_CANARY") print $$3;}' \
|
| 414 | $(objtree)/include/generated/asm-offsets.h))
|
| 415 | else
|
| 416 | $(eval KBUILD_CFLAGS += -mstack-protector-guard=tls -mstack-protector-guard-reg=r2 \
|
| 417 | -mstack-protector-guard-offset=$(shell awk '{if ($$2 == "TASK_CANARY") print $$3;}' \
|
| 418 | $(objtree)/include/generated/asm-offsets.h))
|
| 419 | endif
|
| 420 | endif
|
| 421 |
|
| 422 | PHONY += checkbin
|
| 423 | checkbin:
|
| 424 | @if test "x${CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT}" = "xy" -a \
|
| 425 | "x${CONFIG_LD_IS_BFD}" = "xy" -a \
|
| 426 | "${CONFIG_LD_VERSION}" = "23700" ; then \
|
| 427 | echo -n '*** binutils 2.37 drops unused section symbols, which recordmcount ' ; \
|
| 428 | echo 'is unable to handle.' ; \
|
| 429 | echo '*** Please use a different binutils version.' ; \
|
| 430 | false ; \
|
| 431 | fi
|