Toolchains

Toolchains for all supported devices.

343 Commits   8 Branches   37 Tags   |
Index: toolchains-1.7.1/build-system/config.mk
===================================================================
--- toolchains-1.7.1/build-system/config.mk	(nonexistent)
+++ toolchains-1.7.1/build-system/config.mk	(revision 343)
@@ -0,0 +1,411 @@
+# include once
+ifndef CONFIG_MK
+
+#######
+####### Constants:
+#######
+
+
+DOWNLOAD_SERVER      = ftp://ftp.radix.pro
+
+WGET_OPTIONS         = -q -N
+
+CACHED_CC_OUTPUT     = /opt/extra/ccache
+
+TOOLCHAINS_BASE_PATH = /opt/toolchains
+
+TOOLCHAINS_VERSION   = 1.0.0
+
+
+# Build machine architrcture:
+
+BUILD_ARCH = x86_64-pc-linux-gnu
+#
+# HOST and BUILD variables should be set up for each makefile.
+# NOTE: the HOST is equal to BUILD because our toolchains work on BUILD machine.
+#
+ HOST = $(BUILD_ARCH)
+BUILD = $(BUILD_ARCH)
+
+
+#######
+####### Standard Available Toolchains:
+#######
+
+#
+# NOTE:
+# ====
+#   Toolchain names defined by 'TOOLCHAIN_...' variables.
+#   Configuration variable names such as HOST_ARCH, HOST_DIR, HOST_PATH should have prefix
+#   which is equal to $(TOOLCHAIN_...) in upper case letters and symbol '-' should be replaced with '_'.
+#   In other words the PREFIX is equal to PREFIX = $(shell echo $(TOOLCHAIN_...) | tr '[a-z-]' '[A-Z_]').
+#
+
+# NOARCH
+TOOLCHAIN_NOARCH = noarch
+
+NOARCH_ARCH = noarch
+NOARCH_DIR  = noarch
+NOARCH_PATH = $(TOOLCHAINS_BASE_PATH)/noarch
+
+
+# HOST
+TOOLCHAIN_HOST = host
+
+HOST_ARCH = $(BUILD_ARCH)
+HOST_DIR  = $(word 1, $(subst -, ,$(BUILD_ARCH)))
+HOST_PATH = $(TOOLCHAINS_BASE_PATH)/$(HOST_DIR)
+
+
+#######
+####### Additional Available Toolchains:
+#######
+
+# All ARM 32-bit series with Newlib
+TOOLCHAIN_ARM32_NEWLIB = arm32-newlib
+
+ARM32_NEWLIB_ARCH = arm-none-eabi
+ARM32_NEWLIB_DIR  = arm-NONE-eabi-newlib
+ARM32_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(ARM32_NEWLIB_DIR)
+###                |---Toolchain-spec-handy-ruler----------------|
+ARM32_NEWLIB_SPEC = All ARM 32-bit series newlib toolchain
+
+
+# AT91SAM7S
+TOOLCHAIN_AT91SAM7S_NEWLIB = at91sam7s-newlib
+
+AT91SAM7S_NEWLIB_ARCH = arm-at91sam7s-eabi
+AT91SAM7S_NEWLIB_DIR  = arm-AT91SAM7S-eabi-newlib
+AT91SAM7S_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(AT91SAM7S_NEWLIB_DIR)
+###                    |---Toolchain-spec-handy-ruler----------------|
+AT91SAM7S_NEWLIB_SPEC = Atmel AT91SAM7S newlib toolchain
+
+
+# IMX6-GLIBC
+TOOLCHAIN_IMX6_GLIBC = imx6-glibc
+
+IMX6_GLIBC_ARCH = arm-imx6-linux-gnueabihf
+IMX6_GLIBC_DIR  = arm-IMX6-linux-glibc
+IMX6_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(IMX6_GLIBC_DIR)
+###              |---Toolchain-spec-handy-ruler----------------|
+IMX6_GLIBC_SPEC = Freescale i.MX6 GNU Libc toolchain
+
+
+# IMX6ULL-GLIBC
+TOOLCHAIN_IMX6ULL_GLIBC = imx6ull-glibc
+
+IMX6ULL_GLIBC_ARCH = arm-imx6ull-linux-gnueabihf
+IMX6ULL_GLIBC_DIR  = arm-IMX6ULL-linux-glibc
+IMX6ULL_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(IMX6ULL_GLIBC_DIR)
+###                 |---Toolchain-spec-handy-ruler----------------|
+IMX6ULL_GLIBC_SPEC = NXP i.MX6ULL GNU Libc toolchain
+
+
+# OMAP543X-GLIBC
+TOOLCHAIN_OMAP543X_GLIBC = omap543x-glibc
+
+OMAP543X_GLIBC_ARCH = arm-omap543x-linux-gnueabihf
+OMAP543X_GLIBC_DIR  = arm-OMAP543X-linux-glibc
+OMAP543X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(OMAP543X_GLIBC_DIR)
+###                  |---Toolchain-spec-handy-ruler----------------|
+OMAP543X_GLIBC_SPEC = Texas OMAP543x GNU Libc toolchain
+
+
+# AM335X-GLIBC
+TOOLCHAIN_AM335X_GLIBC = am335x-glibc
+
+AM335X_GLIBC_ARCH   = arm-am335x-linux-gnueabihf
+AM335X_GLIBC_DIR    = arm-AM335X-linux-glibc
+AM335X_GLIBC_PATH   = $(TOOLCHAINS_BASE_PATH)/$(AM335X_GLIBC_DIR)
+###                  |---Toolchain-spec-handy-ruler----------------|
+AM335X_GLIBC_SPEC   = Texas AM335x GNU Libc toolchain
+
+
+# AllWinner A10-GLIBC
+TOOLCHAIN_A1X_GLIBC = a1x-glibc
+
+A1X_GLIBC_ARCH = arm-a1x-linux-gnueabihf
+A1X_GLIBC_DIR  = arm-A1X-linux-glibc
+A1X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(A1X_GLIBC_DIR)
+###             |---Toolchain-spec-handy-ruler----------------|
+A1X_GLIBC_SPEC = Allwinner A1x GNU Libc toolchain
+
+# AllWinner A20-GLIBC
+TOOLCHAIN_A2X_GLIBC = a2x-glibc
+
+A2X_GLIBC_ARCH = arm-a2x-linux-gnueabihf
+A2X_GLIBC_DIR  = arm-A2X-linux-glibc
+A2X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(A2X_GLIBC_DIR)
+###             |---Toolchain-spec-handy-ruler----------------|
+A2X_GLIBC_SPEC = Allwinner A2x GNU Libc toolchain
+
+
+# AllWinner H3-GLIBC
+TOOLCHAIN_H3_GLIBC = h3-glibc
+
+H3_GLIBC_ARCH = arm-h3-linux-gnueabihf
+H3_GLIBC_DIR  = arm-H3-linux-glibc
+H3_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(H3_GLIBC_DIR)
+###            |---Toolchain-spec-handy-ruler----------------|
+H3_GLIBC_SPEC = Allwinner H3 GNU Libc toolchain
+
+
+# AllWinner H5-NEWLIB
+TOOLCHAIN_H5_NEWLIB = h5-newlib
+
+H5_NEWLIB_ARCH = aarch64-h5-elf
+H5_NEWLIB_DIR  = aarch64-H5-elf-newlib
+H5_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(H5_NEWLIB_DIR)
+###             |---Toolchain-spec-handy-ruler----------------|
+H5_NEWLIB_SPEC = Allwinner H5 newlib toolchain
+
+# AllWinner H5-GLIBC
+TOOLCHAIN_H5_GLIBC = h5-glibc
+
+H5_GLIBC_ARCH = aarch64-h5-linux-gnu
+H5_GLIBC_DIR  = aarch64-H5-linux-glibc
+H5_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(H5_GLIBC_DIR)
+###            |---Toolchain-spec-handy-ruler----------------|
+H5_GLIBC_SPEC = Allwinner H5 GNU Libc toolchain
+
+
+# Amlogic S8XX-GLIBC
+TOOLCHAIN_S8XX_GLIBC = s8xx-glibc
+
+S8XX_GLIBC_ARCH = arm-s8xx-linux-gnueabihf
+S8XX_GLIBC_DIR  = arm-S8XX-linux-glibc
+S8XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(S8XX_GLIBC_DIR)
+###              |---Toolchain-spec-handy-ruler----------------|
+S8XX_GLIBC_SPEC = Amlogic S8xx GNU Libc toolchain
+
+
+# Amlogic S9XX (especially for u-boot firmware)
+TOOLCHAIN_A9XX_NEWLIB = a9xx-newlib
+
+A9XX_NEWLIB_ARCH = arm-a9xx-eabi
+A9XX_NEWLIB_DIR  = arm-A9XX-eabi-newlib
+A9XX_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(A9XX_NEWLIB_DIR)
+###               |---Toolchain-spec-handy-ruler----------------|
+A9XX_NEWLIB_SPEC = Amlogic S9xx Cortex-m3 newlib toolchain
+
+# Amlogic S9XX
+TOOLCHAIN_S9XX_NEWLIB = s9xx-newlib
+
+S9XX_NEWLIB_ARCH = aarch64-s9xx-elf
+S9XX_NEWLIB_DIR  = aarch64-S9XX-elf-newlib
+S9XX_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(S9XX_NEWLIB_DIR)
+###               |---Toolchain-spec-handy-ruler----------------|
+S9XX_NEWLIB_SPEC = Amlogic S9xx newlib toolchain
+
+# Amlogic S9XX-GLIBC
+TOOLCHAIN_S9XX_GLIBC = s9xx-glibc
+
+S9XX_GLIBC_ARCH = aarch64-s9xx-linux-gnu
+S9XX_GLIBC_DIR  = aarch64-S9XX-linux-glibc
+S9XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(S9XX_GLIBC_DIR)
+###              |---Toolchain-spec-handy-ruler----------------|
+S9XX_GLIBC_SPEC = Amlogic S9xx GNU Libc toolchain
+
+# Amlogic A9XX-GLIBC
+TOOLCHAIN_A9XX_GLIBC = a9xx-glibc
+
+A9XX_GLIBC_ARCH = armv8l-a9xx-linux-gnueabihf
+A9XX_GLIBC_DIR  = armv8l-A9XX-linux-glibc
+A9XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(A9XX_GLIBC_DIR)
+###              |---Toolchain-spec-handy-ruler----------------|
+A9XX_GLIBC_SPEC = Amlogic S9xx armv8l GNU Libc toolchain
+
+# Amlogic A311X-GLIBC
+TOOLCHAIN_A311X_GLIBC = a311x-glibc
+
+A311X_GLIBC_ARCH = aarch64-a311x-linux-gnu
+A311X_GLIBC_DIR  = aarch64-A311X-linux-glibc
+A311X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(A311X_GLIBC_DIR)
+###               |---Toolchain-spec-handy-ruler----------------|
+A311X_GLIBC_SPEC = Amlogic A311X GNU Libc toolchain
+
+
+# Rockchip A33XX-NEWLIB (ARMv6-M Cortex-m0)
+TOOLCHAIN_A33XX_NEWLIB = a33xx-newlib
+
+A33XX_NEWLIB_ARCH = arm-a33xx-eabi
+A33XX_NEWLIB_DIR  = arm-A33XX-eabi-newlib
+A33XX_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(A33XX_NEWLIB_DIR)
+###                |---Toolchain-spec-handy-ruler----------------|
+A33XX_NEWLIB_SPEC = Rockchip RK33xx Cortex-m0 newlib toolchain
+
+# Rockchip RK33XX-NEWLIB
+TOOLCHAIN_RK33XX_NEWLIB = rk33xx-newlib
+
+RK33XX_NEWLIB_ARCH = aarch64-rk33xx-elf
+RK33XX_NEWLIB_DIR  = aarch64-RK33XX-elf-newlib
+RK33XX_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(RK33XX_NEWLIB_DIR)
+###                 |---Toolchain-spec-handy-ruler----------------|
+RK33XX_NEWLIB_SPEC = Rockchip RK33xx newlib toolchain
+
+# Rockchip RK33XX-GLIBC
+TOOLCHAIN_RK33XX_GLIBC = rk33xx-glibc
+
+RK33XX_GLIBC_ARCH = aarch64-rk33xx-linux-gnu
+RK33XX_GLIBC_DIR  = aarch64-RK33XX-linux-glibc
+RK33XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(RK33XX_GLIBC_DIR)
+###                |---Toolchain-spec-handy-ruler----------------|
+RK33XX_GLIBC_SPEC = Rockchip RK33xx GNU Libc toolchain
+
+# Rockchip RK339X-GLIBC
+TOOLCHAIN_RK339X_GLIBC = rk339x-glibc
+
+RK339X_GLIBC_ARCH = aarch64-rk339x-linux-gnu
+RK339X_GLIBC_DIR  = aarch64-RK339X-linux-glibc
+RK339X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(RK339X_GLIBC_DIR)
+###                |---Toolchain-spec-handy-ruler----------------|
+RK339X_GLIBC_SPEC = Rockchip RK339x GNU Libc toolchain
+
+# Rockchip A33XX-GLIBC
+TOOLCHAIN_A33XX_GLIBC = a33xx-glibc
+
+A33XX_GLIBC_ARCH = armv8l-a33xx-linux-gnueabihf
+A33XX_GLIBC_DIR  = armv8l-A33XX-linux-glibc
+A33XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(A33XX_GLIBC_DIR)
+###               |---Toolchain-spec-handy-ruler----------------|
+A33XX_GLIBC_SPEC = Rockchip RK33xx armv8l GNU Libc toolchain
+
+
+# Rockchip RK328X-GLIBC
+TOOLCHAIN_RK328X_GLIBC = rk328x-glibc
+
+RK328X_GLIBC_ARCH = arm-rk328x-linux-gnueabihf
+RK328X_GLIBC_DIR  = arm-RK328X-linux-glibc
+RK328X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(RK328X_GLIBC_DIR)
+###                |---Toolchain-spec-handy-ruler----------------|
+RK328X_GLIBC_SPEC = Rockchip RK328x GNU Libc toolchain
+
+
+# JZ47XX-GLIBC
+TOOLCHAIN_JZ47XX_GLIBC = jz47xx-glibc
+
+JZ47XX_GLIBC_ARCH = mipsel-jz47xx-linux-gnu
+JZ47XX_GLIBC_DIR  = mipsel-JZ47XX-linux-glibc
+JZ47XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(JZ47XX_GLIBC_DIR)
+###                |---Toolchain-spec-handy-ruler----------------|
+JZ47XX_GLIBC_SPEC = Ingenic MIPS jz47xx GNU Libc toolchain
+
+
+# P5600-GLIBC
+TOOLCHAIN_P5600_GLIBC = p5600-glibc
+
+P5600_GLIBC_ARCH = mipsel-p5600-linux-gnu
+P5600_GLIBC_DIR  = mipsel-P5600-linux-glibc
+P5600_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(P5600_GLIBC_DIR)
+###               |---Toolchain-spec-handy-ruler----------------|
+P5600_GLIBC_SPEC = Baikal MIPS p5600 core GNU Libc toolchain
+
+# BaikalElectronics M1000-NEWLIB
+TOOLCHAIN_M1000_NEWLIB = m1000-newlib
+
+M1000_NEWLIB_ARCH = aarch64-m1000-elf
+M1000_NEWLIB_DIR  = aarch64-M1000-elf-newlib
+M1000_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(M1000_NEWLIB_DIR)
+###                |---Toolchain-spec-handy-ruler----------------|
+M1000_NEWLIB_SPEC = BaikalElectronics M1000 newlib toolchain
+
+# BaikalElectronics M1000-GLIBC
+TOOLCHAIN_M1000_GLIBC = m1000-glibc
+
+M1000_GLIBC_ARCH = aarch64-m1000-linux-gnu
+M1000_GLIBC_DIR  = aarch64-M1000-linux-glibc
+M1000_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(M1000_GLIBC_DIR)
+###               |---Toolchain-spec-handy-ruler----------------|
+M1000_GLIBC_SPEC = BaikalElectronics M1000 GNU Libc toolchain
+
+
+# POWER8-GLIBC
+TOOLCHAIN_POWER8_GLIBC = power8-glibc
+
+POWER8_GLIBC_ARCH = ppc64-power8-linux-gnu
+POWER8_GLIBC_DIR  = ppc64-POWER8-linux-glibc
+POWER8_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(POWER8_GLIBC_DIR)
+###                |---Toolchain-spec-handy-ruler----------------|
+POWER8_GLIBC_SPEC = Openpower POWER8 MSB GNU Libc toolchain
+
+# POWER9-GLIBC
+TOOLCHAIN_POWER9_GLIBC = power9-glibc
+
+POWER9_GLIBC_ARCH = ppc64-power9-linux-gnu
+POWER9_GLIBC_DIR  = ppc64-POWER9-linux-glibc
+POWER9_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(POWER9_GLIBC_DIR)
+###                |---Toolchain-spec-handy-ruler----------------|
+POWER9_GLIBC_SPEC = Openpower POWER9 MSB GNU Libc toolchain
+
+
+# POWER8LE-GLIBC
+TOOLCHAIN_POWER8LE_GLIBC = power8le-glibc
+
+POWER8LE_GLIBC_ARCH = ppc64le-power8-linux-gnu
+POWER8LE_GLIBC_DIR  = ppc64le-POWER8-linux-glibc
+POWER8LE_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(POWER8LE_GLIBC_DIR)
+###                  |---Toolchain-spec-handy-ruler----------------|
+POWER8LE_GLIBC_SPEC = Openpower POWER8 LSB GNU Libc toolchain
+
+# POWER9LE-GLIBC
+TOOLCHAIN_POWER9LE_GLIBC = power9le-glibc
+
+POWER9LE_GLIBC_ARCH = ppc64le-power9-linux-gnu
+POWER9LE_GLIBC_DIR  = ppc64le-POWER9-linux-glibc
+POWER9LE_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(POWER9LE_GLIBC_DIR)
+###                  |---Toolchain-spec-handy-ruler----------------|
+POWER9LE_GLIBC_SPEC = Openpower POWER9 LSB GNU Libc toolchain
+
+
+# All RISC-V 32,64-bit series with Newlib
+TOOLCHAIN_RISCV64_NEWLIB = riscv64-newlib
+
+RISCV64_NEWLIB_ARCH = riscv64-none-elf
+RISCV64_NEWLIB_DIR  = riscv64-NONE-elf-newlib
+RISCV64_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(RISCV64_NEWLIB_DIR)
+###                  |---Toolchain-spec-handy-ruler----------------|
+RISCV64_NEWLIB_SPEC = All RISC-V 32,64-bit series newlib toolchain
+
+# RISCV64-GLIBC
+TOOLCHAIN_RISCV64_GLIBC = riscv64-glibc
+
+RISCV64_GLIBC_ARCH = riscv64-rv64gc-linux-gnu
+RISCV64_GLIBC_DIR  = riscv64-RV64GC-linux-glibc
+RISCV64_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(RISCV64_GLIBC_DIR)
+###                 |---Toolchain-spec-handy-ruler----------------|
+RISCV64_GLIBC_SPEC = RISC-V 64-bit LSB GNU Libc toolchain
+
+
+# I586-GLIBC
+TOOLCHAIN_I586_GLIBC = i586-glibc
+
+I586_GLIBC_ARCH = i586-radix-linux-gnu
+I586_GLIBC_DIR  = i586-PC-linux-glibc
+I586_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(I586_GLIBC_DIR)
+###              |---Toolchain-spec-handy-ruler----------------|
+I586_GLIBC_SPEC = Intel i586 GNU Libc toolchain
+
+
+# I686-GLIBC
+TOOLCHAIN_I686_GLIBC = i686-glibc
+
+I686_GLIBC_ARCH = i686-radix-linux-gnu
+I686_GLIBC_DIR  = i686-PC-linux-glibc
+I686_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(I686_GLIBC_DIR)
+###              |---Toolchain-spec-handy-ruler----------------|
+I686_GLIBC_SPEC = Intel i686 GNU Libc toolchain
+
+
+# X86_64-GLIBC
+TOOLCHAIN_X86_64_GLIBC = x86_64-glibc
+
+X86_64_GLIBC_ARCH = x86_64-radix-linux-gnu
+X86_64_GLIBC_DIR  = x86_64-PC-linux-glibc
+X86_64_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(X86_64_GLIBC_DIR)
+###                |---Toolchain-spec-handy-ruler----------------|
+X86_64_GLIBC_SPEC = Intel x86_64 GNU Libc toolchain
+
+
+
+CONFIG_MK=1
+endif
Index: toolchains-1.7.1/build-system/targets-config.mk.template
===================================================================
--- toolchains-1.7.1/build-system/targets-config.mk.template	(nonexistent)
+++ toolchains-1.7.1/build-system/targets-config.mk.template	(revision 343)
@@ -0,0 +1,113 @@
+
+# host
+BUILD_HOST = true
+
+
+# arm-none-eabi-newlib:
+BUILD_ARM32_NEWLIB = true
+
+# a33xx-newlib:
+BUILD_A33XX_NEWLIB = true
+
+# a9xx-newlib:
+BUILD_A9XX_NEWLIB = true
+
+# h5-newlib:
+BUILD_H5_NEWLIB = true
+
+# s9xx-newlib:
+BUILD_S9XX_NEWLIB = true
+
+# rk33xx-newlib:
+BUILD_RK33XX_NEWLIB = true
+
+# m1000-newlib:
+BUILD_M1000_NEWLIB = true
+
+# at91sam7s-newlib:
+BUILD_AT91SAM7S_NEWLIB = true
+
+# riscv64-none-elf-newlib:
+BUILD_RISCV64_NEWLIB = true
+
+
+# a1x-glibc:
+BUILD_A1X_GLIBC = true
+
+# a2x-glibc:
+BUILD_A2X_GLIBC = true
+
+# h3-glibc:
+BUILD_H3_GLIBC = true
+
+# h5-glibc:
+BUILD_H5_GLIBC = true
+
+# imx6-glibc:
+BUILD_IMX6_GLIBC = true
+
+# imx6ull-glibc:
+BUILD_IMX6ULL_GLIBC = true
+
+# jz47xx-glibc:
+BUILD_JZ47XX_GLIBC = true
+
+# p5600-glibc:
+BUILD_P5600_GLIBC = true
+
+# m1000-glibc:
+BUILD_M1000_GLIBC = true
+
+# omap543x-glibc:
+BUILD_OMAP543X_GLIBC = true
+
+# am335x-glibc:
+BUILD_AM335X_GLIBC = true
+
+# rk328x-glibc:
+BUILD_RK328X_GLIBC = true
+
+# s8xx-glibc:
+BUILD_S8XX_GLIBC = true
+
+# s9xx-glibc:
+BUILD_S9XX_GLIBC = true
+
+# a9xx-glibc:
+BUILD_A9XX_GLIBC = true
+
+# a311x-glibc:
+BUILD_A311X_GLIBC = true
+
+# rk33xx-glibc:
+BUILD_RK33XX_GLIBC = true
+
+# rk339x-glibc:
+BUILD_RK339X_GLIBC = true
+
+# a33xx-glibc:
+BUILD_A33XX_GLIBC = true
+
+# power8-glibc:
+BUILD_POWER8_GLIBC = true
+
+# power9-glibc:
+BUILD_POWER9_GLIBC = true
+
+# power8le-glibc:
+BUILD_POWER8LE_GLIBC = true
+
+# power9le-glibc:
+BUILD_POWER9LE_GLIBC = true
+
+# riscv64-glibc
+BUILD_RISCV64_GLIBC = true
+
+# i586-glibc:
+BUILD_I586_GLIBC = true
+
+# i686-glibc:
+BUILD_I686_GLIBC = true
+
+# x86_64-glibc:
+BUILD_X86_64_GLIBC = true
Index: toolchains-1.7.1/build-system/.bs-svnignore
===================================================================
--- toolchains-1.7.1/build-system/.bs-svnignore	(nonexistent)
+++ toolchains-1.7.1/build-system/.bs-svnignore	(revision 343)
@@ -0,0 +1,16 @@
+
+# Target bin dirs
+etc
+gnattools
+sbin
+
+# Build system config files
+targets-config.mk
+
+# Target build dirs
+.host
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
Index: toolchains-1.7.1/build-system/3pp/dialog/1.3-20210621/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/dialog/1.3-20210621/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/dialog/1.3-20210621/Makefile	(revision 343)
@@ -0,0 +1,56 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_HOST)
+
+include ../../../../build-system/config.mk
+
+SOURCE_REQUIRES = build-system/3pp/sources/packages/dialog
+
+
+# ======= __END_OF_REQUIRES__ =======
+
+
+tar_gz_archive  = $(BUILDSYSTEM)/3pp/sources/packages/dialog/dialog-1.3-20210621.tgz
+src_dir         = dialog-1.3-20210621
+build_dir       = $(TARGET_BUILD_DIR)/built
+
+src_done        = $(TARGET_BUILD_DIR)/.source-done
+SRC_DIR         = $(TARGET_BUILD_DIR)/dialog-1.3-20210621
+SRC_ARCHIVE     = $(tar_gz_archive)
+
+DIALOGRC        = $(BUILDSYSTEM)/3pp/sources/packages/dialog/dialogrc
+
+PATCHES = PATCHES
+
+build_target    = $(TARGET_BUILD_DIR)/.built
+install_target  = $(TARGET_BUILD_DIR)/.installed
+
+environment     =
+extra_configure_switches  = --libdir=/usr/lib
+extra_configure_switches += --mandir=/usr/share/man
+extra_configure_switches += --without-shared
+extra_configure_switches += --with-ncursesw
+
+BUILD_TARGETS = $(install_target)
+
+include ../../../../build-system/core.mk
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	@touch $@
+
+$(build_target): $(src_done)
+	@mkdir -p $(build_dir)
+	@cd $(build_dir) && $(environment) ../$(src_dir)/configure \
+	  --prefix=/ \
+	  $(extra_configure_switches)
+	@$(environment) $(MAKE) -C $(build_dir) all
+	@touch $@
+
+$(install_target): $(build_target)
+	@echo -e "\n======= Installing DIALOG binary =======\n"
+	@mkdir -p $(BUILDSYSTEM)/{etc,sbin} && \
+	  cp -a $(DIALOGRC) $(BUILDSYSTEM)/etc && \
+	  cp -a $(build_dir)/dialog $(BUILDSYSTEM)/sbin && \
+	  echo "DIALOG := $(BUILDSYSTEM)/sbin/dialog" >> $(BUILDSYSTEM)/sbin/.config
+	@touch $@
Index: toolchains-1.7.1/build-system/3pp/dialog/1.3-20210621/PATCHES
===================================================================
--- toolchains-1.7.1/build-system/3pp/dialog/1.3-20210621/PATCHES	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/dialog/1.3-20210621/PATCHES	(revision 343)
@@ -0,0 +1,2 @@
+
+../../sources/packages/dialog/patches/dialog-1.3-20210621.patch -p0
Index: toolchains-1.7.1/build-system/3pp/dialog/1.3-20210621
===================================================================
--- toolchains-1.7.1/build-system/3pp/dialog/1.3-20210621	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/dialog/1.3-20210621	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/dialog/1.3-20210621
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/gnattools/11.2.0/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/gnattools/11.2.0/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/gnattools/11.2.0/Makefile	(revision 343)
@@ -0,0 +1,99 @@
+
+COMPONENT_TARGETS  = $(TOOLCHAIN_HOST)
+
+include ../../../../build-system/config.mk
+
+
+SOURCE_REQUIRES  = build-system/3pp/sources/GNU
+SOURCE_REQUIRES += build-system/3pp/sources/inria
+
+# ======= __END_OF_REQUIRES__ =======
+
+tar_xz_archive        = $(BUILDSYSTEM)/3pp/sources/GNU/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz
+tar_xz_archive_gmp    = $(BUILDSYSTEM)/3pp/sources/GNU/gmp/gmp-6.2.1.tar.xz
+tar_xz_archive_mpfr   = $(BUILDSYSTEM)/3pp/sources/GNU/mpfr/mpfr-4.1.0.tar.xz
+tar_gz_archive_mpc    = $(BUILDSYSTEM)/3pp/sources/GNU/mpc/mpc-1.2.1.tar.gz
+tar_xz_archive_isl    = $(BUILDSYSTEM)/3pp/sources/inria/isl/isl-0.24.tar.xz
+SRC_ARCHIVE           = $(tar_xz_archive)
+SRC_DIR               = $(TARGET_BUILD_DIR)/gcc-11.2.0
+src_dir_name          = gcc-11.2.0
+src_done              = $(TARGET_BUILD_DIR)/.source-done
+gmp_src_done          = $(TARGET_BUILD_DIR)/.gmp-source-done
+mpfr_src_done         = $(TARGET_BUILD_DIR)/.mpfr-source-done
+mpc_src_done          = $(TARGET_BUILD_DIR)/.mpc-source-done
+isl_src_done          = $(TARGET_BUILD_DIR)/.isl-source-done
+
+PATCHES        = PATCHES
+
+build_dir             = $(TARGET_BUILD_DIR)/build
+
+
+build_target   = $(TARGET_BUILD_DIR)/.built
+install_target = $(TARGET_BUILD_DIR)/.installed
+
+
+BUILD_TARGETS  = $(build_target)
+BUILD_TARGETS += $(install_target)
+
+
+include ../../../../build-system/core.mk
+
+
+JOBS = -j$(NUMPROCS)
+
+environment  = CC="$(CCACHE)/usr/bin/gcc"
+environment += CC_FOR_BUILD="$(CCACHE)/usr/bin/gcc"
+environment += CXX_FOR_BUILD="$(CCACHE)/usr/bin/g++"
+
+
+GNATTOOLS_DEST_DIR = $(BUILDSYSTEM)/gnattools/11.2.0/usr
+
+extra_configure_switches  = --disable-bootstrap
+extra_configure_switches += --enable-languages=c,c++,ada
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	@touch $@
+
+$(gmp_src_done): $(src_done)
+	@echo "Expanding $(tar_xz_archive_gmp)"
+	@tar xJf $(tar_xz_archive_gmp) -C $(TARGET_BUILD_DIR)
+	@cd $(SRC_DIR); ln -sf ../gmp-6.2.1 gmp
+	@touch $@
+
+$(mpfr_src_done): $(src_done)
+	@echo "Expanding $(tar_xz_archive_mpfr)"
+	@tar xJf $(tar_xz_archive_mpfr) -C $(TARGET_BUILD_DIR)
+	@cd $(SRC_DIR); ln -sf ../mpfr-4.1.0 mpfr
+	@touch $@
+
+$(mpc_src_done): $(src_done)
+	@echo "Expanding $(tar_gz_archive_mpc)"
+	@tar xzf $(tar_gz_archive_mpc) -C $(TARGET_BUILD_DIR)
+	@cd $(SRC_DIR); ln -sf ../mpc-1.2.1 mpc
+	@touch $@
+
+$(isl_src_done): $(src_done)
+	@echo "Expanding $(tar_xz_archive_isl)"
+	@tar xJf $(tar_xz_archive_isl) -C $(TARGET_BUILD_DIR)
+	@cd $(SRC_DIR); ln -sf ../isl-0.24 isl
+	@touch $@
+
+$(build_target): $(src_done) $(gmp_src_done) $(mpfr_src_done) $(mpc_src_done) $(isl_src_done)
+	@mkdir -p $(build_dir)
+	@cd $(build_dir) && $(environment) ../$(src_dir_name)/configure \
+	  --prefix=$(GNATTOOLS_DEST_DIR)                  \
+	  --build=$(shell $(BUILDSYSTEM)/canonical-build) \
+	  --datadir=$(GNATTOOLS_DEST_DIR)/share           \
+	  --infodir=$(GNATTOOLS_DEST_DIR)/share/info      \
+	  --mandir=$(GNATTOOLS_DEST_DIR)/share/man        \
+	  $(extra_configure_switches)
+	@cd $(build_dir) && make $(JOBS)
+	@touch $@
+
+$(install_target): $(build_target)
+	@cd $(build_dir) && make install
+	@rm -f $(GNATTOOLS_DEST_DIR)/share/info/dir
+	@touch $@
Index: toolchains-1.7.1/build-system/3pp/gnattools/11.2.0/PATCHES
===================================================================
Index: toolchains-1.7.1/build-system/3pp/gnattools/11.2.0
===================================================================
--- toolchains-1.7.1/build-system/3pp/gnattools/11.2.0	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/gnattools/11.2.0	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/gnattools/11.2.0
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/GNU/gcc/gcc-11.2.0/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU/gcc/gcc-11.2.0/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU/gcc/gcc-11.2.0/Makefile	(revision 343)
@@ -0,0 +1,39 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+include ../../../../../../build-system/config.mk
+
+url         = $(DOWNLOAD_SERVER)/sources/GNU/gcc/gcc-$(version)
+
+version     = 11.2.0
+
+tarballs    = $(addsuffix .tar.xz, $(addprefix gcc-, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+include ../../../../../../build-system/core.mk
+
+.PHONY: download_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: toolchains-1.7.1/build-system/3pp/sources/GNU/gcc/gcc-11.2.0
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU/gcc/gcc-11.2.0	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU/gcc/gcc-11.2.0	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources/GNU/gcc/gcc-11.2.0
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/GNU/gcc/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU/gcc/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU/gcc/Makefile	(revision 343)
@@ -0,0 +1,14 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+SOURCE_REQUIRES += ALL_DIRS
+
+# ======= __END_OF_REQUIRES__ =======
+
+include ../../../../../build-system/core.mk
+
+
+download_clean:
+	@true
+
+.PHONY: download_clean
Index: toolchains-1.7.1/build-system/3pp/sources/GNU/gcc
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU/gcc	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU/gcc	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources/GNU/gcc
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/GNU/gmp/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU/gmp/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU/gmp/Makefile	(revision 343)
@@ -0,0 +1,39 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+include ../../../../../build-system/config.mk
+
+url         = $(DOWNLOAD_SERVER)/sources/GNU/gmp
+
+versions    = 6.2.1
+
+tarballs    = $(addsuffix .tar.xz, $(addprefix gmp-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+include ../../../../../build-system/core.mk
+
+.PHONY: download_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: toolchains-1.7.1/build-system/3pp/sources/GNU/gmp
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU/gmp	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU/gmp	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources/GNU/gmp
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/GNU/mpc/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU/mpc/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU/mpc/Makefile	(revision 343)
@@ -0,0 +1,39 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+include ../../../../../build-system/config.mk
+
+url         = $(DOWNLOAD_SERVER)/sources/GNU/mpc
+
+versions    = 1.2.1
+
+tarballs    = $(addsuffix .tar.gz, $(addprefix mpc-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+include ../../../../../build-system/core.mk
+
+.PHONY: download_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: toolchains-1.7.1/build-system/3pp/sources/GNU/mpc
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU/mpc	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU/mpc	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources/GNU/mpc
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/GNU/mpfr/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU/mpfr/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU/mpfr/Makefile	(revision 343)
@@ -0,0 +1,39 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+include ../../../../../build-system/config.mk
+
+url         = $(DOWNLOAD_SERVER)/sources/GNU/mpfr
+
+versions    = 4.1.0
+
+tarballs    = $(addsuffix .tar.xz, $(addprefix mpfr-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+include ../../../../../build-system/core.mk
+
+.PHONY: download_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: toolchains-1.7.1/build-system/3pp/sources/GNU/mpfr
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU/mpfr	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU/mpfr	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources/GNU/mpfr
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/GNU/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU/Makefile	(revision 343)
@@ -0,0 +1,14 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+SOURCE_REQUIRES += ALL_DIRS
+
+# ======= __END_OF_REQUIRES__ =======
+
+include ../../../../build-system/core.mk
+
+
+download_clean:
+	@true
+
+.PHONY: download_clean
Index: toolchains-1.7.1/build-system/3pp/sources/GNU
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/GNU	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/GNU	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources/GNU
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/inria/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/inria/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/inria/Makefile	(revision 343)
@@ -0,0 +1,14 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+SOURCE_REQUIRES += ALL_DIRS
+
+# ======= __END_OF_REQUIRES__ =======
+
+include ../../../../build-system/core.mk
+
+
+download_clean:
+	@true
+
+.PHONY: download_clean
Index: toolchains-1.7.1/build-system/3pp/sources/inria/isl/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/inria/isl/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/inria/isl/Makefile	(revision 343)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+
+include ../../../../../build-system/config.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/packages/l/isl
+
+versions    = 0.24
+pkg_name    = isl
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: toolchains-1.7.1/build-system/3pp/sources/inria/isl
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/inria/isl	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/inria/isl	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources/inria/isl
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/inria
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/inria	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/inria	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources/inria
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/patches/README
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog/patches/README	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog/patches/README	(revision 343)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+   dialog-1.3-20210621.patch   - Some enhance the appearance of dialogs.
+
+ * end */
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/patches
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog/patches	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog/patches	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/patches
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog/Makefile	(revision 343)
@@ -0,0 +1,56 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+
+include ../../../../../build-system/config.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/packages/a/dialog
+
+versions    = 1.3-20210621
+pkgname     = dialog
+suffix      = tgz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+patches     = $(CURDIR)/patches/dialog-1.3-20210621.patch
+
+.NOTPARALLEL: $(patches)
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s) $(patches)
+
+
+include ../../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+$(patches): $(sha1s)
+	@echo -e "\n======= Create Patches =======\n" ; \
+	 ( cd create-1.3-20210621-patch ; ./create.patch.sh ) ; \
+	 echo -e "\n"
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s) $(patches)
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/create.patch.sh
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/create.patch.sh	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/create.patch.sh	(revision 343)
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+VERSION=1.3-20210621
+
+tar --files-from=file.list -xzvf ../dialog-$VERSION.tgz
+mv dialog-$VERSION dialog-$VERSION-orig
+
+cp -rf ./dialog-$VERSION-new ./dialog-$VERSION
+
+diff --unified -Nr  dialog-$VERSION-orig  dialog-$VERSION > dialog-$VERSION.patch
+
+mv dialog-$VERSION.patch ../patches
+
+rm -rf ./dialog-$VERSION
+rm -rf ./dialog-$VERSION-orig

Property changes on: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/checklist.c
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/checklist.c	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/checklist.c	(revision 343)
@@ -0,0 +1,702 @@
+/*
+ *  $Id: checklist.c,v 1.167 2020/11/23 00:37:47 tom Exp $
+ *
+ *  checklist.c -- implements the checklist box
+ *
+ *  Copyright 2000-2019,2020	Thomas E. Dickey
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License, version 2.1
+ *  as published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to
+ *	Free Software Foundation, Inc.
+ *	51 Franklin St., Fifth Floor
+ *	Boston, MA 02110, USA.
+ *
+ *  An earlier version of this program lists as authors:
+ *	Savio Lam (lam836@cs.cuhk.hk)
+ *	Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension
+ *	Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two
+ */
+
+#include <dialog.h>
+#include <dlg_keys.h>
+
+#define MIN_HIGH  4
+
+typedef struct {
+    /* the outer-window */
+    WINDOW *dialog;
+    int box_y;
+    int box_x;
+    int check_x;
+    int item_x;
+    int checkflag;
+    int use_height;
+    int use_width;
+    /* the inner-window */
+    WINDOW *list;
+    DIALOG_LISTITEM *items;
+    int item_no;
+    const char *states;
+} ALL_DATA;
+
+/*
+ * Print list item.  The 'selected' parameter is true if 'choice' is the
+ * current item.  That one is colored differently from the other items.
+ */
+static void
+print_item(ALL_DATA * data,
+	   WINDOW *win,
+	   DIALOG_LISTITEM * item,
+	   const char *states,
+	   int choice,
+	   int selected)
+{
+    chtype save = dlg_get_attrs(win);
+    int i;
+    bool both = (!dialog_vars.no_tags && !dialog_vars.no_items);
+    bool first = TRUE;
+    int climit = (getmaxx(win) - data->check_x + 1);
+    const char *show = (dialog_vars.no_items
+			? item->name
+			: item->text);
+
+    /* Clear 'residue' of last item */
+    dlg_attrset(win, menubox_attr);
+    (void) wmove(win, choice, 0);
+    for (i = 0; i < data->use_width; i++)
+	(void) waddch(win, ' ');
+
+    (void) wmove(win, choice, data->check_x);
+    dlg_attrset(win, selected ? check_selected_attr : check_attr);
+    (void) wprintw(win,
+		   (data->checkflag == FLAG_CHECK) ? "[%c]" : "(%c)",
+		   states[item->state]);
+    dlg_attrset(win, menubox_attr);
+    (void) waddch(win, ' ');
+
+    if (both) {
+	dlg_print_listitem(win, item->name, climit, first, selected);
+	first = FALSE;
+    }
+
+    (void) wmove(win, choice, data->item_x);
+    dlg_print_listitem(win, show, climit, first, selected);
+
+    if (selected) {
+	dlg_item_help(item->help);
+    }
+    dlg_attrset(win, save);
+}
+
+static void
+print_list(ALL_DATA * data, int choice, int scrollamt, int max_choice)
+{
+    int i;
+    int cur_y, cur_x;
+
+    getyx(data->dialog, cur_y, cur_x);
+    for (i = 0; i < max_choice; i++) {
+	print_item(data,
+		   data->list,
+		   &data->items[i + scrollamt],
+		   data->states,
+		   i, i == choice);
+    }
+    (void) wnoutrefresh(data->list);
+
+    dlg_draw_scrollbar(data->dialog,
+		       (long) (scrollamt),
+		       (long) (scrollamt),
+		       (long) (scrollamt + max_choice),
+		       (long) (data->item_no),
+		       data->box_x + data->check_x,
+		       data->box_x + data->use_width,
+		       data->box_y,
+		       data->box_y + data->use_height + 1,
+		       menubox_border2_attr,
+		       menubox_border_attr);
+
+    (void) wmove(data->dialog, cur_y, cur_x);
+}
+
+static bool
+check_hotkey(DIALOG_LISTITEM * items, int choice)
+{
+    bool result = FALSE;
+
+    if (dlg_match_char(dlg_last_getc(),
+		       (dialog_vars.no_tags
+			? items[choice].text
+			: items[choice].name))) {
+	result = TRUE;
+    }
+    return result;
+}
+
+/*
+ * This is an alternate interface to 'checklist' which allows the application
+ * to read the list item states back directly without putting them in the
+ * output buffer.  It also provides for more than two states over which the
+ * check/radio box can display.
+ */
+int
+dlg_checklist(const char *title,
+	      const char *cprompt,
+	      int height,
+	      int width,
+	      int list_height,
+	      int item_no,
+	      DIALOG_LISTITEM * items,
+	      const char *states,
+	      int flag,
+	      int *current_item)
+{
+    /* *INDENT-OFF* */
+    static DLG_KEYS_BINDING binding[] = {
+	HELPKEY_BINDINGS,
+	ENTERKEY_BINDINGS,
+	DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ),
+	DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ),
+	DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ),
+	DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_LEFT ),
+	DLG_KEYS_DATA( DLGK_ITEM_FIRST, KEY_HOME ),
+	DLG_KEYS_DATA( DLGK_ITEM_LAST,	KEY_END ),
+	DLG_KEYS_DATA( DLGK_ITEM_LAST,	KEY_LL ),
+	DLG_KEYS_DATA( DLGK_ITEM_NEXT,	'+' ),
+	DLG_KEYS_DATA( DLGK_ITEM_NEXT,	KEY_DOWN ),
+	DLG_KEYS_DATA( DLGK_ITEM_NEXT,  CHR_NEXT ),
+	DLG_KEYS_DATA( DLGK_ITEM_PREV,	'-' ),
+	DLG_KEYS_DATA( DLGK_ITEM_PREV,	KEY_UP ),
+	DLG_KEYS_DATA( DLGK_ITEM_PREV,  CHR_PREVIOUS ),
+	DLG_KEYS_DATA( DLGK_PAGE_NEXT,	KEY_NPAGE ),
+	DLG_KEYS_DATA( DLGK_PAGE_NEXT,	DLGK_MOUSE(KEY_NPAGE) ),
+	DLG_KEYS_DATA( DLGK_PAGE_PREV,	KEY_PPAGE ),
+	DLG_KEYS_DATA( DLGK_PAGE_PREV,	DLGK_MOUSE(KEY_PPAGE) ),
+	TOGGLEKEY_BINDINGS,
+	END_KEYS_BINDING
+    };
+    /* *INDENT-ON* */
+
+#ifdef KEY_RESIZE
+    int old_height = height;
+    int old_width = width;
+#endif
+    ALL_DATA all;
+    int i, j, key2, found, x, y, cur_x, cur_y;
+    int key, fkey;
+    int button = dialog_state.visit_items ? -1 : dlg_default_button();
+    int choice = dlg_default_listitem(items);
+    int scrollamt = 0;
+    int max_choice;
+    int use_width, list_width, name_width, text_width;
+    int result = DLG_EXIT_UNKNOWN;
+    int num_states;
+    WINDOW *dialog;
+    char *prompt;
+    const char **buttons = dlg_ok_labels();
+    const char *widget_name;
+
+    DLG_TRACE(("# %s args:\n", flag ? "checklist" : "radiolist"));
+    DLG_TRACE2S("title", title);
+    DLG_TRACE2S("message", cprompt);
+    DLG_TRACE2N("height", height);
+    DLG_TRACE2N("width", width);
+    DLG_TRACE2N("lheight", list_height);
+    DLG_TRACE2N("llength", item_no);
+    /* FIXME dump the items[][] too */
+    DLG_TRACE2S("states", states);
+    DLG_TRACE2N("flag", flag);
+    DLG_TRACE2N("current", *current_item);
+
+    dialog_state.plain_buttons = TRUE;
+
+    memset(&all, 0, sizeof(all));
+    all.items = items;
+    all.item_no = item_no;
+
+    dlg_does_output();
+
+    /*
+     * If this is a radiobutton list, ensure that no more than one item is
+     * selected initially.  Allow none to be selected, since some users may
+     * wish to provide this flavor.
+     */
+    if (flag == FLAG_RADIO) {
+	bool first = TRUE;
+
+	for (i = 0; i < item_no; i++) {
+	    if (items[i].state) {
+		if (first) {
+		    first = FALSE;
+		} else {
+		    items[i].state = 0;
+		}
+	    }
+	}
+	widget_name = "radiolist";
+    } else {
+	widget_name = "checklist";
+    }
+#ifdef KEY_RESIZE
+  retry:
+#endif
+
+    prompt = dlg_strclone(cprompt);
+    dlg_tab_correct_str(prompt);
+
+    all.use_height = list_height;
+    use_width = dlg_calc_list_width(item_no, items) + 10;
+    use_width = MAX(26, use_width);
+    if (all.use_height == 0) {
+	/* calculate height without items (4) */
+	dlg_auto_size(title, prompt, &height, &width, MIN_HIGH, use_width);
+	dlg_calc_listh(&height, &all.use_height, item_no);
+    } else {
+	dlg_auto_size(title, prompt,
+		      &height, &width,
+		      MIN_HIGH + all.use_height, use_width);
+    }
+    dlg_button_layout(buttons, &width);
+    dlg_print_size(height, width);
+    dlg_ctl_size(height, width);
+
+    /* we need at least two states */
+    if (states == 0 || strlen(states) < 2)
+	states = " *";
+    num_states = (int) strlen(states);
+    all.states = states;
+
+    all.checkflag = flag;
+
+    x = dlg_box_x_ordinate(width);
+    y = dlg_box_y_ordinate(height);
+
+    dialog = dlg_new_window(height, width, y, x);
+    all.dialog = dialog;
+    dlg_register_window(dialog, widget_name, binding);
+    dlg_register_buttons(dialog, widget_name, buttons);
+
+    dlg_mouse_setbase(x, y);
+
+    dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr);
+    dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr);
+    dlg_draw_title(dialog, title);
+
+    dlg_attrset(dialog, dialog_attr);
+    dlg_print_autowrap(dialog, prompt, height, width);
+
+    all.use_width = width - 6;
+    getyx(dialog, cur_y, cur_x);
+    all.box_y = cur_y + 1;
+    all.box_x = (width - all.use_width) / 2 - 1;
+
+    /*
+     * After displaying the prompt, we know how much space we really have.
+     * Limit the list to avoid overwriting the ok-button.
+     */
+    all.use_height = height - MIN_HIGH - cur_y;
+    if (all.use_height <= 0)
+	all.use_height = 1;
+
+    max_choice = MIN(all.use_height, item_no);
+    max_choice = MAX(max_choice, 1);
+
+    /* create new window for the list */
+    all.list = dlg_sub_window(dialog, all.use_height, all.use_width,
+			      y + all.box_y + 1, x + all.box_x + 1);
+
+    /* draw a box around the list items */
+    dlg_draw_box(dialog, all.box_y, all.box_x,
+		 all.use_height + 2 * MARGIN,
+		 all.use_width + 2 * MARGIN,
+		 menubox_border_attr, menubox_border2_attr);
+
+    text_width = 0;
+    name_width = 0;
+    /* Find length of longest item to center checklist */
+    for (i = 0; i < item_no; i++) {
+	text_width = MAX(text_width, dlg_count_columns(items[i].text));
+	name_width = MAX(name_width, dlg_count_columns(items[i].name));
+    }
+
+    /* If the name+text is wider than the list is allowed, then truncate
+     * one or both of them.  If the name is no wider than 1/4 of the list,
+     * leave it intact.
+     */
+    use_width = (all.use_width - 6);
+    if (dialog_vars.no_tags) {
+	list_width = MIN(all.use_width, text_width);
+    } else if (dialog_vars.no_items) {
+	list_width = MIN(all.use_width, name_width);
+    } else {
+	if (text_width >= 0
+	    && name_width >= 0
+	    && use_width > 0
+	    && text_width + name_width > use_width) {
+	    int need = (int) (0.25 * use_width);
+	    if (name_width > need) {
+		int want = (int) (use_width * ((double) name_width) /
+				  (text_width + name_width));
+		name_width = (want > need) ? want : need;
+	    }
+	    text_width = use_width - name_width;
+	}
+	list_width = (text_width + name_width);
+    }
+
+    all.check_x = (use_width - list_width) / 2;
+    all.item_x = ((dialog_vars.no_tags
+		   ? 0
+		   : (dialog_vars.no_items
+		      ? 0
+		      : (2 + name_width)))
+		  + all.check_x + 4);
+
+    /* ensure we are scrolled to show the current choice */
+    scrollamt = MIN(scrollamt, max_choice + item_no - 1);
+    if (choice >= (max_choice + scrollamt - 1)) {
+	scrollamt = MAX(0, choice - max_choice + 1);
+	choice = max_choice - 1;
+    }
+    print_list(&all, choice, scrollamt, max_choice);
+
+    /* register the new window, along with its borders */
+    dlg_mouse_mkbigregion(all.box_y + 1, all.box_x,
+			  all.use_height, all.use_width + 2,
+			  KEY_MAX, 1, 1, 1 /* by lines */ );
+
+    dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width);
+
+    dlg_trace_win(dialog);
+
+    while (result == DLG_EXIT_UNKNOWN) {
+	int was_mouse;
+
+	if (button < 0)		/* --visit-items */
+	    wmove(dialog, all.box_y + choice + 1, all.box_x + all.check_x + 2);
+
+	key = dlg_mouse_wgetch(dialog, &fkey);
+	if (dlg_result_key(key, fkey, &result)) {
+	    if (!dlg_button_key(result, &button, &key, &fkey))
+		break;
+	}
+
+	was_mouse = (fkey && is_DLGK_MOUSE(key));
+	if (was_mouse)
+	    key -= M_EVENT;
+
+	if (was_mouse && (key >= KEY_MAX)) {
+	    getyx(dialog, cur_y, cur_x);
+	    i = (key - KEY_MAX);
+	    if (i < max_choice) {
+		choice = (key - KEY_MAX);
+		print_list(&all, choice, scrollamt, max_choice);
+
+		key = DLGK_TOGGLE;	/* force the selected item to toggle */
+	    } else {
+		beep();
+		continue;
+	    }
+	    fkey = FALSE;
+	} else if (was_mouse && key >= KEY_MIN) {
+	    key = dlg_lookup_key(dialog, key, &fkey);
+	}
+
+	/*
+	 * A space toggles the item status.  We handle either a checklist
+	 * (any number of items can be selected) or radio list (zero or one
+	 * items can be selected).
+	 */
+	if (key == DLGK_TOGGLE) {
+	    int current = scrollamt + choice;
+	    int next = items[current].state + 1;
+
+	    if (next >= num_states)
+		next = 0;
+
+	    if (flag == FLAG_CHECK) {	/* checklist? */
+		getyx(dialog, cur_y, cur_x);
+		items[current].state = next;
+		print_item(&all, all.list,
+			   &items[scrollamt + choice],
+			   states,
+			   choice, TRUE);
+		(void) wnoutrefresh(all.list);
+		(void) wmove(dialog, cur_y, cur_x);
+	    } else {		/* radiolist */
+		for (i = 0; i < item_no; i++) {
+		    if (i != current) {
+			items[i].state = 0;
+		    }
+		}
+		if (items[current].state) {
+		    getyx(dialog, cur_y, cur_x);
+		    items[current].state = next ? next : 1;
+		    print_item(&all, all.list,
+			       &items[current],
+			       states,
+			       choice, TRUE);
+		    (void) wnoutrefresh(all.list);
+		    (void) wmove(dialog, cur_y, cur_x);
+		} else {
+		    items[current].state = 1;
+		    print_list(&all, choice, scrollamt, max_choice);
+		}
+	    }
+	    continue;		/* wait for another key press */
+	}
+
+	/*
+	 * Check if key pressed matches first character of any item tag in
+	 * list.  If there is more than one match, we will cycle through
+	 * each one as the same key is pressed repeatedly.
+	 */
+	found = FALSE;
+	if (!fkey) {
+	    if (button < 0 || !dialog_state.visit_items) {
+		for (j = scrollamt + choice + 1; j < item_no; j++) {
+		    if (check_hotkey(items, j)) {
+			found = TRUE;
+			i = j - scrollamt;
+			break;
+		    }
+		}
+		if (!found) {
+		    for (j = 0; j <= scrollamt + choice; j++) {
+			if (check_hotkey(items, j)) {
+			    found = TRUE;
+			    i = j - scrollamt;
+			    break;
+			}
+		    }
+		}
+		if (found)
+		    dlg_flush_getc();
+	    } else if ((j = dlg_char_to_button(key, buttons)) >= 0) {
+		button = j;
+		ungetch('\n');
+		continue;
+	    }
+	}
+
+	/*
+	 * A single digit (1-9) positions the selection to that line in the
+	 * current screen.
+	 */
+	if (!found
+	    && (key <= '9')
+	    && (key > '0')
+	    && (key - '1' < max_choice)) {
+	    found = TRUE;
+	    i = key - '1';
+	}
+
+	if (!found) {
+	    if (fkey) {
+		found = TRUE;
+		switch (key) {
+		case DLGK_ITEM_FIRST:
+		    i = -scrollamt;
+		    break;
+		case DLGK_ITEM_LAST:
+		    i = item_no - 1 - scrollamt;
+		    break;
+		case DLGK_PAGE_PREV:
+		    if (choice)
+			i = 0;
+		    else if (scrollamt != 0)
+			i = -MIN(scrollamt, max_choice);
+		    else
+			continue;
+		    break;
+		case DLGK_PAGE_NEXT:
+		    i = MIN(choice + max_choice, item_no - scrollamt - 1);
+		    break;
+		case DLGK_ITEM_PREV:
+		    i = choice - 1;
+		    if (choice == 0 && scrollamt == 0)
+			continue;
+		    break;
+		case DLGK_ITEM_NEXT:
+		    i = choice + 1;
+		    if (scrollamt + choice >= item_no - 1)
+			continue;
+		    break;
+		default:
+		    found = FALSE;
+		    break;
+		}
+	    }
+	}
+
+	if (found) {
+	    if (i != choice) {
+		getyx(dialog, cur_y, cur_x);
+		if (i < 0 || i >= max_choice) {
+		    if (i < 0) {
+			scrollamt += i;
+			choice = 0;
+		    } else {
+			choice = max_choice - 1;
+			scrollamt += (i - max_choice + 1);
+		    }
+		    print_list(&all, choice, scrollamt, max_choice);
+		} else {
+		    choice = i;
+		    print_list(&all, choice, scrollamt, max_choice);
+		}
+	    }
+	    continue;		/* wait for another key press */
+	}
+
+	if (fkey) {
+	    switch (key) {
+	    case DLGK_ENTER:
+		result = dlg_enter_buttoncode(button);
+		break;
+	    case DLGK_LEAVE:
+		result = dlg_ok_buttoncode(button);
+		break;
+	    case DLGK_FIELD_PREV:
+		button = dlg_prev_button(buttons, button);
+		dlg_draw_buttons(dialog, height - 2, 0, buttons, button,
+				 FALSE, width);
+		break;
+	    case DLGK_FIELD_NEXT:
+		button = dlg_next_button(buttons, button);
+		dlg_draw_buttons(dialog, height - 2, 0, buttons, button,
+				 FALSE, width);
+		break;
+#ifdef KEY_RESIZE
+	    case KEY_RESIZE:
+		dlg_will_resize(dialog);
+		/* reset data */
+		height = old_height;
+		width = old_width;
+		free(prompt);
+		_dlg_resize_cleanup(dialog);
+		/* repaint */
+		goto retry;
+#endif
+	    default:
+		if (was_mouse) {
+		    if ((key2 = dlg_ok_buttoncode(key)) >= 0) {
+			result = key2;
+			break;
+		    }
+		    beep();
+		}
+	    }
+	} else if (key > 0) {
+	    beep();
+	}
+    }
+
+    dlg_del_window(dialog);
+    dlg_mouse_free_regions();
+    free(prompt);
+    *current_item = (scrollamt + choice);
+    return result;
+}
+
+/*
+ * Display a dialog box with a list of options that can be turned on or off
+ * The `flag' parameter is used to select between radiolist and checklist.
+ */
+int
+dialog_checklist(const char *title,
+		 const char *cprompt,
+		 int height,
+		 int width,
+		 int list_height,
+		 int item_no,
+		 char **items,
+		 int flag)
+{
+    int result;
+    int i, j;
+    DIALOG_LISTITEM *listitems;
+    bool separate_output = ((flag == FLAG_CHECK)
+			    && (dialog_vars.separate_output));
+    bool show_status = FALSE;
+    int current = 0;
+    char *help_result;
+
+    listitems = dlg_calloc(DIALOG_LISTITEM, (size_t) item_no + 1);
+    assert_ptr(listitems, "dialog_checklist");
+
+    for (i = j = 0; i < item_no; ++i) {
+	listitems[i].name = items[j++];
+	listitems[i].text = (dialog_vars.no_items
+			     ? dlg_strempty()
+			     : items[j++]);
+	listitems[i].state = !dlg_strcmp(items[j++], "on");
+	listitems[i].help = ((dialog_vars.item_help)
+			     ? items[j++]
+			     : dlg_strempty());
+    }
+    dlg_align_columns(&listitems[0].text, (int) sizeof(DIALOG_LISTITEM), item_no);
+
+    result = dlg_checklist(title,
+			   cprompt,
+			   height,
+			   width,
+			   list_height,
+			   item_no,
+			   listitems,
+			   NULL,
+			   flag,
+			   &current);
+
+    switch (result) {
+    case DLG_EXIT_OK:		/* FALLTHRU */
+    case DLG_EXIT_EXTRA:
+	show_status = TRUE;
+	break;
+    case DLG_EXIT_HELP:
+	dlg_add_help_listitem(&result, &help_result, &listitems[current]);
+	if ((show_status = dialog_vars.help_status)) {
+	    if (separate_output) {
+		dlg_add_string(help_result);
+		dlg_add_separator();
+	    } else {
+		dlg_add_quoted(help_result);
+	    }
+	} else {
+	    dlg_add_string(help_result);
+	}
+	break;
+    }
+
+    if (show_status) {
+	for (i = 0; i < item_no; i++) {
+	    if (listitems[i].state) {
+		if (separate_output) {
+		    dlg_add_string(listitems[i].name);
+		    dlg_add_separator();
+		} else {
+		    if (dlg_need_separator())
+			dlg_add_separator();
+		    if (flag == FLAG_CHECK)
+			dlg_add_quoted(listitems[i].name);
+		    else
+			dlg_add_string(listitems[i].name);
+		}
+	    }
+	}
+	dlg_add_last_key(separate_output);
+    }
+
+    dlg_free_columns(&listitems[0].text, (int) sizeof(DIALOG_LISTITEM), item_no);
+    free(listitems);
+    return result;
+}
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/dialog-config.in
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/dialog-config.in	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/dialog-config.in	(revision 343)
@@ -0,0 +1,265 @@
+#!@SHELL@
+# $Id: dialog-config.in,v 1.14 2021/03/05 23:48:36 tom Exp $
+##############################################################################
+# Copyright (c) 2007-2019,2021 Thomas E. Dickey                              #
+#                                                                            #
+# Permission is hereby granted, free of charge, to any person obtaining a    #
+# copy of this software and associated documentation files (the "Software"), #
+# to deal in the Software without restriction, including without limitation  #
+# the rights to use, copy, modify, merge, publish, distribute, distribute    #
+# with modifications, sublicense, and/or sell copies of the Software, and to #
+# permit persons to whom the Software is furnished to do so, subject to the  #
+# following conditions:                                                      #
+#                                                                            #
+# The above copyright notice and this permission notice shall be included in #
+# all copies or substantial portions of the Software.                        #
+#                                                                            #
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
+# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
+# DEALINGS IN THE SOFTWARE.                                                  #
+#                                                                            #
+# Except as contained in this notice, the name(s) of the above copyright     #
+# holders shall not be used in advertising or otherwise to promote the sale, #
+# use or other dealings in this Software without prior written               #
+# authorization.                                                             #
+##############################################################################
+
+prefix="@prefix@"
+exec_prefix="@exec_prefix@"
+datarootdir="@datarootdir@"
+
+same_prefix=yes
+same_exec_prefix=yes
+
+THIS="@PACKAGE@"
+
+test $# = 0 && exec @SHELL@ "$0" --error
+
+while test $# -gt 0; do
+
+	# (re)evaluate symbols that may depend upon $prefix
+	if [ "x$same_prefix" != "xyes" ]
+	then
+		eval exec_prefix='@exec_prefix@'
+		eval datarootdir='@datarootdir@'
+	elif [ "x$same_exec_prefix" != "xyes" ]
+	then
+		eval datarootdir='@datarootdir@'
+	fi
+
+	eval bindir='"@bindir@"'
+	eval includedir='"@includedir@"'
+	eval libdir='"@libdir@"'
+	eval datadir='"@datadir@"'
+	eval mandir='"@mandir@"'
+
+	[ -z "$includedir" ] && includedir="${prefix}/include" 
+
+	eval LDFLAGS='"@LDFLAGS@"'
+	eval LIBS='"@LIBS@"'
+	LIBS="-l${THIS} $LIBS"
+
+	# If the directory given by --libdir is not in the LDFLAGS+LIBS set,
+	# prepend it to LDFLAGS to help link this application's library.
+	found=no
+	for opt in $LDFLAGS $LIBS
+	do
+		if [ "x$-L${libdir}" = "x$opt" ]
+		then
+			found=yes
+			break
+		fi
+	done
+	if [ $found = no ]
+	then
+		[ -n "$LFLAGS" ] && LDFLAGS=" $LFDLAGS"
+		LDFLAGS="-L${libdir}$LDFLAGS"
+	fi
+	[ -z "$LDFLAGS" ] && LDFLAGS="-L${libdir}"
+
+	# Ignore -L options which do not correspond to an actual directory,
+	# or which are standard library directories (i.e., the linker is
+	# supposed to search those directories).
+	#
+	# There is no portable way to find the list of standard library
+	# directories.  Require a POSIX shell anyway, to keep this simple.
+	lib_flags=
+	for opt in $LDFLAGS $LIBS
+	do
+		case $opt in
+		-L*)
+			opt_lib=`echo "x$opt" | sed -e 's/^x-L//'`
+			[ -d "$opt_lib" ] || continue
+			case "$opt_lib" in
+			@LD_SEARCHPATH@) # skip standard libdir
+				continue
+				;;
+			*)
+				;;
+			esac
+			;;
+		esac
+		lib_flags="$lib_flags $opt"
+	done
+
+	case "$1" in
+	-*=*)
+		ARG=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
+		;;
+	*)
+		ARG=
+		;;
+	esac
+
+	case "$1" in
+	# basic configuration
+	--prefix=*)
+		prefix="$ARG"
+		test -z "$exec_prefix" && exec_prefix="$ARG"
+		same_prefix=no
+		;;
+	--prefix)
+		echo "$prefix"
+		;;
+	--exec-prefix=*)
+		exec_prefix="$ARG"
+		same_exec_prefix=no
+		;;
+	--exec-prefix)
+		echo "$exec_prefix"
+		;;
+	# compile/link
+	--cflags|--cflags-only-I)
+		INCS="-I$includedir"
+		sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO
+			$INCS
+ENDECHO
+		;;
+	--cflags-only-other)
+		# no -D/-U options should be needed
+		echo
+		;;
+	--ldflags)
+		OPTS=
+		for opt in $LDFLAGS $LIBS
+		do
+			case "x$opt" in
+			x-[^l]*)
+				OPTS="$OPTS $opt"
+				;;
+			esac
+		done
+		printf "%s\n" "$OPTS"
+		;;
+	--libs)
+		OPTS=
+		for opt in $lib_flags
+		do
+			[ -n "$OPTS" ] && OPTS="$OPTS "
+			OPTS="${OPTS}${opt}"
+		done
+		printf "%s\n" "$OPTS"
+		;;
+	--libs-only-L)
+		OPTS=
+		for opt in $lib_flags
+		do
+			case "x$opt" in
+			x-L*)
+				[ -n "$OPTS" ] && OPTS="$OPTS "
+				OPTS="${OPTS}${opt}"
+				;;
+			esac
+		done
+		printf "%s\n" "$OPTS"
+		;;
+	--libs-only-l)
+		OPTS=
+		for opt in $lib_flags
+		do
+			case "x$opt" in
+			x-l*)
+				[ -n "$OPTS" ] && OPTS="$OPTS "
+				OPTS="${OPTS}${opt}"
+				;;
+			esac
+		done
+		printf "%s\n" "$OPTS"
+		;;
+	--libs-only-other)
+		OPTS=
+		for opt in $lib_flags
+		do
+			case "x$opt" in
+			x-[lL]*)
+				;;
+			*)
+				[ -n "$OPTS" ] && OPTS="$OPTS "
+				OPTS="${OPTS}${opt}"
+				;;
+			esac
+		done
+		printf "%s\n" "$OPTS"
+		;;
+	# identification
+	--version)
+		echo "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@"
+		;;
+	--abi-version)
+		echo "@VERSION@" | sed -e 's/:/./g'
+		;;
+	# locations
+	--bindir)
+		echo "${bindir}"
+		;;
+	--datadir)
+		echo "${datadir}"
+		;;
+	--libdir)
+		echo "${libdir}"
+		;;
+	--mandir)
+		echo "${mandir}"
+		;;
+	# general info
+	--help)
+		cat <<ENDHELP
+Usage: ${THIS}-config [options]
+
+Options:
+  --prefix           echos the package-prefix of ${THIS}
+  --prefix=ARG       sets the package-prefix of ${THIS}
+  --exec-prefix      echos the executable-prefix of ${THIS}
+  --exec-prefix=ARG  sets the executable-prefix of ${THIS}
+
+  --cflags           echos the C compiler flags needed to compile with ${THIS}
+  --ldflags          echos the linker flags needed to link with ${THIS}
+
+  --libs             echos the libraries needed to link with ${THIS}
+  --libs-only-L      echos -L linker options (search path) for ${THIS}
+  --libs-only-l      echos -l linker options (libraries) for ${THIS}
+  --libs-only-other  echos linker options other than -L/-l
+
+  --version          echos the release+patchdate version of ${THIS}
+  --abi-version      echos the ABI version of ${THIS}
+
+  --bindir           echos the directory containing ${THIS} programs
+  --datadir          echos the directory containing ${THIS} data
+  --libdir           echos the directory containing ${THIS} libraries
+  --mandir           echos the directory containing ${THIS} manual pages
+
+  --help             prints this message
+ENDHELP
+		;;
+	--error|*)
+		@SHELL@ "$0" --help 1>&2
+		exit 1
+		;;
+	esac
+	shift
+done
+# vile:shmode
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/dialog.m4
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/dialog.m4	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/dialog.m4	(revision 343)
@@ -0,0 +1,332 @@
+dnl #
+dnl # /usr/share/aclocal/dialog.m4
+dnl #
+dnl # Configure paths for dialog
+dnl # Andrew V.Kosteltsev
+
+dnl ============================================================
+dnl
+dnl  Synopsis:
+dnl     AC_CHECK_DIALOG([MIN-VERSION [,                  # minimum dialog version, e.g. 1.3-20190211
+dnl                           DEFAULT-WITH-DIALOG [,     # default value for --with-dialog option
+dnl                           DEFAULT-WITH-DIALOG-TEST [,# default value for --with-dialog-test option
+dnl                           EXTEND-VARS [,                  # whether CFLAGS/LDFLAGS/etc are extended
+dnl                           ACTION-IF-FOUND [,              # action to perform if dialog was found
+dnl                           ACTION-IF-NOT-FOUND             # action to perform if dialog was not found
+dnl                          ]]]]]])
+dnl  Examples:
+dnl     AC_CHECK_DIALOG(1.3-20210621)
+dnl     AC_CHECK_DIALOG(1.3-20210621,,,no,CFLAGS="$CFLAGS -DHAVE_DIALOG $DIALOG_CFLAGS")
+dnl     AC_CHECK_DIALOG(1.3-20210621,yes,yes,yes,CFLAGS="$CFLAGS -DHAVE_DIALOG")
+dnl
+dnl
+dnl  If you have to change prefix returned by dialog-config script or change
+dnl  location of dialog-config, you may set environment variable DIALOG_CONFIG,
+dnl  for example:
+dnl
+dnl  # export DIALOG_CONFIG="dialog-config --prefix=/usr/local"
+dnl  # export DIALOG_CONFIG="/usr/bin/dialog-config --prefix=/usr/local"
+dnl
+dnl ============================================================
+dnl
+dnl ============================================================
+dnl  auxilliary macros
+dnl ============================================================
+AC_DEFUN([_AC_DIALOG_ERROR], [dnl
+AC_MSG_RESULT([*FAILED*])
+cat <<EOT | sed -e 's/^[[ 	]]*/ | /' -e 's/>>/  /' 1>&2
+$1
+EOT
+exit 1
+])
+
+AC_DEFUN([_AC_DIALOG_VERBOSE], [dnl
+if test ".$verbose" = .yes; then
+    AC_MSG_RESULT([  $1])
+fi
+])
+
+dnl ============================================================
+dnl  the user macro
+dnl ============================================================
+AC_DEFUN([AC_CHECK_DIALOG], [dnl
+dnl
+dnl ============================================================
+dnl  prerequisites
+dnl ============================================================
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_CPP])dnl
+dnl
+dnl ============================================================
+dnl  set DIALOG_CONFIG variable
+dnl ============================================================
+if test -z "$DIALOG_CONFIG"; then
+  DIALOG_CONFIG='dialog-config'
+fi
+dnl
+DIALOG_CFLAGS=''
+DIALOG_LDFLAGS=''
+DIALOG_LIBS=''
+AC_SUBST(DIALOG_CFLAGS)
+AC_SUBST(DIALOG_LDFLAGS)
+AC_SUBST(DIALOG_LIBS)
+dnl
+dnl ============================================================
+dnl  command line options
+dnl ============================================================
+_AC_DIALOG_VERBOSE([])
+AC_ARG_WITH(dialog,dnl
+[  --with-dialog[=ARG]       Build with dialog Library  (default=]ifelse([$2],,yes,$2)[)],dnl
+,dnl
+with_dialog="ifelse([$2],,yes,$2)"
+)dnl
+AC_ARG_WITH(dialog-test,dnl
+[  --with-dialog-test      Perform dialog Sanity Test (default=]ifelse([$3],,yes,$3)[)],dnl
+,dnl
+with_dialog_test="ifelse([$3],,yes,$3)"
+)dnl
+_AC_DIALOG_VERBOSE([+ Command Line Options:])
+_AC_DIALOG_VERBOSE([    o --with-dialog=$with_dialog])
+_AC_DIALOG_VERBOSE([    o --with-dialog-test=$with_dialog_test])
+dnl
+dnl ============================================================
+dnl  configuration
+dnl ============================================================
+if test ".$with_dialog" != .no; then
+    dialog_subdir=no
+    dialog_subdir_opts=''
+    case "$with_dialog" in
+        subdir:* )
+            dialog_subdir=yes
+            changequote(, )dnl
+            dialog_subdir_opts=`echo $with_dialog | sed -e 's/^subdir:[^ 	]*[ 	]*//'`
+            with_dialog=`echo $with_dialog | sed -e 's/^subdir:\([^ 	]*\).*$/\1/'`
+            changequote([, ])dnl
+            ;;
+    esac
+    dialog_version=""
+    dialog_location=""
+    dialog_type=""
+    dialog_cflags=""
+    dialog_ldflags=""
+    dialog_libs=""
+    if test ".$with_dialog" = .yes; then
+        #   via config script in $PATH
+        changequote(, )dnl
+        dialog_version=`($DIALOG_CONFIG --version) 2>/dev/null |\
+                      sed -e 's/^.*\([0-9]\.[0-9]*[-][0-9]*\).*$/\1/'`
+        changequote([, ])dnl
+        if test ".$dialog_version" != .; then
+            dialog_location=`$DIALOG_CONFIG --prefix`
+            dialog_type='installed'
+            dialog_cflags=`$DIALOG_CONFIG --cflags`
+            dialog_ldflags=`$DIALOG_CONFIG --ldflags`
+            dialog_libs=`$DIALOG_CONFIG --libs`
+        fi
+    elif test -d "$with_dialog"; then
+        with_dialog=`echo $with_dialog | sed -e 's;/*$;;'`
+        dialog_found=no
+        #   via config script under a specified directory
+        #   (a standard installation, but not a source tree)
+        if test ".$dialog_found" = .no; then
+            for _dir in $with_dialog/bin $with_dialog; do
+                if test -f "$_dir/dialog-config"; then
+                    test -f "$_dir/dialog-config.in" && continue # dialog-config in source tree!
+                    changequote(, )dnl
+                    dialog_version=`($_dir/dialog-config --version) 2>/dev/null |\
+                                  sed -e 's/^.*\([0-9]\.[0-9]*[.][0-9]*\).*$/\1/'`
+                    changequote([, ])dnl
+                    if test ".$dialog_version" != .; then
+                        dialog_location=`$_dir/dialog-config --prefix`
+                        dialog_type="installed"
+                        dialog_cflags=`$_dir/dialog-config --cflags`
+                        dialog_ldflags=`$_dir/dialog-config --ldflags`
+                        dialog_libs=`$_dir/dialog-config --libs`
+                        dialog_found=yes
+                        break
+                    fi
+                fi
+            done
+        fi
+    fi
+    _AC_DIALOG_VERBOSE([+ Determined Location:])
+    _AC_DIALOG_VERBOSE([    o path: $dialog_location])
+    _AC_DIALOG_VERBOSE([    o type: $dialog_type])
+    if test ".$dialog_version" = .; then
+        if test ".$with_dialog" != .yes; then
+             _AC_DIALOG_ERROR([dnl
+             Unable to locate dialog under $with_dialog.
+             Please specify the correct path to either a dialog installation tree
+             (use --with-dialog=DIR if you used --prefix=DIR for installing dialog in
+             the past).])
+        else
+             _AC_DIALOG_ERROR([dnl
+             Unable to locate dialog in any system-wide location (see \$PATH).
+             Please specify the correct path to either a dialog installation tree
+             (use --with-dialog=DIR if you used --prefix=DIR for installing dialog in
+             the past, or set the DIALOG_CONFIG environment variable to the full path
+             to dialog-config).])
+        fi
+    fi
+    dnl ========================================================
+    dnl  Check whether the found version is sufficiently new
+    dnl ========================================================
+    _req_version="ifelse([$1],,1.0.0,$1)"
+    for _var in dialog_version _req_version; do
+        eval "_val=\"\$${_var}\""
+        _major=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[.]]\)\([[0-9]]*\)/\1/'`
+        _minor=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[.]]\)\([[0-9]]*\)/\2/'`
+        _micro=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[.]]\)\([[0-9]]*\)/\4/'`
+        _hex=`echo dummy | awk '{ printf("%d%02d%02d", major, minor, micro); }' \
+              "major=$_major" "minor=$_minor" "micro=$_micro"`
+        eval "${_var}_hex=\"\$_hex\""
+    done
+    _AC_DIALOG_VERBOSE([+ Determined Versions:])
+    _AC_DIALOG_VERBOSE([    o existing: $dialog_version -> 0x$dialog_version_hex])
+    _AC_DIALOG_VERBOSE([    o required: $_req_version -> 0x$_req_version_hex])
+    _ok=0
+    if test ".$dialog_version_hex" != .; then
+        if test ".$_req_version_hex" != .; then
+            if test $dialog_version_hex -ge $_req_version_hex; then
+                _ok=1
+            fi
+        fi
+    fi
+    if test ".$_ok" = .0; then
+        _AC_DIALOG_ERROR([dnl
+        Found dialog version $dialog_version, but required at least version $_req_version.
+        Upgrade dialog under $dialog_location to $_req_version or higher first, please.])
+    fi
+    dnl ========================================================
+    dnl  Perform dialog Sanity Compile Check
+    dnl ========================================================
+    if test ".$with_dialog_test" = .yes; then
+        _ac_save_CFLAGS="$CFLAGS"
+        _ac_save_LDFLAGS="$LDFLAGS"
+        _ac_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $dialog_cflags"
+        LDFLAGS="$LDFLAGS $dialog_ldflags"
+        LIBS="$LIBS $dialog_libs"
+        _AC_DIALOG_VERBOSE([+ Test Build Environment:])
+        _AC_DIALOG_VERBOSE([    o CFLAGS=\"$CFLAGS\"])
+        _AC_DIALOG_VERBOSE([    o LDFLAGS=\"$LDFLAGS\"])
+        _AC_DIALOG_VERBOSE([    o LIBS=\"$LIBS\"])
+        cross_compile=no
+        define(_code1, [dnl
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <strings.h>  /* index(3)    */
+
+#include <dialog.h>
+#include <dlg_colors.h>
+#include <dlg_keys.h>
+
+        ])
+        define(_code2, [dnl
+
+int main( void )
+{
+  int status = 0;
+
+  bzero( (void *)&dialog_vars, sizeof(DIALOG_VARS) );
+
+  init_dialog(stdin, stdout);
+
+  dialog_vars.colors = 1;
+  dialog_vars.backtitle = "\\Z7Test\\Zn \\Z1dialog\\Zn \\Z7Library\\Zn";
+  dialog_vars.dlg_clear_screen = 1;
+  dialog_vars.sleep_secs = 1;
+
+
+  dlg_put_backtitle();
+
+  /*************************************************
+    Ruler: 68 characters + 2 spaces left and right:
+
+                           | ----handy-ruler----------------------------------------------------- | */
+  status = dialog_msgbox( " \\Z4Dialog ==>\\Zn\\Z1libdialog\\Zn\\Z4<== [required]\\Zn ",
+                          "\nPackage is installed and corect.\n",
+                          5, 72, 0 );
+
+  if( dialog_vars.sleep_secs )
+    (void)napms(dialog_vars.sleep_secs * 1000);
+
+  if( dialog_vars.dlg_clear_screen )
+  {
+    dlg_clear();
+    (void)refresh();
+  }
+  end_dialog();
+
+  exit( 0 );
+}
+        ])
+        _AC_DIALOG_VERBOSE([+ Performing Sanity Checks:])
+        _AC_DIALOG_VERBOSE([    o pre-processor test])
+        AC_TRY_CPP(_code1, _ok=yes, _ok=no)
+        if test ".$_ok" != .yes; then
+            _AC_DIALOG_ERROR([dnl
+            Found dialog $dialog_version under $dialog_location, but
+            was unable to perform a sanity pre-processor check. This means
+            the dialog header dialog.h was not found.
+            We used the following build environment:
+            >> CPP="$CPP"
+            See config.log for possibly more details.])
+        fi
+        _AC_DIALOG_VERBOSE([    o link check])
+        AC_TRY_LINK(_code1, _code2, _ok=yes, _ok=no)
+        if test ".$_ok" != .yes; then
+            _AC_DIALOG_ERROR([dnl
+            Found dialog $dialog_version under $dialog_location, but
+            was unable to perform a sanity linker check. This means
+            the dialog library libdialog.a was not found.
+            We used the following build environment:
+            >> CC="$CC"
+            >> CFLAGS="$CFLAGS"
+            >> LDFLAGS="$LDFLAGS"
+            >> LIBS="$LIBS"
+            See config.log for possibly more details.])
+        fi
+        _extendvars="ifelse([$4],,yes,$4)"
+        if test ".$_extendvars" != .yes; then
+            CFLAGS="$_ac_save_CFLAGS"
+            LDFLAGS="$_ac_save_LDFLAGS"
+            LIBS="$_ac_save_LIBS"
+        fi
+    else
+        _extendvars="ifelse([$4],,yes,$4)"
+        if test ".$_extendvars" = .yes; then
+            if test ".$dialog_subdir" = .yes; then
+                CFLAGS="$CFLAGS $dialog_cflags"
+                LDFLAGS="$LDFLAGS $dialog_ldflags"
+                LIBS="$LIBS $dialog_libs"
+            fi
+        fi
+    fi
+    DIALOG_CFLAGS="$dialog_cflags"
+    DIALOG_LDFLAGS="$dialog_ldflags"
+    DIALOG_LIBS="$dialog_libs"
+    AC_SUBST(DIALOG_CFLAGS)
+    AC_SUBST(DIALOG_LDFLAGS)
+    AC_SUBST(DIALOG_LIBS)
+
+    AC_SUBST(HAVE_DIALOG, [1])
+
+    AC_CHECK_HEADERS(dialog.h dlg_colors.h dlg_keys.h)
+
+    _AC_DIALOG_VERBOSE([+ Final Results:])
+    _AC_DIALOG_VERBOSE([    o DIALOG_CFLAGS=\"$DIALOG_CFLAGS\"])
+    _AC_DIALOG_VERBOSE([    o DIALOG_LDFLAGS=\"$DIALOG_LDFLAGS\"])
+    _AC_DIALOG_VERBOSE([    o DIALOG_LIBS=\"$DIALOG_LIBS\"])
+fi
+if test ".$with_dialog" != .no; then
+    AC_MSG_CHECKING(for libdialog)
+    AC_MSG_RESULT([version $dialog_version, $dialog_type under $dialog_location])
+    ifelse([$5], , :, [$5])
+else
+    AC_MSG_CHECKING(for libdialog)
+    AC_MSG_RESULT([no])
+    ifelse([$6], , :, [$6])
+fi
+])
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/fselect.c
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/fselect.c	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/fselect.c	(revision 343)
@@ -0,0 +1,971 @@
+/*
+ *  $Id: fselect.c,v 1.117 2021/06/21 19:50:35 tom Exp $
+ *
+ *  fselect.c -- implements the file-selector box
+ *
+ *  Copyright 2000-2020,2021	Thomas E. Dickey
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License, version 2.1
+ *  as published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to
+ *	Free Software Foundation, Inc.
+ *	51 Franklin St., Fifth Floor
+ *	Boston, MA 02110, USA.
+ */
+
+#include <dlg_internals.h>
+#include <dlg_keys.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if HAVE_DIRENT_H
+# include <dirent.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+#else
+# define dirent direct
+# define NAMLEN(dirent) (dirent)->d_namlen
+# if HAVE_SYS_NDIR_H
+#  include <sys/ndir.h>
+# endif
+# if HAVE_SYS_DIR_H
+#  include <sys/dir.h>
+# endif
+# if HAVE_NDIR_H
+#  include <ndir.h>
+# endif
+#endif
+
+# if defined(_FILE_OFFSET_BITS) && defined(HAVE_STRUCT_DIRENT64)
+#  if !defined(_LP64) && (_FILE_OFFSET_BITS == 64)
+#   define      DIRENT  struct dirent64
+#  else
+#   define      DIRENT  struct dirent
+#  endif
+# else
+#  define       DIRENT  struct dirent
+# endif
+
+#define EXT_WIDE 1
+#define HDR_HIGH 1
+#define BTN_HIGH (1 + 2 * MARGIN)	/* Ok/Cancel, also input-box */
+#define MIN_HIGH (HDR_HIGH - MARGIN + (BTN_HIGH * 2) + 4 * MARGIN)
+#define MIN_WIDE (2 * MAX(dlg_count_columns(d_label), dlg_count_columns(f_label)) + 6 * MARGIN + 2 * EXT_WIDE)
+
+#define MOUSE_D (KEY_MAX + 0)
+#define MOUSE_F (KEY_MAX + 10000)
+#define MOUSE_T (KEY_MAX + 20000)
+
+typedef enum {
+    sDIRS = -3
+    ,sFILES = -2
+    ,sTEXT = -1
+} STATES;
+
+typedef struct {
+    WINDOW *par;		/* parent window */
+    WINDOW *win;		/* this window */
+    int length;			/* length of the data[] array */
+    int offset;			/* index of first item on screen */
+    int choice;			/* index of the selection */
+    int mousex;			/* base of mouse-code return-values */
+    unsigned allocd;
+    char **data;
+} LIST;
+
+typedef struct {
+    int length;
+    char **data;
+} MATCH;
+
+static void
+init_list(LIST * list, WINDOW *par, WINDOW *win, int mousex)
+{
+    list->par = par;
+    list->win = win;
+    list->length = 0;
+    list->offset = 0;
+    list->choice = 0;
+    list->mousex = mousex;
+    list->allocd = 0;
+    list->data = 0;
+    dlg_mouse_mkbigregion(getbegy(win), getbegx(win),
+			  getmaxy(win), getmaxx(win),
+			  mousex, 1, 1, 1 /* by lines */ );
+}
+
+static char *
+leaf_of(char *path)
+{
+    char *leaf = strrchr(path, '/');
+    if (leaf != 0)
+	leaf++;
+    else
+	leaf = path;
+    return leaf;
+}
+
+static char *
+data_of(LIST * list)
+{
+    if (list != 0
+	&& list->data != 0)
+	return list->data[list->choice];
+    return 0;
+}
+
+static void
+free_list(LIST * list, int reinit)
+{
+    if (list->data != 0) {
+	int n;
+
+	for (n = 0; list->data[n] != 0; n++)
+	    free(list->data[n]);
+	free(list->data);
+	list->data = 0;
+    }
+    if (reinit)
+	init_list(list, list->par, list->win, list->mousex);
+}
+
+static void
+add_to_list(LIST * list, char *text)
+{
+    unsigned need;
+
+    need = (unsigned) (list->length + 1);
+    if (need + 1 > list->allocd) {
+	list->allocd = 2 * (need + 1);
+	if (list->data == 0) {
+	    list->data = dlg_malloc(char *, list->allocd);
+	} else {
+	    list->data = dlg_realloc(char *, list->allocd, list->data);
+	}
+	assert_ptr(list->data, "add_to_list");
+    }
+    list->data[list->length++] = dlg_strclone(text);
+    list->data[list->length] = 0;
+}
+
+static void
+keep_visible(LIST * list)
+{
+    int high = getmaxy(list->win);
+
+    if (list->choice < list->offset) {
+	list->offset = list->choice;
+    }
+    if (list->choice - list->offset >= high)
+	list->offset = list->choice - high + 1;
+}
+
+#define Value(c) (int)((c) & 0xff)
+
+static int
+find_choice(char *target, LIST * list)
+{
+    int choice = list->choice;
+
+    if (*target == 0) {
+	list->choice = 0;
+    } else {
+	int n;
+	int len_1, cmp_1;
+
+	/* find the match with the longest length.  If more than one has the
+	 * same length, choose the one with the closest match of the final
+	 * character.
+	 */
+	len_1 = 0;
+	cmp_1 = 256;
+	for (n = 0; n < list->length; n++) {
+	    char *a = target;
+	    char *b = list->data[n];
+	    int len_2, cmp_2;
+
+	    len_2 = 0;
+	    while ((*a != 0) && (*b != 0) && (*a == *b)) {
+		a++;
+		b++;
+		len_2++;
+	    }
+	    cmp_2 = Value(*a) - Value(*b);
+	    if (cmp_2 < 0)
+		cmp_2 = -cmp_2;
+	    if ((len_2 > len_1)
+		|| (len_1 == len_2 && cmp_2 < cmp_1)) {
+		len_1 = len_2;
+		cmp_1 = cmp_2;
+		list->choice = n;
+	    }
+	}
+    }
+    if (choice != list->choice) {
+	keep_visible(list);
+    }
+    return (choice != list->choice);
+}
+
+static void
+display_list(LIST * list)
+{
+    if (list->win != 0) {
+	int n;
+	int x;
+	int y;
+	int top;
+	int bottom;
+
+	dlg_attr_clear(list->win, getmaxy(list->win), getmaxx(list->win), item_attr);
+	for (n = list->offset; n < list->length && list->data[n]; n++) {
+	    y = n - list->offset;
+	    if (y >= getmaxy(list->win))
+		break;
+	    (void) wmove(list->win, y, 0);
+	    if (n == list->choice)
+		dlg_attrset(list->win, item_selected_attr);
+	    (void) waddstr(list->win, list->data[n]);
+	    dlg_attrset(list->win, item_attr);
+	}
+	dlg_attrset(list->win, item_attr);
+
+	getparyx(list->win, y, x);
+
+	top = y - 1;
+	bottom = y + getmaxy(list->win);
+	dlg_draw_scrollbar(list->par,
+			   (long) list->offset,
+			   (long) list->offset,
+			   (long) (list->offset + getmaxy(list->win)),
+			   (long) (list->length),
+			   x + 1,
+			   x + getmaxx(list->win),
+			   top,
+			   bottom,
+			   menubox_border2_attr,
+			   menubox_border_attr);
+
+	(void) wmove(list->win, list->choice - list->offset, 0);
+	(void) wnoutrefresh(list->win);
+    }
+}
+
+/* FIXME: see arrows.c
+ * This workaround is used to allow two lists to have scroll-tabs at the same
+ * time, by reassigning their return-values to be different.  Just for
+ * readability, we use the names of keys with similar connotations, though all
+ * that is really required is that they're distinct, so we can put them in a
+ * switch statement.
+ */
+#if USE_MOUSE
+static void
+fix_arrows(LIST * list)
+{
+    if (list->win != 0) {
+	int x;
+	int y;
+	int top;
+	int right;
+	int bottom;
+
+	getparyx(list->win, y, x);
+	top = y - 1;
+	right = getmaxx(list->win);
+	bottom = y + getmaxy(list->win);
+
+	mouse_mkbutton(top, x, right,
+		       ((list->mousex == MOUSE_D)
+			? KEY_PREVIOUS
+			: KEY_PPAGE));
+	mouse_mkbutton(bottom, x, right,
+		       ((list->mousex == MOUSE_D)
+			? KEY_NEXT
+			: KEY_NPAGE));
+    }
+}
+
+#else
+#define fix_arrows(list)	/* nothing */
+#endif
+
+static bool
+show_list(char *target, LIST * list, bool keep)
+{
+    bool changed = keep || find_choice(target, list);
+    display_list(list);
+    return changed;
+}
+
+/*
+ * Highlight the closest match to 'target' in the given list, setting offset
+ * to match.
+ */
+static bool
+show_both_lists(char *input, LIST * d_list, LIST * f_list, bool keep)
+{
+    char *leaf = leaf_of(input);
+
+    return show_list(leaf, d_list, keep) || show_list(leaf, f_list, keep);
+}
+
+/*
+ * Move up/down in the given list
+ */
+static bool
+change_list(int choice, LIST * list)
+{
+    if (data_of(list) != 0) {
+	int last = list->length - 1;
+
+	choice += list->choice;
+	if (choice < 0)
+	    choice = 0;
+	if (choice > last)
+	    choice = last;
+	list->choice = choice;
+	keep_visible(list);
+	display_list(list);
+	return TRUE;
+    }
+    return FALSE;
+}
+
+static void
+scroll_list(int direction, LIST * list)
+{
+    if (data_of(list) != 0) {
+	int length = getmaxy(list->win);
+	if (change_list(direction * length, list))
+	    return;
+    }
+    beep();
+}
+
+static int
+compar(const void *a, const void *b)
+{
+    return strcmp(*(const char *const *) a, *(const char *const *) b);
+}
+
+static void
+match(char *name, LIST * d_list, LIST * f_list, MATCH * match_list)
+{
+    char *test = leaf_of(name);
+    size_t test_len = strlen(test);
+    char **matches = dlg_malloc(char *, (size_t) (d_list->length + f_list->length));
+    size_t data_len = 0;
+
+    if (matches != 0) {
+	int i;
+	char **new_ptr;
+
+	for (i = 2; i < d_list->length; i++) {
+	    if (strncmp(test, d_list->data[i], test_len) == 0) {
+		matches[data_len++] = d_list->data[i];
+	    }
+	}
+	for (i = 0; i < f_list->length; i++) {
+	    if (strncmp(test, f_list->data[i], test_len) == 0) {
+		matches[data_len++] = f_list->data[i];
+	    }
+	}
+	if ((new_ptr = dlg_realloc(char *, data_len + 1, matches)) != 0) {
+	    matches = new_ptr;
+	} else {
+	    free(matches);
+	    matches = 0;
+	    data_len = 0;
+	}
+    }
+    match_list->data = matches;
+    match_list->length = (int) data_len;
+}
+
+static void
+free_match(MATCH * match_list)
+{
+    free(match_list->data);
+    match_list->length = 0;
+}
+
+static int
+complete(char *name, LIST * d_list, LIST * f_list, char **buff_ptr)
+{
+    MATCH match_list;
+    char *test;
+    size_t test_len;
+    size_t i;
+    char *buff;
+
+    match(name, d_list, f_list, &match_list);
+    if (match_list.length == 0) {
+	free(match_list.data);
+	*buff_ptr = NULL;
+	return 0;
+    }
+
+    test = match_list.data[0];
+    test_len = strlen(test);
+    buff = dlg_malloc(char, test_len + 2);
+    if (match_list.length == 1) {
+	strcpy(buff, test);
+	i = test_len;
+	if (test == data_of(d_list)) {
+	    buff[test_len] = '/';
+	    i++;
+	}
+    } else {
+	int j;
+	char *next;
+
+	for (i = 0; i < test_len; i++) {
+	    char test_char = test[i];
+	    if (test_char == '\0')
+		break;
+	    for (j = 0; j < match_list.length; j++) {
+		if (match_list.data[j][i] != test_char) {
+		    break;
+		}
+	    }
+	    if (j == match_list.length) {
+		(buff)[i] = test_char;
+	    } else
+		break;
+	}
+	next = dlg_realloc(char, i + 1, buff);
+	if (next == NULL) {
+	    free(buff);
+	    *buff_ptr = NULL;
+	    return 0;
+	}
+	buff = next;
+    }
+    free_match(&match_list);
+    buff[i] = '\0';
+    *buff_ptr = buff;
+    return (i != 0);
+}
+
+static bool
+fill_lists(char *current, char *input, LIST * d_list, LIST * f_list, bool keep)
+{
+    bool result = TRUE;
+    bool rescan = FALSE;
+    struct stat sb;
+    int n;
+    char path[MAX_LEN + 1];
+
+    /* check if we've updated the lists */
+    for (n = 0; current[n] && input[n]; n++) {
+	if (current[n] != input[n])
+	    break;
+    }
+
+    if (current[n] == input[n]) {
+	result = FALSE;
+	rescan = (n == 0 && d_list->length == 0);
+    } else if (strchr(current + n, '/') == 0
+	       && strchr(input + n, '/') == 0) {
+	result = show_both_lists(input, d_list, f_list, keep);
+    } else {
+	rescan = TRUE;
+    }
+
+    if (rescan) {
+	DIR *dp;
+	size_t have = strlen(input);
+	char *leaf;
+
+	if (have > MAX_LEN)
+	    have = MAX_LEN;
+	memcpy(current, input, have);
+	current[have] = '\0';
+
+	/* refill the lists */
+	free_list(d_list, TRUE);
+	free_list(f_list, TRUE);
+	memcpy(path, current, have);
+	path[have] = '\0';
+	if ((leaf = strrchr(path, '/')) != 0) {
+	    *++leaf = 0;
+	} else {
+	    strcpy(path, "./");
+	    leaf = path + strlen(path);
+	}
+	DLG_TRACE(("opendir '%s'\n", path));
+	if ((dp = opendir(path)) != 0) {
+	    DIRENT *de;
+
+	    while ((de = readdir(dp)) != 0) {
+		size_t len = NAMLEN(de);
+		if (len == 0 || (len + have + 2) >= MAX_LEN)
+		    continue;
+		memcpy(leaf, de->d_name, len);
+		leaf[len] = '\0';
+		if (stat(path, &sb) == 0) {
+		    if ((sb.st_mode & S_IFMT) == S_IFDIR)
+			add_to_list(d_list, leaf);
+		    else if (f_list->win)
+			add_to_list(f_list, leaf);
+		}
+	    }
+	    (void) closedir(dp);
+	    /* sort the lists */
+	    if (d_list->data != 0 && d_list->length > 1) {
+		qsort(d_list->data,
+		      (size_t) d_list->length,
+		      sizeof(d_list->data[0]),
+		      compar);
+	    }
+	    if (f_list->data != 0 && f_list->length > 1) {
+		qsort(f_list->data,
+		      (size_t) f_list->length,
+		      sizeof(f_list->data[0]),
+		      compar);
+	    }
+	}
+
+	(void) show_both_lists(input, d_list, f_list, FALSE);
+	d_list->offset = d_list->choice;
+	f_list->offset = f_list->choice;
+	result = TRUE;
+    }
+    return result;
+}
+
+static bool
+usable_state(int state, LIST * dirs, LIST * files)
+{
+    bool result;
+
+    switch (state) {
+    case sDIRS:
+	result = (dirs->win != 0) && (data_of(dirs) != 0);
+	break;
+    case sFILES:
+	result = (files->win != 0) && (data_of(files) != 0);
+	break;
+    default:
+	result = TRUE;
+	break;
+    }
+    return result;
+}
+
+#define which_list() ((state == sFILES) \
+			? &f_list \
+			: ((state == sDIRS) \
+			  ? &d_list \
+			  : 0))
+#define NAVIGATE_BINDINGS \
+	DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ), \
+	DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), \
+	DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), \
+	DLG_KEYS_DATA( DLGK_ITEM_NEXT,  KEY_DOWN ), \
+	DLG_KEYS_DATA( DLGK_ITEM_NEXT,  CHR_NEXT ), \
+	DLG_KEYS_DATA( DLGK_ITEM_NEXT,  KEY_NEXT ), \
+	DLG_KEYS_DATA( DLGK_ITEM_PREV,  CHR_PREVIOUS ), \
+	DLG_KEYS_DATA( DLGK_ITEM_PREV,  KEY_UP ), \
+	DLG_KEYS_DATA( DLGK_PAGE_NEXT,  KEY_NPAGE ), \
+	DLG_KEYS_DATA( DLGK_PAGE_PREV,  KEY_PPAGE )
+
+/*
+ * Display a dialog box for entering a filename
+ */
+static int
+dlg_fselect(const char *title, const char *path, int height, int width, int dselect)
+{
+    /* *INDENT-OFF* */
+    static DLG_KEYS_BINDING binding[] = {
+	HELPKEY_BINDINGS,
+	ENTERKEY_BINDINGS,
+	NAVIGATE_BINDINGS,
+	TOGGLEKEY_BINDINGS,
+	END_KEYS_BINDING
+    };
+    static DLG_KEYS_BINDING binding2[] = {
+	INPUTSTR_BINDINGS,
+	HELPKEY_BINDINGS,
+	ENTERKEY_BINDINGS,
+	NAVIGATE_BINDINGS,
+	TOGGLEKEY_BINDINGS,
+	END_KEYS_BINDING
+    };
+    /* *INDENT-ON* */
+
+#ifdef KEY_RESIZE
+    int old_height = height;
+    int old_width = width;
+    bool resized = FALSE;
+#endif
+    int tbox_y, tbox_x, tbox_width, tbox_height;
+    int dbox_y, dbox_x, dbox_width, dbox_height;
+    int fbox_y, fbox_x, fbox_width, fbox_height;
+    int show_buttons = TRUE;
+    int offset = 0;
+    int key = 0;
+    int fkey = FALSE;
+    int code;
+    int result = DLG_EXIT_UNKNOWN;
+    int state = dialog_vars.default_button >= 0 ? dlg_default_button() : sTEXT;
+    int button;
+    bool first = (state == sTEXT);
+    bool first_trace = TRUE;
+    char *input;
+    char *completed;
+    char current[MAX_LEN + 1];
+    WINDOW *dialog = 0;
+    WINDOW *w_text = 0;
+    WINDOW *w_work = 0;
+    const char **buttons = dlg_ok_labels();
+    const char *d_label = _("Directories");
+    const char *f_label = _("Files");
+    char *partial = 0;
+    int min_wide = MIN_WIDE;
+    int min_items = height ? 0 : 4;
+    LIST d_list, f_list;
+
+    DLG_TRACE(("# %s args:\n", dselect ? "dselect" : "fselect"));
+    DLG_TRACE2S("title", title);
+    DLG_TRACE2S("path", path);
+    DLG_TRACE2N("height", height);
+    DLG_TRACE2N("width", width);
+
+    dlg_does_output();
+
+    /* Set up the initial value */
+    input = dlg_set_result(path);
+    offset = (int) strlen(input);
+    *current = 0;
+
+    dlg_button_layout(buttons, &min_wide);
+
+#ifdef KEY_RESIZE
+  retry:
+#endif
+    if (height > 0)
+	height += MIN_HIGH;
+    dlg_auto_size(title, "", &height, &width, MIN_HIGH + min_items, min_wide);
+
+    dlg_print_size(height, width);
+    dlg_ctl_size(height, width);
+
+    dialog = dlg_new_window(height + 1, width,
+			    dlg_box_y_ordinate(height),
+			    dlg_box_x_ordinate(width));
+    dlg_register_window(dialog, "fselect", binding);
+    dlg_register_buttons(dialog, "fselect", buttons);
+
+    dlg_mouse_setbase(0, 0);
+
+    dlg_draw_box2(dialog, 0, 0, height + 1, width, dialog_attr, border_attr, border2_attr);
+    dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr);
+    dlg_draw_title(dialog, title);
+
+    dlg_attrset(dialog, dialog_attr);
+
+    /* Draw the input field box */
+    tbox_height = 1;
+    tbox_width = width - (4 * MARGIN + 2);
+    tbox_y = height - (BTN_HIGH * 2) + MARGIN + 1;
+    tbox_x = (width - tbox_width) / 2;
+
+    w_text = dlg_der_window(dialog, tbox_height, tbox_width, tbox_y, tbox_x);
+    if (w_text == 0) {
+	result = DLG_EXIT_ERROR;
+	goto finish;
+    }
+
+    dlg_draw_box(dialog, tbox_y - MARGIN, tbox_x - MARGIN,
+		 (2 * MARGIN + 1), tbox_width + (MARGIN + EXT_WIDE),
+		 menubox_border_attr, menubox_border2_attr);
+    dlg_mouse_mkbigregion(getbegy(dialog) + tbox_y - MARGIN,
+			  getbegx(dialog) + tbox_x - MARGIN,
+			  1 + (2 * MARGIN),
+			  tbox_width + (MARGIN + EXT_WIDE),
+			  MOUSE_T, 1, 1, 3 /* doesn't matter */ );
+
+    dlg_register_window(w_text, "fselect2", binding2);
+
+    /* Draw the directory listing box */
+    if (dselect)
+	dbox_width = (width - (6 * MARGIN));
+    else
+	dbox_width = (width - (6 * MARGIN + 2 * EXT_WIDE)) / 2;
+    dbox_height = height - MIN_HIGH;
+    dbox_y = (2 * MARGIN + 2);
+    dbox_x = tbox_x;
+
+    w_work = dlg_der_window(dialog, dbox_height, dbox_width, dbox_y, dbox_x);
+    if (w_work == 0) {
+	result = DLG_EXIT_ERROR;
+	goto finish;
+    }
+
+    (void) mvwaddstr(dialog, dbox_y - (MARGIN + 1), dbox_x - MARGIN, d_label);
+    dlg_draw_box(dialog,
+		 dbox_y - MARGIN, dbox_x - MARGIN,
+		 dbox_height + (MARGIN + 1), dbox_width + (MARGIN + 1),
+		 menubox_border_attr, menubox_border2_attr);
+    init_list(&d_list, dialog, w_work, MOUSE_D);
+
+    if (!dselect) {
+	/* Draw the filename listing box */
+	fbox_height = dbox_height;
+	fbox_width = dbox_width;
+	fbox_y = dbox_y;
+	fbox_x = tbox_x + dbox_width + (2 * MARGIN);
+
+	w_work = dlg_der_window(dialog, fbox_height, fbox_width, fbox_y, fbox_x);
+	if (w_work == 0) {
+	    result = DLG_EXIT_ERROR;
+	    goto finish;
+	}
+
+	(void) mvwaddstr(dialog, fbox_y - (MARGIN + 1), fbox_x - MARGIN, f_label);
+	dlg_draw_box(dialog,
+		     fbox_y - MARGIN, fbox_x - MARGIN,
+		     fbox_height + (MARGIN + 1), fbox_width + (MARGIN + 1),
+		     menubox_border_attr, menubox_border2_attr);
+	init_list(&f_list, dialog, w_work, MOUSE_F);
+    } else {
+	memset(&f_list, 0, sizeof(f_list));
+    }
+
+    while (result == DLG_EXIT_UNKNOWN) {
+
+	if (fill_lists(current, input, &d_list, &f_list, state < sTEXT))
+	    show_buttons = TRUE;
+
+#ifdef KEY_RESIZE
+	if (resized) {
+	    resized = FALSE;
+	    dlg_show_string(w_text, input, offset, inputbox_attr,
+			    0, 0, tbox_width, FALSE, first);
+	}
+#endif
+
+	/*
+	 * The last field drawn determines where the cursor is shown:
+	 */
+	if (show_buttons) {
+	    show_buttons = FALSE;
+	    button = (state < 0) ? 0 : state;
+	    dlg_draw_buttons(dialog, height - 1, 0, buttons, button, FALSE, width);
+	}
+
+	if (first_trace) {
+	    first_trace = FALSE;
+	    dlg_trace_win(dialog);
+	}
+
+	if (state < 0) {
+	    switch (state) {
+	    case sTEXT:
+		dlg_set_focus(dialog, w_text);
+		break;
+	    case sFILES:
+		dlg_set_focus(dialog, f_list.win);
+		break;
+	    case sDIRS:
+		dlg_set_focus(dialog, d_list.win);
+		break;
+	    }
+	}
+
+	if (first) {
+	    (void) wrefresh(dialog);
+	} else {
+	    fix_arrows(&d_list);
+	    fix_arrows(&f_list);
+	    key = dlg_mouse_wgetch((state == sTEXT) ? w_text : dialog, &fkey);
+	    if (dlg_result_key(key, fkey, &result)) {
+		if (!dlg_button_key(result, &button, &key, &fkey))
+		    break;
+	    }
+	}
+
+	if (key == DLGK_TOGGLE) {
+	    key = DLGK_SELECT;
+	    fkey = TRUE;
+	}
+
+	if (fkey) {
+	    switch (key) {
+	    case DLGK_MOUSE(KEY_PREVIOUS):
+		state = sDIRS;
+		scroll_list(-1, which_list());
+		continue;
+	    case DLGK_MOUSE(KEY_NEXT):
+		state = sDIRS;
+		scroll_list(1, which_list());
+		continue;
+	    case DLGK_MOUSE(KEY_PPAGE):
+		state = sFILES;
+		scroll_list(-1, which_list());
+		continue;
+	    case DLGK_MOUSE(KEY_NPAGE):
+		state = sFILES;
+		scroll_list(1, which_list());
+		continue;
+	    case DLGK_PAGE_PREV:
+		scroll_list(-1, which_list());
+		continue;
+	    case DLGK_PAGE_NEXT:
+		scroll_list(1, which_list());
+		continue;
+	    case DLGK_ITEM_PREV:
+		if (change_list(-1, which_list()))
+		    continue;
+		/* FALLTHRU */
+	    case DLGK_FIELD_PREV:
+		show_buttons = TRUE;
+		do {
+		    state = dlg_prev_ok_buttonindex(state, sDIRS);
+		} while (!usable_state(state, &d_list, &f_list));
+		continue;
+	    case DLGK_ITEM_NEXT:
+		if (change_list(1, which_list()))
+		    continue;
+		/* FALLTHRU */
+	    case DLGK_FIELD_NEXT:
+		show_buttons = TRUE;
+		do {
+		    state = dlg_next_ok_buttonindex(state, sDIRS);
+		} while (!usable_state(state, &d_list, &f_list));
+		continue;
+	    case DLGK_SELECT:
+		completed = 0;
+		if (partial != 0) {
+		    free(partial);
+		    partial = 0;
+		}
+		if (state == sFILES && !dselect) {
+		    completed = data_of(&f_list);
+		} else if (state == sDIRS) {
+		    completed = data_of(&d_list);
+		} else {
+		    if (complete(input, &d_list, &f_list, &partial)) {
+			completed = partial;
+		    }
+		}
+		if (completed != 0) {
+		    state = sTEXT;
+		    show_buttons = TRUE;
+		    strcpy(leaf_of(input), completed);
+		    offset = (int) strlen(input);
+		    dlg_show_string(w_text, input, offset, inputbox_attr,
+				    0, 0, tbox_width, 0, first);
+		    if (partial != NULL) {
+			free(partial);
+			partial = 0;
+		    }
+		    continue;
+		} else {	/* if (state < sTEXT) */
+		    (void) beep();
+		    continue;
+		}
+		/* FALLTHRU */
+	    case DLGK_ENTER:
+		result = (state > 0) ? dlg_enter_buttoncode(state) : DLG_EXIT_OK;
+		continue;
+	    case DLGK_LEAVE:
+		if (state >= 0)
+		    result = dlg_ok_buttoncode(state);
+		break;
+#ifdef KEY_RESIZE
+	    case KEY_RESIZE:
+		dlg_will_resize(dialog);
+		/* reset data */
+		height = old_height;
+		width = old_width;
+		show_buttons = TRUE;
+		*current = 0;
+		resized = TRUE;
+		/* repaint */
+		free_list(&d_list, FALSE);
+		free_list(&f_list, FALSE);
+		_dlg_resize_cleanup(dialog);
+		goto retry;
+#endif
+	    default:
+		if (key >= DLGK_MOUSE(MOUSE_T)) {
+		    state = sTEXT;
+		    continue;
+		} else if (key >= DLGK_MOUSE(MOUSE_F)) {
+		    if (f_list.win != 0) {
+			state = sFILES;
+			f_list.choice = (key - DLGK_MOUSE(MOUSE_F)) + f_list.offset;
+			display_list(&f_list);
+		    }
+		    continue;
+		} else if (key >= DLGK_MOUSE(MOUSE_D)) {
+		    if (d_list.win != 0) {
+			state = sDIRS;
+			d_list.choice = (key - DLGK_MOUSE(MOUSE_D)) + d_list.offset;
+			display_list(&d_list);
+		    }
+		    continue;
+		} else if (is_DLGK_MOUSE(key)
+			   && (code = dlg_ok_buttoncode(key - M_EVENT)) >= 0) {
+		    result = code;
+		    continue;
+		}
+		break;
+	    }
+	}
+
+	if (state < 0) {	/* Input box selected if we're editing */
+	    int edit = dlg_edit_string(input, &offset, key, fkey, first);
+
+	    if (edit) {
+		dlg_show_string(w_text, input, offset, inputbox_attr,
+				0, 0, tbox_width, 0, first);
+		first = FALSE;
+		state = sTEXT;
+	    }
+	} else if ((code = dlg_char_to_button(key, buttons)) >= 0) {
+	    result = dlg_ok_buttoncode(code);
+	    break;
+	}
+    }
+    AddLastKey();
+
+    dlg_unregister_window(w_text);
+    dlg_del_window(dialog);
+    dlg_mouse_free_regions();
+    free_list(&d_list, FALSE);
+    free_list(&f_list, FALSE);
+
+  finish:
+    if (partial != 0)
+	free(partial);
+    return result;
+}
+
+/*
+ * Display a dialog box for entering a filename
+ */
+int
+dialog_fselect(const char *title, const char *path, int height, int width)
+{
+    return dlg_fselect(title, path, height, width, FALSE);
+}
+
+/*
+ * Display a dialog box for entering a directory
+ */
+int
+dialog_dselect(const char *title, const char *path, int height, int width)
+{
+    return dlg_fselect(title, path, height, width, TRUE);
+}
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/menubox.c
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/menubox.c	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/dialog-1.3-20210621-new/menubox.c	(revision 343)
@@ -0,0 +1,814 @@
+/*
+ *  $Id: menubox.c,v 1.171 2020/11/23 21:03:11 tom Exp $
+ *
+ *  menubox.c -- implements the menu box
+ *
+ *  Copyright 2000-2019,2020	Thomas E. Dickey
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public Licens, version 2.1e
+ *  as published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to
+ *	Free Software Foundation, Inc.
+ *	51 Franklin St., Fifth Floor
+ *	Boston, MA 02110, USA.
+ *
+ *  An earlier version of this program lists as authors
+ *	Savio Lam (lam836@cs.cuhk.hk)
+ */
+
+#include <dlg_internals.h>
+#include <dlg_keys.h>
+
+typedef enum {
+    Unselected = 0,
+    Selected,
+    Editing
+} Mode;
+
+typedef struct {
+    /* the outer-window */
+    WINDOW *dialog;
+    int box_y;
+    int box_x;
+    int tag_x;
+    int item_x;
+    int menu_height;
+    int menu_width;
+    /* the inner-window */
+    WINDOW *menu;
+    DIALOG_LISTITEM *items;
+    int item_no;
+} ALL_DATA;
+
+#define MIN_HIGH  4
+
+#define INPUT_ROWS     3	/* rows per inputmenu entry */
+
+#define RowHeight(i) (is_inputmenu ? ((i) * INPUT_ROWS) : ((i) * 1))
+#define ItemToRow(i) (is_inputmenu ? ((i) * INPUT_ROWS + 1) : (i))
+#define RowToItem(i) (is_inputmenu ? ((i) / INPUT_ROWS + 0) : (i))
+
+/*
+ * Print menu item
+ */
+static void
+print_item(ALL_DATA * data,
+	   WINDOW *win,
+	   DIALOG_LISTITEM * item,
+	   int choice,
+	   Mode selected,
+	   bool is_inputmenu)
+{
+    chtype save = dlg_get_attrs(win);
+    int climit = (data->item_x - data->tag_x - GUTTER);
+    int my_width = data->menu_width;
+    int my_x = data->item_x;
+    int my_y = ItemToRow(choice);
+    bool both = (!dialog_vars.no_tags && !dialog_vars.no_items);
+    bool first = TRUE;
+    chtype bordchar;
+    const char *show = (dialog_vars.no_items
+			? item->name
+			: item->text);
+
+    switch (selected) {
+    default:
+    case Unselected:
+	bordchar = item_attr;
+	break;
+    case Selected:
+	bordchar = item_selected_attr;
+	break;
+    case Editing:
+	bordchar = dialog_attr;
+	break;
+    }
+
+    /* Clear 'residue' of last item and mark current current item */
+    if (is_inputmenu) {
+	int n;
+
+	dlg_attrset(win, (selected != Unselected) ? item_selected_attr : item_attr);
+	for (n = my_y - 1; n < my_y + INPUT_ROWS - 1; n++) {
+	    wmove(win, n, 0);
+	    wprintw(win, "%*s", my_width, " ");
+	}
+    } else {
+	dlg_attrset(win, menubox_attr);
+	wmove(win, my_y, 0);
+	wprintw(win, "%*s", my_width, " ");
+    }
+
+    /* highlight first char of the tag to be special */
+    if (both) {
+	(void) wmove(win, my_y, data->tag_x);
+	dlg_print_listitem(win, item->name, climit, first, selected);
+	first = FALSE;
+    }
+
+    /* Draw the input field box (only for inputmenu) */
+    (void) wmove(win, my_y, my_x);
+    if (is_inputmenu) {
+	my_width -= 1;
+	dlg_draw_box(win, my_y - 1, my_x, INPUT_ROWS, my_width - my_x - data->tag_x,
+		     bordchar,
+		     bordchar);
+	my_width -= 1;
+	++my_x;
+    }
+
+    /* print actual item */
+    wmove(win, my_y, my_x);
+    dlg_print_listitem(win, show, my_width - my_x, first, selected);
+
+    if (selected) {
+	dlg_item_help(item->help);
+    }
+    dlg_attrset(win, save);
+}
+
+/*
+ * Allow the user to edit the text of a menu entry.
+ */
+static int
+input_menu_edit(ALL_DATA * data,
+		DIALOG_LISTITEM * items,
+		int choice,
+		char **resultp)
+{
+    chtype save = dlg_get_attrs(data->menu);
+    char *result;
+    int offset = 0;
+    int key = 0, fkey = 0;
+    bool first = TRUE;
+    /* see above */
+    bool is_inputmenu = TRUE;
+    int y = ItemToRow(choice);
+    int code = TRUE;
+    int max_len = dlg_max_input(MAX((int) strlen(items->text) + 1, MAX_LEN));
+
+    result = dlg_malloc(char, (size_t) max_len);
+    assert_ptr(result, "input_menu_edit");
+
+    /* original item is used to initialize the input string. */
+    result[0] = '\0';
+    strcpy(result, items->text);
+
+    print_item(data, data->menu, items, choice, Editing, TRUE);
+
+    /* taken out of inputbox.c - but somewhat modified */
+    for (;;) {
+	if (!first) {
+	    int check = DLG_EXIT_UNKNOWN;
+	    key = dlg_mouse_wgetch(data->menu, &fkey);
+	    if (dlg_result_key(key, fkey, &check)) {
+		if (check == DLG_EXIT_CANCEL) {
+		    code = FALSE;
+		    break;
+		} else {
+		    flash();
+		}
+	    }
+	}
+	if (dlg_edit_string(result, &offset, key, fkey, first)) {
+	    dlg_show_string(data->menu, result, offset, inputbox_attr,
+			    y,
+			    data->item_x + 1,
+			    data->menu_width - data->item_x - 3,
+			    FALSE, first);
+	    first = FALSE;
+	} else if (key == ESC || key == TAB) {
+	    code = FALSE;
+	    break;
+	} else {
+	    break;
+	}
+    }
+    print_item(data, data->menu, items, choice, Selected, TRUE);
+    dlg_attrset(data->menu, save);
+
+    *resultp = result;
+    return code;
+}
+
+static int
+handle_button(int code, DIALOG_LISTITEM * items, int choice)
+{
+    char *help_result;
+
+    switch (code) {
+    case DLG_EXIT_OK:		/* FALLTHRU */
+    case DLG_EXIT_EXTRA:
+	dlg_add_string(items[choice].name);
+	break;
+    case DLG_EXIT_HELP:
+	dlg_add_help_listitem(&code, &help_result, &items[choice]);
+	dlg_add_string(help_result);
+	break;
+    }
+    AddLastKey();
+    return code;
+}
+
+int
+dlg_renamed_menutext(DIALOG_LISTITEM * items, int current, char *newtext)
+{
+    if (dialog_vars.input_result)
+	dialog_vars.input_result[0] = '\0';
+    dlg_add_result("RENAMED ");
+    dlg_add_string(items[current].name);
+    dlg_add_result(" ");
+    dlg_add_string(newtext);
+    AddLastKey();
+    return DLG_EXIT_EXTRA;
+}
+
+int
+dlg_dummy_menutext(DIALOG_LISTITEM * items, int current, char *newtext)
+{
+    (void) items;
+    (void) current;
+    (void) newtext;
+    return DLG_EXIT_ERROR;
+}
+
+static void
+print_menu(ALL_DATA * data, int choice, int scrollamt, int max_choice, bool is_inputmenu)
+{
+    int i;
+
+    for (i = 0; i < max_choice; i++) {
+	print_item(data,
+		   data->menu,
+		   &data->items[i + scrollamt],
+		   i,
+		   (i == choice) ? Selected : Unselected,
+		   is_inputmenu);
+    }
+
+    /* Clean bottom lines */
+    if (is_inputmenu) {
+	int spare_lines, x_count;
+	spare_lines = data->menu_height % INPUT_ROWS;
+	dlg_attrset(data->menu, menubox_attr);
+	for (; spare_lines; spare_lines--) {
+	    wmove(data->menu, data->menu_height - spare_lines, 0);
+	    for (x_count = 0; x_count < data->menu_width;
+		 x_count++) {
+		waddch(data->menu, ' ');
+	    }
+	}
+    }
+
+    (void) wnoutrefresh(data->menu);
+
+    dlg_draw_scrollbar(data->dialog,
+		       scrollamt,
+		       scrollamt,
+		       scrollamt + max_choice,
+		       data->item_no,
+		       data->box_x,
+		       data->box_x + data->menu_width,
+		       data->box_y,
+		       data->box_y + data->menu_height + 1,
+		       menubox_border2_attr,
+		       menubox_border_attr);
+}
+
+static bool
+check_hotkey(DIALOG_LISTITEM * items, int choice)
+{
+    bool result = FALSE;
+
+    if (dlg_match_char(dlg_last_getc(),
+		       (dialog_vars.no_tags
+			? items[choice].text
+			: items[choice].name))) {
+	result = TRUE;
+    }
+    return result;
+}
+
+/*
+ * This is an alternate interface to 'menu' which allows the application
+ * to read the list item states back directly without putting them in the
+ * output buffer.
+ */
+int
+dlg_menu(const char *title,
+	 const char *cprompt,
+	 int height,
+	 int width,
+	 int menu_height,
+	 int item_no,
+	 DIALOG_LISTITEM * items,
+	 int *current_item,
+	 DIALOG_INPUTMENU rename_menutext)
+{
+    /* *INDENT-OFF* */
+    static DLG_KEYS_BINDING binding[] = {
+	HELPKEY_BINDINGS,
+	ENTERKEY_BINDINGS,
+	TOGGLEKEY_BINDINGS,
+	DLG_KEYS_DATA( DLGK_FIELD_NEXT,	KEY_RIGHT ),
+	DLG_KEYS_DATA( DLGK_FIELD_NEXT,	TAB ),
+	DLG_KEYS_DATA( DLGK_FIELD_PREV,	KEY_BTAB ),
+	DLG_KEYS_DATA( DLGK_FIELD_PREV,	KEY_LEFT ),
+	DLG_KEYS_DATA( DLGK_ITEM_NEXT,	'+' ),
+	DLG_KEYS_DATA( DLGK_ITEM_NEXT,	KEY_DOWN ),
+	DLG_KEYS_DATA( DLGK_ITEM_NEXT,  CHR_NEXT ),
+	DLG_KEYS_DATA( DLGK_ITEM_PREV,	'-' ),
+	DLG_KEYS_DATA( DLGK_ITEM_PREV,	KEY_UP ),
+	DLG_KEYS_DATA( DLGK_ITEM_PREV,  CHR_PREVIOUS ),
+	DLG_KEYS_DATA( DLGK_PAGE_FIRST,	KEY_HOME ),
+	DLG_KEYS_DATA( DLGK_PAGE_LAST,	KEY_END ),
+	DLG_KEYS_DATA( DLGK_PAGE_LAST,	KEY_LL ),
+	DLG_KEYS_DATA( DLGK_PAGE_NEXT,	KEY_NPAGE ),
+	DLG_KEYS_DATA( DLGK_PAGE_PREV,	KEY_PPAGE ),
+	END_KEYS_BINDING
+    };
+    static DLG_KEYS_BINDING binding2[] = {
+	INPUTSTR_BINDINGS,
+	HELPKEY_BINDINGS,
+	ENTERKEY_BINDINGS,
+	END_KEYS_BINDING
+    };
+    /* *INDENT-ON* */
+
+#ifdef KEY_RESIZE
+    int old_LINES = LINES;
+    int old_COLS = COLS;
+    int old_height = height;
+    int old_width = width;
+#endif
+    ALL_DATA all;
+    int i, j, x, y, cur_x, cur_y;
+    int fkey;
+    int button = dialog_state.visit_items ? -1 : dlg_default_button();
+    int choice = dlg_default_listitem(items);
+    int result = DLG_EXIT_UNKNOWN;
+    int scrollamt = 0;
+    int max_choice;
+    int use_width, name_width, text_width, list_width;
+    WINDOW *dialog, *menu;
+    char *prompt = 0;
+    const char **buttons = dlg_ok_labels();
+    bool is_inputmenu = ((rename_menutext != 0)
+			 && (rename_menutext != dlg_dummy_menutext));
+
+    DLG_TRACE(("# menubox args:\n"));
+    DLG_TRACE2S("title", title);
+    DLG_TRACE2S("message", cprompt);
+    DLG_TRACE2N("height", height);
+    DLG_TRACE2N("width", width);
+    DLG_TRACE2N("lheight", menu_height);
+    DLG_TRACE2N("llength", item_no);
+    /* FIXME dump the items[][] too */
+    DLG_TRACE2N("rename", rename_menutext != 0);
+
+    dialog_state.plain_buttons = TRUE;
+
+    all.items = items;
+    all.item_no = item_no;
+
+    dlg_does_output();
+
+#ifdef KEY_RESIZE
+  retry:
+#endif
+
+    prompt = dlg_strclone(cprompt);
+    dlg_tab_correct_str(prompt);
+
+    all.menu_height = menu_height;
+    use_width = dlg_calc_list_width(item_no, items) + 10;
+    use_width = MAX(26, use_width);
+    if (all.menu_height == 0) {
+	/* calculate height without items (4) */
+	dlg_auto_size(title, prompt, &height, &width, MIN_HIGH, use_width);
+	dlg_calc_listh(&height, &all.menu_height, item_no);
+    } else {
+	dlg_auto_size(title, prompt,
+		      &height, &width,
+		      MIN_HIGH + all.menu_height, use_width);
+    }
+    dlg_button_layout(buttons, &width);
+    dlg_print_size(height, width);
+    dlg_ctl_size(height, width);
+
+    x = dlg_box_x_ordinate(width);
+    y = dlg_box_y_ordinate(height);
+
+    dialog = dlg_new_window(height, width, y, x);
+    all.dialog = dialog;
+
+    dlg_register_window(dialog, "menubox", binding);
+    dlg_register_buttons(dialog, "menubox", buttons);
+
+    dlg_mouse_setbase(x, y);
+
+    dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr);
+    dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr);
+    dlg_draw_title(dialog, title);
+
+    dlg_attrset(dialog, dialog_attr);
+    dlg_print_autowrap(dialog, prompt, height, width);
+
+    all.menu_width = width - 6;
+    getyx(dialog, cur_y, cur_x);
+    all.box_y = cur_y + 1;
+    all.box_x = (width - all.menu_width) / 2 - 1;
+
+    /*
+     * After displaying the prompt, we know how much space we really have.
+     * Limit the list to avoid overwriting the ok-button.
+     */
+    all.menu_height = height - MIN_HIGH - cur_y;
+    if (all.menu_height <= 0)
+	all.menu_height = 1;
+
+    /* Find out maximal number of displayable items at once. */
+    max_choice = MIN(all.menu_height,
+		     RowHeight(item_no));
+    if (is_inputmenu)
+	max_choice /= INPUT_ROWS;
+
+    /* create new window for the menu */
+    menu = dlg_sub_window(dialog, all.menu_height, all.menu_width,
+			  y + all.box_y + 1,
+			  x + all.box_x + 1);
+    all.menu = menu;
+
+    dlg_register_window(menu, "menu", binding2);
+    dlg_register_buttons(menu, "menu", buttons);
+
+    /* draw a box around the menu items */
+    dlg_draw_box(dialog,
+		 all.box_y, all.box_x,
+		 all.menu_height + 2, all.menu_width + 2,
+		 menubox_border_attr, menubox_border2_attr);
+
+    name_width = 0;
+    text_width = 0;
+
+    /* Find length of longest item to center menu  *
+     * only if --menu was given, using --inputmenu *
+     * won't be centered.                         */
+    for (i = 0; i < item_no; i++) {
+	name_width = MAX(name_width, dlg_count_columns(items[i].name));
+	text_width = MAX(text_width, dlg_count_columns(items[i].text));
+    }
+
+    /* If the name+text is wider than the list is allowed, then truncate
+     * one or both of them.  If the name is no wider than 30% of the list,
+     * leave it intact.
+     *
+     * FIXME: the gutter width and name/list ratio should be configurable.
+     */
+    use_width = (all.menu_width - GUTTER);
+    if (dialog_vars.no_tags) {
+	list_width = MIN(use_width, text_width);
+    } else if (dialog_vars.no_items) {
+	list_width = MIN(use_width, name_width);
+    } else {
+	if (text_width >= 0
+	    && name_width >= 0
+	    && use_width > 0
+	    && text_width + name_width > use_width) {
+	    int need = (int) (0.30 * use_width);
+	    if (name_width > need) {
+		int want = (int) (use_width
+				  * ((double) name_width)
+				  / (text_width + name_width));
+		name_width = (want > need) ? want : need;
+	    }
+	    text_width = use_width - name_width;
+	}
+	list_width = (text_width + name_width);
+    }
+
+    all.tag_x = (is_inputmenu
+		 ? 0
+		 : (use_width - list_width) / 2);
+    all.item_x = ((dialog_vars.no_tags
+		   ? 0
+		   : (dialog_vars.no_items
+		      ? 0
+		      : (GUTTER + name_width)))
+		  + all.tag_x);
+
+    if (choice - scrollamt >= max_choice) {
+	scrollamt = choice - (max_choice - 1);
+	choice = max_choice - 1;
+    }
+
+    print_menu(&all, choice, scrollamt, max_choice, is_inputmenu);
+
+    /* register the new window, along with its borders */
+    dlg_mouse_mkbigregion(all.box_y + 1, all.box_x,
+			  all.menu_height + 2, all.menu_width + 2,
+			  KEY_MAX, 1, 1, 1 /* by lines */ );
+
+    dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width);
+
+    dlg_trace_win(dialog);
+
+    while (result == DLG_EXIT_UNKNOWN) {
+	int key, found;
+
+	if (button < 0)		/* --visit-items */
+	    wmove(dialog,
+		  all.box_y + ItemToRow(choice) + 1,
+		  all.box_x + all.tag_x + 1);
+
+	key = dlg_mouse_wgetch(dialog, &fkey);
+	if (dlg_result_key(key, fkey, &result)) {
+	    if (!dlg_button_key(result, &button, &key, &fkey))
+		break;
+	}
+
+	found = FALSE;
+	if (fkey) {
+	    /*
+	     * Allow a mouse-click on a box to switch selection to that box.
+	     * Handling a button click is a little more complicated, since we
+	     * push a KEY_ENTER back onto the input stream so we'll put the
+	     * cursor at the right place before handling the "keypress".
+	     */
+	    if (key >= DLGK_MOUSE(KEY_MAX)) {
+		key -= DLGK_MOUSE(KEY_MAX);
+		i = RowToItem(key);
+		if (i < max_choice) {
+		    found = TRUE;
+		} else {
+		    beep();
+		    continue;
+		}
+	    } else if (is_DLGK_MOUSE(key)
+		       && dlg_ok_buttoncode(key - M_EVENT) >= 0) {
+		button = (key - M_EVENT);
+		ungetch('\n');
+		continue;
+	    }
+	} else {
+	    /*
+	     * Check if key pressed matches first character of any item tag in
+	     * list.  If there is more than one match, we will cycle through
+	     * each one as the same key is pressed repeatedly.
+	     */
+	    if (button < 0 || !dialog_state.visit_items) {
+		for (j = scrollamt + choice + 1; j < item_no; j++) {
+		    if (check_hotkey(items, j)) {
+			found = TRUE;
+			i = j - scrollamt;
+			break;
+		    }
+		}
+		if (!found) {
+		    for (j = 0; j <= scrollamt + choice; j++) {
+			if (check_hotkey(items, j)) {
+			    found = TRUE;
+			    i = j - scrollamt;
+			    break;
+			}
+		    }
+		}
+		if (found)
+		    dlg_flush_getc();
+	    } else if ((j = dlg_char_to_button(key, buttons)) >= 0) {
+		button = j;
+		ungetch('\n');
+		continue;
+	    }
+
+	    /*
+	     * A single digit (1-9) positions the selection to that line in the
+	     * current screen.
+	     */
+	    if (!found
+		&& (key <= '9')
+		&& (key > '0')
+		&& (key - '1' < max_choice)) {
+		found = TRUE;
+		i = key - '1';
+	    }
+	}
+
+	if (!found && fkey) {
+	    found = TRUE;
+	    switch (key) {
+	    case DLGK_PAGE_FIRST:
+		i = -scrollamt;
+		break;
+	    case DLGK_PAGE_LAST:
+		i = item_no - 1 - scrollamt;
+		break;
+	    case DLGK_MOUSE(KEY_PPAGE):
+	    case DLGK_PAGE_PREV:
+		if (choice)
+		    i = 0;
+		else if (scrollamt != 0)
+		    i = -MIN(scrollamt, max_choice);
+		else
+		    continue;
+		break;
+	    case DLGK_MOUSE(KEY_NPAGE):
+	    case DLGK_PAGE_NEXT:
+		i = MIN(choice + max_choice, item_no - scrollamt - 1);
+		break;
+	    case DLGK_ITEM_PREV:
+		i = choice - 1;
+		if (choice == 0 && scrollamt == 0)
+		    continue;
+		break;
+	    case DLGK_ITEM_NEXT:
+		i = choice + 1;
+		if (scrollamt + choice >= item_no - 1)
+		    continue;
+		break;
+	    default:
+		found = FALSE;
+		break;
+	    }
+	}
+
+	if (found) {
+	    if (i != choice) {
+		getyx(dialog, cur_y, cur_x);
+		if (i < 0 || i >= max_choice) {
+		    if (i < 0) {
+			scrollamt += i;
+			choice = 0;
+		    } else {
+			choice = max_choice - 1;
+			scrollamt += (i - max_choice + 1);
+		    }
+		    print_menu(&all, choice, scrollamt, max_choice, is_inputmenu);
+		} else {
+		    choice = i;
+		    print_menu(&all, choice, scrollamt, max_choice, is_inputmenu);
+		    (void) wmove(dialog, cur_y, cur_x);
+		    wrefresh(dialog);
+		}
+	    }
+	    continue;		/* wait for another key press */
+	}
+
+	if (fkey) {
+	    switch (key) {
+	    case DLGK_FIELD_PREV:
+		button = dlg_prev_button(buttons, button);
+		dlg_draw_buttons(dialog, height - 2, 0, buttons, button,
+				 FALSE, width);
+		break;
+
+	    case DLGK_FIELD_NEXT:
+		button = dlg_next_button(buttons, button);
+		dlg_draw_buttons(dialog, height - 2, 0, buttons, button,
+				 FALSE, width);
+		break;
+
+	    case DLGK_TOGGLE:
+	    case DLGK_ENTER:
+	    case DLGK_LEAVE:
+		result = ((key == DLGK_LEAVE)
+			  ? dlg_ok_buttoncode(button)
+			  : dlg_enter_buttoncode(button));
+
+		/*
+		 * If dlg_menu() is called from dialog_menu(), we want to
+		 * capture the results into dialog_vars.input_result.
+		 */
+		if (result == DLG_EXIT_ERROR) {
+		    result = DLG_EXIT_UNKNOWN;
+		} else if (is_inputmenu
+			   || rename_menutext == dlg_dummy_menutext) {
+		    result = handle_button(result,
+					   items,
+					   scrollamt + choice);
+		}
+
+		/*
+		 * If we have a rename_menutext function, interpret the Extra
+		 * button as a request to rename the menu's text.  If that
+		 * function doesn't return "Unknown", we will exit from this
+		 * function.  Usually that is done for dialog_menu(), so the
+		 * shell script can use the updated value.  If it does return
+		 * "Unknown", update the list item only.  A direct caller of
+		 * dlg_menu() can free the renamed value - we cannot.
+		 */
+		if (is_inputmenu && result == DLG_EXIT_EXTRA) {
+		    char *tmp;
+
+		    if (input_menu_edit(&all,
+					&items[scrollamt + choice],
+					choice,
+					&tmp)) {
+			result = rename_menutext(items, scrollamt + choice, tmp);
+			if (result == DLG_EXIT_UNKNOWN) {
+			    items[scrollamt + choice].text = tmp;
+			} else {
+			    free(tmp);
+			}
+		    } else {
+			result = DLG_EXIT_UNKNOWN;
+			print_item(&all,
+				   menu,
+				   &items[scrollamt + choice],
+				   choice,
+				   Selected,
+				   is_inputmenu);
+			(void) wnoutrefresh(menu);
+			free(tmp);
+		    }
+
+		    if (result == DLG_EXIT_UNKNOWN) {
+			dlg_draw_buttons(dialog, height - 2, 0,
+					 buttons, button, FALSE, width);
+		    }
+		}
+		break;
+#ifdef KEY_RESIZE
+	    case KEY_RESIZE:
+		dlg_will_resize(dialog);
+		/* reset data */
+		resizeit(height, LINES);
+		resizeit(width, COLS);
+		free(prompt);
+		_dlg_resize_cleanup(dialog);
+		/* repaint */
+		goto retry;
+#endif
+	    default:
+		flash();
+		break;
+	    }
+	}
+    }
+
+    dlg_mouse_free_regions();
+    dlg_unregister_window(menu);
+    dlg_del_window(dialog);
+    free(prompt);
+
+    *current_item = scrollamt + choice;
+
+    DLG_TRACE2N("current", *current_item);
+    return result;
+}
+
+/*
+ * Display a menu for choosing among a number of options
+ */
+int
+dialog_menu(const char *title,
+	    const char *cprompt,
+	    int height,
+	    int width,
+	    int menu_height,
+	    int item_no,
+	    char **items)
+{
+    int result;
+    int choice;
+    int i, j;
+    DIALOG_LISTITEM *listitems;
+
+    listitems = dlg_calloc(DIALOG_LISTITEM, (size_t) item_no + 1);
+    assert_ptr(listitems, "dialog_menu");
+
+    for (i = j = 0; i < item_no; ++i) {
+	listitems[i].name = items[j++];
+	listitems[i].text = (dialog_vars.no_items
+			     ? dlg_strempty()
+			     : items[j++]);
+	listitems[i].help = ((dialog_vars.item_help)
+			     ? items[j++]
+			     : dlg_strempty());
+    }
+    dlg_align_columns(&listitems[0].text, sizeof(DIALOG_LISTITEM), item_no);
+
+    result = dlg_menu(title,
+		      cprompt,
+		      height,
+		      width,
+		      menu_height,
+		      item_no,
+		      listitems,
+		      &choice,
+		      (dialog_vars.input_menu
+		       ? dlg_renamed_menutext
+		       : dlg_dummy_menutext));
+
+    dlg_free_columns(&listitems[0].text, sizeof(DIALOG_LISTITEM), item_no);
+    free(listitems);
+    return result;
+}
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/file.list
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/file.list	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog/create-1.3-20210621-patch/file.list	(revision 343)
@@ -0,0 +1,4 @@
+dialog-1.3-20210621/checklist.c
+dialog-1.3-20210621/dialog-config.in
+dialog-1.3-20210621/fselect.c
+dialog-1.3-20210621/menubox.c
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog/dialogrc
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog/dialogrc	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog/dialogrc	(revision 343)
@@ -0,0 +1,144 @@
+#
+# Run-time configuration file for dialog, matches Radix color scheme.
+#
+# Types of values:
+#
+# Number     -  <number>
+# String     -  "string"
+# Boolean    -  <ON|OFF>
+# Attribute  -  (foreground,background,highlight?)
+
+# Set aspect-ration.
+aspect = 0
+
+# Set separator (for multiple widgets output).
+separate_widget = ""
+
+# Set tab-length (for textbox tab-conversion).
+tab_len = 0
+
+# Make tab-traversal for checklist, etc., include the list.
+visit_items = OFF
+
+# Shadow dialog boxes? This also turns on color.
+use_shadow = ON
+
+# Turn color support ON or OFF
+use_colors = ON
+
+# Screen color
+screen_color = (WHITE,BLACK,ON)
+
+# Shadow color
+shadow_color = (BLACK,BLACK,OFF)
+
+# Dialog box color
+dialog_color = (BLACK,WHITE,OFF)
+
+# Dialog box title color
+title_color = (BLACK,WHITE,ON)
+
+# Dialog box border color
+border_color = (WHITE,WHITE,ON)
+
+
+# Active button color
+button_active_color = (WHITE,BLACK,ON)
+
+# Inactive button color
+button_inactive_color = (BLACK,WHITE,OFF)
+
+# Active button key color
+button_key_active_color = (YELLOW,BLACK,ON)
+
+# Inactive button key color
+button_key_inactive_color = (RED,WHITE,ON)
+
+# Active button label color
+button_label_active_color = (WHITE,BLACK,ON)
+
+# Inactive button label color
+button_label_inactive_color = (BLACK,WHITE,ON)
+
+# Input box color
+inputbox_color = (BLUE,WHITE,ON)
+
+# Input box border color
+inputbox_border_color = (WHITE,WHITE,ON)
+
+# Search box color
+searchbox_color = (YELLOW,WHITE,ON)
+
+# Search box title color
+searchbox_title_color = (WHITE,WHITE,ON)
+
+# Search box border color
+searchbox_border_color = (RED,WHITE,OFF)
+
+# File position indicator color
+position_indicator_color = (RED,WHITE,ON)
+
+# Menu box color
+menubox_color = dialog_color
+
+# Menu box border color
+menubox_border_color = border_color
+
+# Item color
+item_color = (BLACK,WHITE,ON)
+
+# Selected item color
+item_selected_color = (BLACK,WHITE,OFF)
+
+# Tag color
+tag_color = (BLACK,WHITE,ON)
+
+# Selected tag color
+tag_selected_color = (BLACK,WHITE,OFF)
+
+# Tag key color
+tag_key_color = (RED,WHITE,ON)
+
+# Selected tag key color
+tag_key_selected_color = (YELLOW,BLACK,ON)
+
+# Check box color
+check_color = dialog_color
+
+# Selected check box color
+check_selected_color = (RED,WHITE,ON)
+
+
+# Up arrow color
+uarrow_color = (RED,WHITE,OFF)
+
+# Down arrow color
+darrow_color = uarrow_color
+
+
+# Item help-text color
+itemhelp_color = shadow_color
+
+# Active form text color
+form_active_text_color = inputbox_color
+
+# Form text color
+form_text_color = (BLACK,WHITE,ON)
+
+# Readonly form item color
+form_item_readonly_color = (CYAN,WHITE,ON)
+
+# Dialog box gauge color
+gauge_color = (BLACK,WHITE,ON)
+
+# Dialog box border2 color
+border2_color = dialog_color
+
+# Input box border2 color
+inputbox_border2_color = border2_color
+
+# Search box border2 color
+searchbox_border2_color = border2_color
+
+# Menu box border2 color
+menubox_border2_color = border2_color
Index: toolchains-1.7.1/build-system/3pp/sources/packages/dialog
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/dialog	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/dialog	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources/packages/dialog
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/packages/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages/Makefile	(revision 343)
@@ -0,0 +1,14 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+SOURCE_REQUIRES += ALL_DIRS
+
+# ======= __END_OF_REQUIRES__ =======
+
+include ../../../../build-system/core.mk
+
+
+download_clean:
+	@true
+
+.PHONY: download_clean
Index: toolchains-1.7.1/build-system/3pp/sources/packages
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/packages	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/packages	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources/packages
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/build-system/3pp/sources/Makefile
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources/Makefile	(revision 343)
@@ -0,0 +1,14 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+SOURCE_REQUIRES += ALL_DIRS
+
+# ======= __END_OF_REQUIRES__ =======
+
+include ../../../build-system/core.mk
+
+
+download_clean:
+	@true
+
+.PHONY: download_clean
Index: toolchains-1.7.1/build-system/3pp/sources
===================================================================
--- toolchains-1.7.1/build-system/3pp/sources	(nonexistent)
+++ toolchains-1.7.1/build-system/3pp/sources	(revision 343)

Property changes on: toolchains-1.7.1/build-system/3pp/sources
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,8 ##
+
+# Target bin dirs
+etc
+gnattools
+sbin
+
+# Build system config files
+targets-config.mk
Index: toolchains-1.7.1/build-system/Makefile
===================================================================
--- toolchains-1.7.1/build-system/Makefile	(nonexistent)
+++ toolchains-1.7.1/build-system/Makefile	(revision 343)
@@ -0,0 +1,30 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_HOST)
+
+
+include config.mk
+
+REQUIRES  = build-system/3pp/dialog/1.3-20210621
+REQUIRES += build-system/3pp/gnattools/11.2.0
+
+# ======= __END_OF_REQUIRES__ =======
+
+
+config_makefile = targets-config.mk
+
+BUILD_TARGETS = $(config_makefile)
+
+CLEANUP_FILES += $(config_makefile)
+CLEANUP_FILES += $(CURDIR)/gnattools
+CLEANUP_FILES += $(CURDIR)/sbin
+CLEANUP_FILES += $(CURDIR)/etc
+
+# CORE Makefile:
+
+include core.mk
+
+# Dependencies:
+
+$(config_makefile): $(config_makefile).template
+	@echo "Creating $(config_makefile) ..."
+	@cp $(config_makefile).template $@
Index: toolchains-1.7.1/build-system/canonical-build
===================================================================
--- toolchains-1.7.1/build-system/canonical-build	(nonexistent)
+++ toolchains-1.7.1/build-system/canonical-build	(revision 343)
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+  i*:CYGWIN*:*)
+    echo ${UNAME_MACHINE}-pc-cygwin
+    exit ;;
+  *:MINGW*:*)
+    echo ${UNAME_MACHINE}-pc-mingw32
+    exit ;;
+  amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+    echo x86_64-unknown-cygwin
+    exit ;;
+  i*86:Linux:*:*)
+    if [ -f /etc/slackware-version ]; then
+      system=`cat /etc/slackware-version | cut -f 1 -d ' ' | tr 'S' 's'`
+      echo ${UNAME_MACHINE}-${system}-linux
+    else
+      echo ${UNAME_MACHINE}-unknown-linux-gnu
+    fi
+    exit ;;
+  x86_64:Linux:*:*)
+    if [ -f /etc/slamd64-version ]; then
+      system=`cat /etc/slamd64-version | cut -f 1 -d ' ' | tr 'S' 's'`
+      echo x86_64-${system}-linux
+    elif [ -f /etc/slackware-version ]; then
+      system=`cat /etc/slackware-version | cut -f 1 -d ' ' | tr 'S' 's'`
+      echo x86_64-${system}-linux
+    elif [ -f /etc/os-release ]; then
+      system=`cat /etc/os-release | grep -e '^ID=' | cut -f 2 -d '='`
+      echo x86_64-linux-gnu
+    else
+      echo x86_64-unknown-linux-gnu
+    fi
+    exit ;;
+esac
+
+####### echo "unknown-unknown-unknown-unknown"
+
+cat >&2 <<EOF
+
+`basename $0`: unable to reciognize build system type
+
+   MACHINE = '${UNAME_MACHINE}'
+   SYSTEM  = '${UNAME_SYSTEM}'
+   RELEASE = '${UNAME_RELEASE}'
+   VERSION = '${UNAME_VERSION}'
+
+EOF
+
+exit 1

Property changes on: toolchains-1.7.1/build-system/canonical-build
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/build-system/configure-targets
===================================================================
--- toolchains-1.7.1/build-system/configure-targets	(nonexistent)
+++ toolchains-1.7.1/build-system/configure-targets	(revision 343)
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+CWD=`pwd`
+
+BUILDSYSTEM=${BUILDSYSTEM:-$CWD}
+
+CONFIG=${CONFIG:-targets-config.mk}
+CONSTANTS=${CONSTANTS:-config.mk}
+
+if [ ! -r $CONFIG ] ; then
+  echo "$0: ERROR: There is no $CONFIG file for configuring target HW."
+  echo ""
+  exit 1
+fi
+
+: ${DIALOG=$BUILDSYSTEM/sbin/dialog}
+: ${DIALOGRC=$BUILDSYSTEM/etc/dialogrc}
+
+export DIALOGRC
+
+: ${DIALOG_OK=0}
+: ${DIALOG_CANCEL=1}
+: ${DIALOG_HELP=2}
+: ${DIALOG_EXTRA=3}
+: ${DIALOG_ITEM_HELP=4}
+: ${DIALOG_ESC=255}
+
+: ${SIG_NONE=0}
+: ${SIG_HUP=1}
+: ${SIG_INT=2}
+: ${SIG_QUIT=3}
+: ${SIG_KILL=9}
+: ${SIG_TERM=15}
+
+
+umask 002
+if [ ! -z "$TMPDIR" ] ; then mkdir -p $TMPDIR ; fi
+TMP=$(mkdir -p /tmp/radix && mktemp -d -p /tmp/radix build-system.XXXXXXXX) || { echo "Cannot create '/tmp/...' directory" ; exit 92; }
+trap "rm -rf $TMP" 0 $SIG_NONE $SIG_HUP $SIG_INT $SIG_QUIT $SIG_TERM
+
+
+hwlist=`cat $CONFIG | grep "^BUILD_.*[ \t]*=.*" | sed "s,^BUILD_\(.*\)[ \t]*=.*,\1," | tr 'A-Z' 'a-z' | tr '\n' ' ' | sed 's/host//g' | tr -s ' ' | sed 's/^[ \t]//' | sed 's/[ \t]$//'`
+
+for hw in $hwlist ; do
+  hh=`echo $hw | tr 'a-z' 'A-Z'`
+  spec=`cat $CONSTANTS | grep "^${hh}_SPEC[ \t]*=.*" | sed "s,^${hh}_SPEC[ \t]*=[ \t]*\(.*\),\1," | sed "s,\\\\\,,g"`
+  enabled=`cat $CONFIG | grep "^BUILD_${hh}[ \t]*=.*" | sed "s,^BUILD_${hh}[ \t]*=[ \t]*\(.*\),\1,"`
+  if [ "$enabled" == "true" ] ; then
+    en="on"
+  else
+    en="off"
+  fi
+  echo "\"$hw\" \"$spec\" \"$en\"" >> $TMP/sel$$
+done
+
+$DIALOG --colors \
+        --backtitle "\Z7Build System\Zn" \
+        --title " \Z1SELECTING TOOLCHAINS TO BUILD\Zn " \
+        --clear \
+        --checklist "\n\
+\Zb\Z4Please confirm the toolchains you want to build\Zn\ZB.\n\n\
+Use the UP/DOWN keys to scroll through the list, and the SPACE key\n\
+to deselect any items you don't want to build.\n\n\
+Press ENTER when you are done." \
+21 72 8 \
+        --file $TMP/sel$$  2> $TMP/ret$$
+
+retval=$?
+
+case $retval in
+  $DIALOG_OK)
+    enabled="`cat $TMP/ret$$`"
+    for hw in $hwlist ; do
+      hh=`echo $hw | tr 'a-z' 'A-Z'`
+      sed -i "s,^\(BUILD_${hh}[ \t]*=[ \t]*\).*,\1false," $CONFIG
+    done
+    for hw in $enabled ; do
+      hh=`echo $hw | tr 'a-z' 'A-Z'`
+      sed -i "s,^\(BUILD_${hh}[ \t]*=[ \t]*\).*,\1true," $CONFIG
+    done
+    ;;
+esac

Property changes on: toolchains-1.7.1/build-system/configure-targets
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/build-system/core.mk
===================================================================
--- toolchains-1.7.1/build-system/core.mk	(nonexistent)
+++ toolchains-1.7.1/build-system/core.mk	(revision 343)
@@ -0,0 +1,842 @@
+
+# include once
+ifndef CORE_MK
+
+#######
+####### helpful variables
+#######
+
+comma := ,
+empty :=
+space := $(empty) $(empty)
+
+
+#######
+####### Set up TOP_BUILD_DIR, TOP_BUILD_DIR_ABS and BUILDSYSTEM variables
+#######
+
+ifndef MAKEFILE_LIST
+
+# Work-around for GNU make pre-3.80, which lacks MAKEFILE_LIST and $(eval ...)
+
+TOP_BUILD_DIR := $(shell perl -e 'for ($$_ = "$(CURDIR)"; ! -d "$$_/build-system"; s!(.*)/(.*)!\1!) { $$q .= "../"; } chop $$q; print "$$q"')
+ifeq ($(TOP_BUILD_DIR),)
+TOP_BUILD_DIR=.
+endif
+export TOP_BUILD_DIR_ABS := $(shell perl -e 'for ($$_ = "$(CURDIR)"; ! -d "$$_/build-system"; s!(.*)/(.*)!\1!) { } print')
+export BUILDSYSTEM := $(TOP_BUILD_DIR_ABS)/build-system
+
+else
+
+# Normal operation for GNU make 3.80 and above
+
+__pop = $(patsubst %/,%,$(dir $(1)))
+__tmp := $(call __pop,$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
+# Special case for build-system/Makefile
+ifeq ($(__tmp),.)
+__tmp := ../$(notdir $(CURDIR))
+endif
+
+ifndef TOP_BUILD_DIR
+TOP_BUILD_DIR := $(call __pop,$(__tmp))
+endif
+
+ifndef TOP_BUILD_DIR_ABS
+TOP_BUILD_DIR_ABS := $(CURDIR)
+ifneq ($(TOP_BUILD_DIR),.)
+$(foreach ,$(subst /, ,$(TOP_BUILD_DIR)),$(eval TOP_BUILD_DIR_ABS := $(call __pop,$(TOP_BUILD_DIR_ABS))))
+endif
+export TOP_BUILD_DIR_ABS
+endif
+
+ifndef BUILDSYSTEM
+export BUILDSYSTEM := $(TOP_BUILD_DIR_ABS)/$(notdir $(__tmp))
+endif
+
+endif
+
+#######
+####### Set up SOURCE PACKAGE directory:
+#######
+
+export SRC_PACKAGE_DIR      := sources
+export SRC_PACKAGE_PATH     := $(TOP_BUILD_DIR)/$(SRC_PACKAGE_DIR)
+export SRC_PACKAGE_PATH_ABS := $(TOP_BUILD_DIR_ABS)/$(SRC_PACKAGE_DIR)
+
+
+
+#######
+####### Config:
+#######
+
+include $(BUILDSYSTEM)/config.mk
+
+TOOLCHAIN_ALL = $(strip $(foreach t, $(filter TOOLCHAIN_%,       \
+                                 $(filter-out TOOLCHAIN_ALL      \
+                                              TOOLCHAIN_NAMES    \
+                                              TOOLCHAIN_DIR      \
+                                              TOOLCHAIN_PATH     \
+                                              TOOLCHAIN_VERSION, \
+                                              $(.VARIABLES))), $($(t))))
+
+TOOLCHAIN_NAMES = $(filter-out $(TOOLCHAIN_NOARCH), $(TOOLCHAIN_ALL))
+
+COMPONENT_TOOLCHAINS = $(TOOLCHAIN_ALL)
+
+
+#######
+####### Set up targets etc
+#######
+
+ifneq ($(wildcard $(BUILDSYSTEM)/targets-config.mk),)
+include $(BUILDSYSTEM)/targets-config.mk
+else
+include $(BUILDSYSTEM)/targets-config.mk.template
+endif
+
+# Reading targets-config.mk:
+
+# BUILD_NOARCH always enabled:
+BUILD_NOARCH = true
+
+enabled = $(filter BUILD_%, $(filter-out BUILD_TARGETS BUILD_ARCH, $(.VARIABLES)))
+
+toolchain_filter = $(strip $(foreach t, \
+                     $(strip $(foreach b, \
+                       $(enabled), $(if $(filter true, $($(b))), \
+                         $(subst BUILD_, TOOLCHAIN_, $(b))))), $($(t))))
+
+
+# If no TOOLCHAIN set
+ifeq ($(TOOLCHAIN),)
+
+# COMPONENT_TARGETS must have a value specified in the Makefile
+ifeq ($(COMPONENT_TARGETS),)
+$(error Error: COMPONENT_TARGETS must have a value)
+endif
+
+# End if no TARGET set
+endif
+
+# Error ff TOOLCHAIN is invalid
+ifneq ($(TOOLCHAIN),)
+ifeq ($(filter $(TOOLCHAIN), $(TOOLCHAIN_ALL)),)
+$(error Error: TOOLCHAIN is invalid)
+endif
+endif
+
+
+#######
+####### Filter out disabled targets
+#######
+
+COMPONENT_TARGETS := $(filter $(toolchain_filter), $(COMPONENT_TARGETS))
+
+
+#######
+####### Targets setup:
+#######
+
+COMPONENT_TOOLCHAINS := $(filter $(COMPONENT_TARGETS),$(COMPONENT_TOOLCHAINS))
+
+
+#
+# TARGET, TOOLCHAIN_PATH variables should be set up for each makefile
+#
+
+# If toolchain version is not exported then we use default one 
+ifeq ($(TOOLCHAIN_VERSION),)
+TOOLCHAIN_VERSION = $(TOOLCHAINS_VERSION)
+endif
+
+#
+# Setup current toolchain variables
+#
+
+TOOLCHAIN_DIR  = $($(shell echo $(TOOLCHAIN) | tr '[a-z-]' '[A-Z_]')_DIR)
+TOOLCHAIN_PATH = $($(shell echo $(TOOLCHAIN) | tr '[a-z-]' '[A-Z_]')_PATH)/$(TOOLCHAIN_VERSION)
+TARGET         = $($(shell echo $(TOOLCHAIN) | tr '[a-z-]' '[A-Z_]')_ARCH)
+
+
+#######
+####### Configuration:
+#######
+
+# Build environment:
+
+DEST_DIR_ABS           = $(TOP_BUILD_DIR_ABS)/dist
+
+ifeq ($(NEEDS_ABS_PATHS),)
+DEST_DIR               = $(TOP_BUILD_DIR)/dist
+else
+DEST_DIR               = $(DEST_DIR_ABS)
+endif
+
+TARGET_DEST_DIR        = $(DEST_DIR)/$(TOOLCHAIN)
+
+
+################################################################
+# Check the list of available targets for current Makefile
+#
+__available_targets =                                                                 \
+  $(foreach arch, $(shell echo $(COMPONENT_TOOLCHAINS) | sed -e 's/x86_64/x86-64/g'), \
+    $(if $(FLAVOURS),                                                                 \
+      $(foreach flavour, $(FLAVOURS),                                                 \
+        .target_$(arch)_$(flavour)                                                    \
+       ) .target_$(arch),                                                             \
+      .target_$(arch)                                                                 \
+     )                                                                                \
+   )
+
+__available_targets := $(strip $(__available_targets))
+__available_targets := $(sort $(__available_targets))
+#
+#
+################################################################
+
+
+
+#######
+####### Number of CPU cores:
+#######
+
+NUMPROCS := 1
+OS       := $(shell uname -s)
+
+ifeq ($(OS),Linux)
+NUMPROCS := $(shell grep -c ^processor /proc/cpuinfo)
+endif
+
+
+#######
+####### Parallel control:
+#######
+
+ifneq ($(NO_PARALLEL),)
+MAKEFLAGS += -j1
+.NOTPARALLEL:
+endif
+
+ifeq ($(VERBOSE),)
+guiet = @
+else
+quiet =
+endif
+
+
+
+#######
+####### Default PREFIX:
+#######
+
+PREFIX ?= $(DEST_DIR)
+
+
+#######
+####### Setup ccache:
+#######
+
+ifeq ($(NO_CCACHE),)
+CCACHE = /usr/bin/ccache$(space)
+
+ifeq ($(wildcard $(CCACHE)),)
+$(info )
+$(info #######)
+$(info ####### Please install 'ccache' package)
+$(info ####### or disable ccache with "NO_CCACHE=1 make ...")
+$(info #######)
+$(info )
+$(error Error: ccache not found)
+endif
+
+ifeq ($(wildcard $(CACHED_CC_OUTPUT)),)
+$(info )
+$(info #######)
+$(info ####### Please create directory $(CACHED_CC_OUTPUT) for cached compiler output)
+$(info ####### or disable ccache with "NO_CCACHE=1 make ...")
+$(info #######)
+$(info )
+$(error Error: cached compiler output directory doesn't exist)
+endif
+
+export CCACHE_BASEDIR = $(TOP_BUILD_DIR_ABS)
+export CCACHE_DIR     = $(CACHED_CC_OUTPUT)
+export CCACHE_UMASK   = 000
+
+unexport CCACHE_PREFIX
+else
+CCACHE =
+endif
+
+
+
+#######
+####### Cleanup files:
+#######
+
+CLEANUP_FILES += .dist.*
+CLEANUP_FILES += $(addprefix ., $(TOOLCHAIN))
+CLEANUP_FILES += .*requires*
+CLEANUP_FILES += $(SRC_DIR)
+CLEANUP_FILES += $(SRC_DIR).back.??????
+
+
+#######
+####### Build rules:
+#######
+
+all: BUILD_TREE := true
+export BUILD_TREE
+
+all:
+	@$(MAKE) local_all
+
+#
+# clean is equal to local_clean
+#
+clean:
+	@$(MAKE) local_clean
+
+
+__quick_targets := help configure_targets local_clean downloads_clean targets-config.mk $(HACK_TARGETS)
+
+
+#
+# GLOBAL setup targets:
+# ====================
+#   These targets are built before all targets. For example, source tarballs
+#   have to be downloaded before starting the build.
+#
+#   NOTE:
+#     BUILDSYSTEM is a setup target for other directories and the BUILDSYSTEM
+#     requires only '.sources' target as a setup target.
+#
+ifeq ($(filter %_clean,$(MAKECMDGOALS)),)
+ifeq ($(shell pwd),$(BUILDSYSTEM))
+__setup_targets = .sources
+else
+__setup_targets = .sources .build_system
+endif
+endif
+
+
+
+.setup:
+ifeq ($(__final__),)
+.setup: $(__setup_targets)
+else
+.setup: .makefile
+endif
+
+
+# Check if Makefile has been changed:
+
+.makefile: Makefile
+ifneq ($(shell pwd),$(TOP_BUILD_DIR_ABS))
+ifneq ($(if $(MAKECMDGOALS),$(filter-out $(__quick_targets),$(MAKECMDGOALS)),true),)
+	@touch $@
+ifeq ($(shell pwd | grep $(TOP_BUILD_DIR_ABS)/$(SRC_PACKAGE_DIR))$(shell pwd | grep $(BUILDSYSTEM)/3pp/sources),)
+	@echo -e "\n======= New makefile ($(<F)), clean! ======="
+	@$(MAKE) dist_clean
+	@if $(MAKE) local_clean ; then true ; else rm -f $@ ; fi
+else
+	@if $(MAKE) download_clean ; then true ; else rm -f $@; fi
+endif
+endif
+endif
+
+
+
+#######
+####### Build directory dependencies into .src_requires  which
+####### is used as a Makefile for srource tarballs downloading
+#######
+
+.sources: .src_requires
+
+.src_requires_depend: .src_requires ;
+
+.src_requires: .makefile
+ifneq ($(shell pwd),$(TOP_BUILD_DIR_ABS))
+ifeq ($(filter %_clean,$(MAKECMDGOALS)),)
+ifeq ($(__final__),)
+	@echo ""
+	@echo -e "################################################################"
+	@echo -e "#######"
+	@echo -e "####### Start of building source requires for '$(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))':"
+	@echo -e "#######"
+	@$(BUILDSYSTEM)/build_src_requires $(TOP_BUILD_DIR_ABS)
+	@__final__= TREE_RULE=local_all $(MAKE) TOOLCHAIN=$(TOOLCHAIN_NOARCH) FLAVOUR= -f .src_requires
+	@echo -e "#######"
+	@echo -e "####### End of building source requires for '$(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))'."
+	@echo -e "#######"
+	@echo -e "################################################################"
+	@echo ""
+	@touch $@
+	@touch .src_requires_depend
+endif
+endif
+endif
+
+
+
+.build_system:
+ifneq ($(shell pwd),$(TOP_BUILD_DIR_ABS))
+ifeq ($(shell pwd | grep $(TOP_BUILD_DIR_ABS)/$(SRC_PACKAGE_DIR))$(shell pwd | grep $(BUILDSYSTEM)/3pp/sources),)
+ifeq ($(shell pwd | grep $(BUILDSYSTEM)),)
+	@echo -e "################################################################"
+	@echo -e "#######"
+	@echo -e "####### Start to Check the BUILDSYSTEM is ready:"
+	@echo -e "#######"
+	@( cd $(BUILDSYSTEM) ; __final__= $(MAKE) TOOLCHAIN=$(TOOLCHAIN_HOST) FLAVOUR= all )
+	@echo -e "#######"
+	@echo -e "####### End of checking the BUILDSYSTEM."
+	@echo -e "#######"
+	@echo -e "################################################################"
+endif
+endif
+endif
+
+
+
+#######
+####### Clean up default rules (not depend of TOOLCHAIN):
+#######
+
+dist_clean:
+	@if [ -f .dist ]; then $(BUILDSYSTEM)/dist_clean $(DEST_DIR); rm .dist; fi
+
+
+# NOTE:
+# ====
+#   Do not create directories with names that match the names of architectures!!!
+#
+tree_clean: .tree_clean
+
+.tree_clean:
+	@echo "Tree Clean..."
+	@$(BUILDSYSTEM)/tree_clean $(addprefix ., $(TOOLCHAIN_NAMES)) $(TOP_BUILD_DIR_ABS)
+
+
+#######
+####### Clean all downloaded source tarballs
+#######
+
+downloads_clean: .downloads_clean
+
+.downloads_clean:
+	@echo ""
+	@echo -e "#######"
+	@echo -e "####### Cleaning Up all downloaded sources..."
+	@echo -e "#######"
+	@$(BUILDSYSTEM)/downloads_clean $(addprefix ., $(TOOLCHAIN_NOARCH)) $(BUILDSYSTEM)/3pp/sources
+ifneq ($(wildcard $(TOP_BUILD_DIR_ABS)/$(SRC_PACKAGE_DIR)),)
+	@$(BUILDSYSTEM)/downloads_clean $(addprefix ., $(TOOLCHAIN_NOARCH)) $(TOP_BUILD_DIR_ABS)/$(SRC_PACKAGE_DIR)
+endif
+
+help:
+	@echo ""
+	@echo -e "You can build and install software using command line such as follow:"
+	@echo ""
+	@echo -e "   $$ [TOOLCHAIN_VERSION=version] [TOOLCHAIN=toolchain] [FLAVOUR=flavour] make [goal]"
+	@echo ""
+	@echo -e "The following MAKE goals are available:"
+	@echo ""
+	@echo -e "   all                - perform make build and install software in the all"
+	@echo -e "                        required directories which defined by REQUIRES"
+	@echo -e "                        variable in the local Makefile;"
+	@echo -e "   local_all          - build and install software prepared onlu by local"
+	@echo -e "                        Makefile;"
+	@echo -e "   dist_clean,"
+	@echo -e "   local_dist_clean   - remove distribution packages from target directory"
+	@echo -e "                        defined by PRODUCTS_DEST_DIR variable. Note that"
+	@echo -e "                        is depends from targets defined by COMPONENT_TARGETS"
+	@echo -e "                        variable or command line;"
+	@echo -e "   clean,"
+	@echo -e "   local_clean        - clean up all built targets by this Makefile;"
+	@echo ""
+	@echo -e "   If the one from above goals has prefix 'local_' then this goal affects only"
+	@echo -e "   current directory.  Otherwise this goal will be performed for all required"
+	@echo -e "   directories which defined by REQUIRES variable."
+	@echo ""
+	@echo -e "   configure_targets  - select toolchains you want to built."
+	@echo -e "                        This command edits the targets-config.mk file;"
+	@echo ""
+	@echo -e "   tree_clean         - clean up whole sourses tree excluding downloaded"
+	@echo -e "                        source tarballs;"
+	@echo -e "   downloads_clean    - remove all sourse tarball from 'sourses' directory;"
+	@echo ""
+	@echo -e "Local Makefile is prepared for following target toolchains:"
+	@echo ""
+	@for toolchain in $(COMPONENT_TARGETS) ; do \
+	  echo -e "   $$toolchain"; \
+	 done
+	@echo ""
+	@echo -e "Enjoy."
+	@echo ""
+
+configure_targets: $(BUILDSYSTEM)/targets-config.mk
+	@BUILDSYSTEM=$(BUILDSYSTEM)              \
+	 CONFIG=$(BUILDSYSTEM)/targets-config.mk \
+	 CONSTANTS=$(BUILDSYSTEM)/config.mk \
+	 $(BUILDSYSTEM)/configure-targets
+
+
+#######
+####### Source archive and patch handling
+#######
+
+# Patch dependency:
+PATCHES_DEP = $(foreach patch,$(PATCHES),\
+	$(shell $(BUILDSYSTEM)/apply_patches $(patch) -dep-))
+
+SRC_DIR_BASE = $(dir $(SRC_DIR))
+
+# Unpack SRC_ARCHIVE in SRC_DIR and backup old SRC_DIR:
+UNPACK_SRC_ARCHIVE = \
+	@echo "Expanding $(SRC_ARCHIVE)"; \
+	if [ -d $(SRC_DIR) ]; then mv $(SRC_DIR) $$(mktemp -d $(SRC_DIR).bak.XXXXXX); fi; \
+	mkdir -p $(SRC_DIR_BASE); \
+	$(if $(findstring .rpm,$(SRC_ARCHIVE)), \
+	  cd $(SRC_DIR_BASE) && rpm2cpio $(SRC_ARCHIVE) | cpio -id --quiet, \
+	  $(if $(findstring .zip,$(SRC_ARCHIVE)), \
+	    unzip -q -d $(SRC_DIR_BASE) $(SRC_ARCHIVE), \
+	    tar $(if $(findstring .bz2,$(SRC_ARCHIVE)),-xjf, \
+	             $(if $(findstring .xz,$(SRC_ARCHIVE)),-xJf, \
+	             $(if $(findstring .txz,$(SRC_ARCHIVE)),-xJf,-xzf))) \
+	      $(SRC_ARCHIVE) -C $(SRC_DIR_BASE))); \
+	chmod -R u+w $(SRC_DIR)
+
+# Apply patches in PATCHES on SRC_DIR_BASE:
+APPLY_PATCHES = $(quiet)$(foreach patch,$(PATCHES),\
+	$(BUILDSYSTEM)/apply_patches $(patch) $(SRC_DIR_BASE) &&) true
+
+# Apply optional patches in OPT_PATCHES on SRC_DIR_BASE:
+APPLY_OPT_PATCHES = $(quiet)$(foreach patch,$(OPT_PATCHES),\
+	$(BUILDSYSTEM)/apply_patches $(patch) $(SRC_DIR_BASE) &&) true
+
+
+# Example rule:
+#
+# src_done = $(SRC_DIR)/.source-done
+#
+# $(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+# 	$(UNPACK_SRC_ARCHIVE)
+# 	$(APPLY_PATCHES)
+# 	 <other stuff that needs to be done to the source,
+# 	   should be empty in most cases>
+# 	@touch $@
+
+
+################################################################
+#######
+####### Include files with references to BUILD-SYSTEM scripts:
+#######
+
+-include $(BUILDSYSTEM)/sbin/.config
+
+#######
+####### References to BUILD-SYSTEM scripts.
+#######
+################################################################
+
+
+
+
+################################################################
+#
+# No '__final__' target selected:
+# ==============================
+#
+# Parse TOOLCHAIN, HARDWARE, FLAVOUR selected in command line
+# and build the list of '__final__' targets.
+#
+ifeq ($(__final__),)
+
+#
+# The FLAVOUR can be defined in command line.
+# If command line defines empty flavour FLAVOUR= then
+# we define that variable is set but has no values.
+#
+__cmdline_flavour_defined = $(if $(filter FLAVOUR,$(.VARIABLES)),true,false)
+ifeq ($(__cmdline_flavour_defined),true)
+__cmdline_flavour_value = $(FLAVOUR)
+else
+__cmdline_flavour_value =
+endif
+
+
+##################################################
+# -----------+---------+-------------------+-----
+#  TOOLCHAIN | FLAVOUR | FLAVOUR has VALUE | REF
+# -----------+---------+-------------------+-----
+#    defined | defined |         no        | (0)
+#    defined | defined |         yes       | (1)
+#    defined |    ~    |         ~         | (2)
+#       ~    | defined |         no        | (3)
+#       ~    | defined |         yes       | (4)
+#       ~    |    ~    |         ~         | (5)
+# -----------+---------+-------------------+-----
+##################################################
+
+ifeq ($(TOOLCHAIN),)
+ifeq ($(__cmdline_flavour_defined),false)
+ifeq ($(FLAVOUR),)
+# (5) then we loop over all available flavours
+__target_args = $(__available_targets)
+endif
+else
+ifneq ($(FLAVOUR),)
+# (4) then we use only one defined flavour
+__target_args = $(foreach toolchain,                                                          \
+                    $(shell echo $(COMPONENT_TOOLCHAINS) | sed -e 's/x86_64/x86-64/g'),       \
+                    .target_$(toolchain)_$(FLAVOUR)                                           \
+                 )
+else
+# (3) then we define flavour as empty
+__target_args = $(foreach toolchain,                                                          \
+                    $(shell echo $(COMPONENT_TOOLCHAINS) | sed -e 's/x86_64/x86-64/g'),       \
+                    .target_$(toolchain)                                                      \
+                 )
+endif
+endif
+else
+ifeq ($(__cmdline_flavour_defined),false)
+ifeq ($(FLAVOUR),)
+# (2) then we loop over all available flavours
+__target_args = .target_$(shell echo $(TOOLCHAIN) | sed -e 's/x86_64/x86-64/g') $(if $(FLAVOURS), $(foreach flavour, $(FLAVOURS), .target_$(shell echo $(TOOLCHAIN) | sed -e 's/x86_64/x86-64/g')_$(flavour)),)
+endif
+else
+ifneq ($(FLAVOUR),)
+# (1) then we use only one defined flavour
+__target_args = .target_$(shell echo $(TOOLCHAIN) | sed -e 's/x86_64/x86-64/g')_$(FLAVOUR)
+else
+# (0) then we define flavour as empty
+__target_args = .target_$(shell echo $(TOOLCHAIN) | sed -e 's/x86_64/x86-64/g')
+endif
+endif
+endif
+
+
+__target_args := $(strip $(__target_args))
+
+
+__targets = $(filter $(__target_args), $(__available_targets))
+
+# Now we have to sort targets for that the main targets should be built before flavours!
+__targets := $(sort $(__targets))
+
+
+ifeq ($(__targets),)
+$(error Error: Selected combination [TOOLCHAIN=$(TOOLCHAIN), FLAVOUR=$(FLAVOUR)] is invalid for this Makefile)
+endif
+
+
+$(__targets): .setup
+
+local_all: GOAL = local_all
+local_all: $(__targets)
+
+local_clean: GOAL = local_clean
+local_clean: $(__targets)
+
+
+.target_%: TOOLCHAIN = $(shell echo $(word 2, $(subst _, , $@)) | sed -e 's/x86-64/x86_64/g')
+.target_%: FLAVOUR = $(word 3, $(subst _, , $@))
+.target_%:
+	@echo ""
+	@echo "======="
+	@echo "======= TOOLCHAIN: $(TOOLCHAIN); FLAVOUR =$(if $(FLAVOUR), $(FLAVOUR));  ====="
+	@echo "======="
+	@__final__=true $(MAKE) TOOLCHAIN=$(TOOLCHAIN) FLAVOUR=$(FLAVOUR) $(GOAL)
+
+else
+#
+################################################################
+#
+# The '__final__' target is defined, run the build process.
+
+
+# Target is selected, build it
+
+ifneq ($(NO_CREATE_DIST_FILES),true)
+local_all: CREATE_DIST_FILES = 1
+endif
+
+ifneq ($(findstring $(TOOLCHAIN),$(TOOLCHAIN_NAMES)),)
+ifeq ($(shell pwd),$(BUILDSYSTEM))
+$(shell mkdir -p .$(TOOLCHAIN))
+else
+$(shell mkdir -p .$(TOOLCHAIN)$(if $(FLAVOUR),/$(FLAVOUR)))
+endif
+endif
+
+# TOOLCHAIN/FLAVOUR depended directories
+
+ifneq ($(TOOLCHAIN),$(TOOLCHAIN_NOARCH))
+ifeq ($(shell pwd),$(BUILDSYSTEM))
+targetflavour = .$(TOOLCHAIN)
+else
+targetflavour = .$(TOOLCHAIN)$(if $(FLAVOUR),/$(FLAVOUR))
+endif
+else
+targetflavour = $(CURDIR)
+endif
+
+TARGET_BUILD_DIR = $(targetflavour)
+
+
+
+ifeq ($(BUILD_TREE),true)
+_tree := .tree_all
+else
+_tree := .requires_tree
+endif
+
+
+local_all: $(_tree) install
+
+local_clean:
+
+
+.tree_all: $(TARGET_BUILD_DIR)/.requires
+ifneq ($(shell pwd),$(TOP_BUILD_DIR_ABS))
+ifeq ($(shell pwd | grep $(TOP_BUILD_DIR_ABS)/$(SRC_PACKAGE_DIR))$(shell pwd | grep $(BUILDSYSTEM)/3pp/sources),)
+	@echo -e "################################################################"
+	@echo -e "#######"
+ifeq ($(shell pwd),$(BUILDSYSTEM))
+	@echo -e "####### Start of building requires for '$(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))':"
+else
+	@echo -e "####### Start of building requires for TOOLCHAIN=$(TOOLCHAIN) FLAVOUR=$(FLAVOUR) in '$(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))':"
+endif
+	@echo -e "#######"
+ifeq ($(shell pwd),$(BUILDSYSTEM))
+	@__final__=true TREE_RULE=local_all $(MAKE) TOOLCHAIN=$(TOOLCHAIN_HOST) FLAVOUR= -f $(TARGET_BUILD_DIR)/.requires
+else
+	@__final__=true TREE_RULE=local_all $(MAKE) TOOLCHAIN=$(TOOLCHAIN) FLAVOUR= -f $(TARGET_BUILD_DIR)/.requires
+endif
+	@echo -e "#######"
+	@echo -e "####### End of building requires for '$(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))'."
+	@echo -e "#######"
+	@echo -e "################################################################"
+endif
+endif
+
+
+.requires_tree: $(TARGET_BUILD_DIR)/.requires
+
+#######
+####### Build directory dependencies into $(TARGET_BUILD_DIR)/.requires
+####### file which is used as a Makefile for tree builds.
+#######
+
+$(TARGET_BUILD_DIR)/.requires_depend: $(TARGET_BUILD_DIR)/.requires ;
+
+$(TARGET_BUILD_DIR)/.requires: .makefile
+ifeq ($(filter %_clean,$(MAKECMDGOALS)),)
+ifneq ($(shell pwd),$(TOP_BUILD_DIR_ABS))
+ifeq ($(shell pwd | grep $(TOP_BUILD_DIR_ABS)/$(SRC_PACKAGE_DIR))$(shell pwd | grep $(BUILDSYSTEM)/3pp/sources),)
+ifeq ($(shell pwd),$(BUILDSYSTEM))
+	@$(BUILDSYSTEM)/build_requires $(TOP_BUILD_DIR_ABS) $(TOOLCHAIN_HOST) ; wait
+else
+	@$(BUILDSYSTEM)/build_requires $(TOP_BUILD_DIR_ABS) $(TOOLCHAIN) $(FLAVOUR) ; wait
+endif
+endif
+endif
+endif
+
+
+
+
+################################################################
+#######
+####### Waiting for build whole required tree:
+#######
+
+$(BUILD_TARGETS): | $(_tree)
+
+#######
+####### End of waiting for build whole required tree.
+#######
+################################################################
+
+$(PRODUCT_TARGETS) : | $(BUILD_TARGETS)
+
+
+#######
+####### Install:
+#######
+
+install: .install
+	@if [ "$$(echo .dist*)" != ".dist*" ]; then \
+	  sort -o .dist.tmp -u .dist* && mv .dist.tmp .dist; \
+	fi
+	@rm -f .dist.*
+
+
+.install: .install_builds .install_products
+
+
+
+
+.install_builds: $(BUILD_TARGETS)
+# Do nothing
+
+.install_products: DO_CREATE_DIST_FILES = $(CREATE_DIST_FILES)
+export DO_CREATE_DIST_FILES
+
+.install_products: $(PRODUCT_TARGETS)
+ifdef PRODUCT_TARGETS
+	@$(BUILDSYSTEM)/install_targets $^ $(PREFIX)/products
+endif
+
+
+
+
+#######
+####### Clean up default rules:
+#######
+
+clean: local_clean
+
+local_clean: .local_clean
+
+.local_clean:
+ifeq ($(shell pwd | grep $(TOP_BUILD_DIR_ABS)/$(SRC_PACKAGE_DIR))$(shell pwd | grep $(BUILDSYSTEM)/3pp/sources),)
+ifneq ($(wildcard .$(TOOLCHAIN)),)
+	@echo "Cleaning... $(TOOLCHAIN)"
+	@rm -rf $(CLEANUP_FILES)
+endif
+endif
+
+
+-include .src_requires_depend
+-include $(TARGET_BUILD_DIR)/.requires_depend
+
+
+endif
+#
+# end of ifeq ($(__final__),)
+#
+################################################################
+
+### Declare some targets as phony
+
+.PHONY: .target*
+.PHONY: .setup .sources .build_system .gnat_tools
+
+.PHONY: .tree_all .requites_tree
+
+.PHONY: all local_all .clean local_clean clean
+.PHONY: .install
+
+.PHONY: help
+.PHONY: downloads_clean
+.PHONY: .downloads_clean
+
+.SUFFIXES:
+
+
+
+CORE_MK = 1
+endif
Index: toolchains-1.7.1/build-system/tree_clean
===================================================================
--- toolchains-1.7.1/build-system/tree_clean	(nonexistent)
+++ toolchains-1.7.1/build-system/tree_clean	(revision 343)
@@ -0,0 +1,152 @@
+#!/usr/bin/perl
+
+use FindBin;
+use lib $FindBin::Bin;
+
+use strict;
+use warnings FATAL => 'all';
+
+use File::Find;
+use _kxLab;
+
+
+# Global variables
+my $header_printed = 0;
+
+my $top_dir;
+my @targets;
+my $verbose = $ENV{VERBOSE};
+
+my %seen;
+my ( @dist_clean_dirs, @clean_dirs, @dist_clean_dirs_all, @clean_dirs_all );
+my ( $dist_clean_count, $clean_count );
+
+sub do_clean
+{
+  unlink "$top_dir/.makefile";
+
+  foreach my $d ( @dist_clean_dirs )
+  {
+    my $printed_d;
+
+    $printed_d = $d;
+    $printed_d =~ s/^$top_dir\///;
+
+    print "\n===\n" if ( $verbose );
+    print "=== Dist cleaning in $printed_d...\n" if ( $verbose );
+    print "===\n" if ( $verbose );
+    _kxLab::system( "make -C $d dist_clean" );
+  }
+
+  foreach my $d ( @clean_dirs )
+  {
+    my $printed_d;
+
+    $printed_d = $d;
+    $printed_d =~ s/^$top_dir\///;
+
+    print "\n===\n" if ( $verbose );
+    print "=== Cleaning in $printed_d...\n" if ( $verbose );
+    print "===\n" if ( $verbose );
+    _kxLab::system( "make -C $d local_clean" );
+    unlink "$d/.makefile";
+  }
+}
+
+sub do_clean_list
+{
+  my $dir = shift;
+  my $cwd = `pwd`;
+
+  chomp $cwd;
+
+  return if( ! -f "$cwd/Makefile" );
+  return if( $dir =~ m/sources/ );
+
+  # needs dist clean:
+  if( -f "$cwd/.dist" ) { push @dist_clean_dirs_all, $cwd; }
+
+  # needs clean:
+  push @clean_dirs_all, $cwd;
+}
+
+sub process_clean
+{
+  # add directory which contains '.makefile' too.
+  if( $_ eq ".makefile" ) { do_clean_list( $File::Find::dir ); }
+
+  return if( ! -d $_ );
+
+  return if( $File::Find::name =~ m/build-system/ );
+  return if( $File::Find::name =~ m/dist/ );
+  return if( $File::Find::name =~ m/sources/ );
+
+  foreach my $d ( @targets )
+  {
+    if( $d eq $_ ) { do_clean_list( $File::Find::dir ); }
+  }
+}
+
+
+foreach ( @ARGV )
+{
+  push @targets, $_;
+}
+$top_dir = pop @targets;
+
+if( ! -d $top_dir )
+{
+  die "\nTop: $top_dir: is not a directory\n\n";
+}
+if( ! $top_dir =~ m/^\// )
+{
+  die "\nTop: $top_dir: is not absolute path\n\n";
+}
+
+find( \&process_clean, "$top_dir" );
+
+# get unique names:
+%seen = ();
+@dist_clean_dirs = grep { ! $seen{ $_ }++ } @dist_clean_dirs_all;
+# delete subdirs which already contains TARGET name:
+foreach my $target ( @targets )
+{
+  my @match = ();
+  @match = grep { /$target/ } keys %seen;
+  foreach my $subdir ( @match ) { delete( $seen{"$subdir"} ); }
+}
+@dist_clean_dirs = reverse( keys %seen );
+
+# get unique names:
+%seen = ();
+@clean_dirs = grep { ! $seen{ $_ }++ } @clean_dirs_all;
+foreach my $target ( @targets )
+{
+  my @match = ();
+  @match = grep { /$target/ } keys %seen;
+  foreach my $subdir ( @match ) { delete( $seen{"$subdir"} ); }
+}
+@clean_dirs = reverse( keys %seen );
+
+push @clean_dirs, "$top_dir/build-system";
+
+$dist_clean_count = @dist_clean_dirs;
+$clean_count = @clean_dirs;
+
+if( $dist_clean_count != 0 || $clean_count != 0 )
+{
+  if( !$header_printed )
+  {
+    print "\n======= Cleaning build tree =======\n";
+    $header_printed = 1;
+  }
+
+  do_clean();
+
+  print "\n";
+}
+else
+{
+  print "Cleaning...   (nothing to be done).\n";
+}
+

Property changes on: toolchains-1.7.1/build-system/tree_clean
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/build-system/build_requires
===================================================================
--- toolchains-1.7.1/build-system/build_requires	(nonexistent)
+++ toolchains-1.7.1/build-system/build_requires	(revision 343)
@@ -0,0 +1,305 @@
+#!/usr/bin/perl
+
+use FindBin;
+use lib $FindBin::Bin;
+
+use strict;
+use warnings FATAL => 'all';
+
+use IO::Handle;
+use File::Basename;
+use File::Temp;
+use Getopt::Long;
+
+use _kxLab;
+
+#
+# Generate .$(HARDWARE)_requires file for current directory
+#
+# usage:
+#   $0 [options] topdir toolchain flavour
+#
+# where:
+#      'topdir' - is a absolute path to the top directory of checked out branch
+#   'toolchain' - is a TOOLCHAIN name
+#     'flavour' - is a HARDWARE variant
+#
+
+# global variables
+my (%all_requires, $top_dir, $opt_max_depth, %requires_depend, $requires_file, %skip_dirs);
+
+my ($toolchain, $flavour, $target_build_dir);
+
+
+sub usage
+{
+  print <<EOF;
+
+Usage: build_requires [options] topdir toolchain flavour
+Options:
+   --max-depth=i - where 'i' is a maximal directory depth for finding requires;
+      --skip-dir - directory to be skipped (such as dist or TARGET_BUILD_DIR);
+          topdir - is a absolute path to the top of checked out branch;
+       toolchain - is a TOOLCHAIN name;
+         flavour - is a HARDWARE variant.
+
+EOF
+  exit;
+}
+
+
+sub requires_depend
+{
+  my $makefile = shift;
+
+  if( ! exists $requires_depend{$makefile} )
+  {
+    print REQUIRES_DEPEND_FILE "$requires_file: $makefile\n\n";
+    print REQUIRES_DEPEND_FILE "$makefile:\n\n";
+    $requires_depend{$makefile} = "";
+  }
+}
+
+sub read_requires
+{
+  my $makefile = shift;
+  my $flavour  = shift;
+
+  # Add a dependency to the Makefile
+  requires_depend( $makefile );
+
+  my $cdir = dirname( $makefile );
+
+  my %requires;
+
+  #
+  # We read the head of Makefile until '__END_OF_REQUIRES__' keyword.
+  # The 'build-system/constants.mk' should be included before requires.
+  #
+  my $shell_output = <<`SHELL`;
+cd $cdir
+head -n `cat Makefile | grep -n "__END_OF_REQUIRES__" | cut -f 1 -d ':'` Makefile | \
+  make TOOLCHAIN=$toolchain FLAVOUR=$flavour -f - -p __build_requires__ 2>/dev/null | grep "REQUIRES"
+exit 0
+SHELL
+
+  while( $shell_output =~ m/^REQUIRES(.+= +)(.+)/gm )
+  {
+    my @n = split( " ", $2 );
+    foreach my $req ( @n )
+    {
+      my ($d, $f);
+
+      $d = `echo $req | cut -f 1 -d '^'`;
+      $d =~ s/^\s+|\s+$//;
+      if( $req =~ m/\^/ )
+      {
+        $f = `echo $req | cut -f 2 -d '^'`;
+        $f =~ s/^\s+|\s+$//;
+      }
+      else
+      {
+        $f = "";
+      }
+
+      if( $d eq "ALL_DIRS" )
+      {
+        my $dirname = dirname( $makefile );
+
+        opendir( DIR, "$dirname" ) or
+          _kxLab::error( "build_requires: Could not open directory: $dirname: $!" );
+        my @dirs = grep { ! /^\./ && -d "$_" && -f "$_/Makefile" } readdir( DIR );
+        closedir DIR;
+
+        foreach my $dir (@dirs)
+        {
+          requires_depend( "$dirname/$dir/Makefile" );
+          "$dirname/$dir" =~ m!$top_dir/(.+)!;
+          $requires{$1} = "";
+        }
+      }
+      else
+      {
+        # Print a nice error message if the REQUIRES statement points to a missing directory
+        _kxLab::error( "build_requires: REQUIRES '$d' in $makefile not found. Exit" ) if( ! -d "$top_dir/$d" );
+
+        if( -f "$top_dir/$d/Makefile" )
+        {
+          if( $f eq "" ) { $requires{$d} = "";            }
+          else           { $requires{$d . "^" . $f} = ""; }
+        }
+      }
+    }
+  }
+  return %requires;
+}
+
+sub start_depend
+{
+  my $req = shift;
+
+  print REQUIRES_FILE "$req:";
+}
+
+sub depend
+{
+  my $req = shift;
+
+  print REQUIRES_FILE " $req";
+}
+
+sub end_depend
+{
+  print REQUIRES_FILE "\n\n";
+}
+
+sub make_sub_requires
+{
+  my $req = shift;
+
+  if( ! exists $all_requires{$req} )
+  {
+    $all_requires{$req} = "";
+
+    my ($d, $f);
+
+    $d = `echo $req | cut -f 1 -d '^'`;
+    $d =~ s/^\s+|\s+$//;
+    if( $req =~ m/\^/ )
+    {
+      $f = `echo $req | cut -f 2 -d '^'`;
+      $f =~ s/^\s+|\s+$//;
+    }
+    else
+    {
+      $f = "";
+    }
+
+    # Read sub requires
+    my $makefile = "$top_dir/$d/Makefile";
+    my %sub_requires = read_requires( $makefile, $f );
+    if( scalar(%sub_requires) )
+    {
+      my @sorted_sub_requires = sort(keys %sub_requires);
+
+      # Build dependencies for sub requires
+      if( $f eq "" ) { start_depend( $d );            }
+      else           { start_depend( $d . "^" . $f ); }
+      foreach my $sub_req ( @sorted_sub_requires )
+      {
+        depend( $sub_req );
+      }
+      end_depend();
+
+      # Make sub sub requires
+      foreach my $sub_req ( @sorted_sub_requires )
+      {
+        make_sub_requires( $sub_req );
+      }
+    }
+  }
+}
+
+
+#
+# Parse the command line options
+#
+$opt_max_depth = 10;
+my @opt_skip_dirs;
+GetOptions( "max-depth=i" => \$opt_max_depth, "skip-dir=s" => \@opt_skip_dirs );
+%skip_dirs = map { $_ => "" } @opt_skip_dirs;
+
+# Get the rest of the command line
+my $topdir = shift;
+$toolchain = shift;
+$flavour   = shift;
+
+
+my $makefile = "Makefile";
+
+if( ! defined $topdir    or $topdir eq "" )    { usage; }
+if( ! defined $toolchain or $toolchain eq "" ) { usage; }
+if( ! defined $flavour   or $flavour eq "" )
+{
+  $flavour = "";
+  $target_build_dir = "." . $toolchain ;
+}
+else
+{
+  $target_build_dir = "." . $toolchain . "/" . $flavour;
+}
+
+_kxLab::error( "build_requires: $topdir is not a directory" ) if( ! -d $topdir );
+_kxLab::error( "build_requires: Makefile missing: $makefile" ) if ( ! -f $makefile );
+
+# setup $top_build_dir
+$top_dir = $topdir;
+my $build_system = $top_dir . "/build-system";
+#my $build_system = "build-system";
+
+_kxLab::system( "mkdir -p $target_build_dir" );
+
+$requires_file = $target_build_dir . "/" . ".requires";
+my $requires_depend_file = $requires_file . "_depend";
+
+# open the output files
+open(REQUIRES_FILE, "> $requires_file") or
+  _kxLab::error( "build_requires: Could not open $requires_file file: $!" );
+open(REQUIRES_DEPEND_FILE, "> $requires_depend_file") or
+  _kxLab::error( "build_requires: Could not open $requires_depend_file file: $!" );
+
+
+# root component
+my $pwd = `pwd`;
+chomp $pwd;
+$pwd =~ m!$top_dir(.*)!;
+my $root;
+if( $1 eq "" )
+{
+  $root = "all";
+}
+else
+{
+  $1 =~ m!/(.+)!;
+  $root = $1;
+}
+
+print REQUIRES_FILE "# ROOT=$root\n\n";
+print REQUIRES_DEPEND_FILE "\n";
+
+
+# read the makefile
+my %requires = read_requires( "$pwd/$makefile", $flavour );
+
+# ignore the "build-system" dependency (if any), since this dependency is implicit
+delete $requires{"build-system"};
+
+my @sorted_requires = sort(keys %requires);
+
+# build the all: rule
+start_depend( "all" );
+foreach my $req ( @sorted_requires )
+{
+  depend( $req );
+}
+end_depend();
+
+# build sub dependencies
+foreach my $req ( @sorted_requires )
+{
+  make_sub_requires( $req );
+}
+
+# Finish by including tree.mk
+print REQUIRES_FILE "TREEDIRS = ", join(" ", sort(keys %all_requires)), "\n\n";
+if( $pwd =~ m/$build_system/ )
+{
+  print REQUIRES_FILE "include \$(BUILDSYSTEM)/tree-bs.mk\n";
+}
+else
+{
+  print REQUIRES_FILE "include \$(BUILDSYSTEM)/tree.mk\n";
+}
+
+close REQUIRES_FILE;
+close REQUIRES_DEPEND_FILE;

Property changes on: toolchains-1.7.1/build-system/build_requires
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/build-system/build_src_requires
===================================================================
--- toolchains-1.7.1/build-system/build_src_requires	(nonexistent)
+++ toolchains-1.7.1/build-system/build_src_requires	(revision 343)
@@ -0,0 +1,299 @@
+#!/usr/bin/perl
+
+use FindBin;
+use lib $FindBin::Bin;
+
+use strict;
+use warnings FATAL => 'all';
+
+use IO::Handle;
+use File::Basename;
+use File::Temp;
+use Getopt::Long;
+
+use _kxLab;
+
+#
+# Generate .src_requires file for current directory
+#
+# usage:
+#   $0 [options] topdir
+#
+# where:
+#   'topdir' - is a absolute path to the top directory of checked out branch
+#
+
+
+# global variables
+my (%all_requires, $top_dir, $opt_max_depth, %requires_depend, $requires_file, %skip_dirs);
+
+my %all_src_requires;
+
+sub usage
+{
+  print <<EOF;
+
+Usage: build_src_requires [options] topdir
+Options:
+   --max-depth=i - where 'i' is a maximal directory depth for finding requires;
+      --skip-dir - directory to be skipped (such as dist or TARGET_BUILD_DIR);
+          topdir - is a absolute path to the top of checked out branch.
+
+EOF
+  exit;
+}
+
+
+sub requires_depend
+{
+  my $makefile = shift;
+
+  if( ! exists $requires_depend{$makefile} )
+  {
+    print REQUIRES_DEPEND_FILE "$requires_file: $makefile\n\n";
+    print REQUIRES_DEPEND_FILE "$makefile:\n\n";
+    $requires_depend{$makefile} = "";
+  }
+}
+
+sub read_src_requires
+{
+  my $makefile  = shift;
+
+  # add a dependency to the Makefile
+  requires_depend($makefile);
+
+  my %requires;
+
+  my $shell_output = `cat $makefile`;
+
+  while( $shell_output =~ m/^SOURCE_REQUIRES(.+= +)(.+)/gm )
+  {
+    my @n = split( " ", $2 );
+    foreach my $d ( @n )
+    {
+      if( $d eq "ALL_DIRS" )
+      {
+        my $dirname = dirname($makefile);
+
+        opendir( DIR, "$dirname" ) or
+          _kxLab::error( "build_src_requires: Could not open directory: $dirname: $!" );
+        my @dirs = grep { ! /^\./ && -d "$_" && -f "$_/Makefile" } readdir( DIR );
+        closedir DIR;
+
+        foreach my $dir (@dirs)
+        {
+          requires_depend("$dirname/$dir/Makefile");
+          "$dirname/$dir" =~ m!$top_dir/(.+)!;
+          $requires{$1} = "";
+        }
+      }
+      else
+      {
+        # Print a nice error message if the SOURCE_REQUIRES statement points to a missing directory
+        _kxLab::error( "build_src_requires: SOURCE_REQUIRES '$d' in $makefile not found. Exit" ) if( ! -d "$top_dir/$d" );
+
+        if( -f "$top_dir/$d/Makefile" )
+        {
+          $requires{$d} = "";
+          requires_depend("$top_dir/$d/Makefile");
+        }
+      }
+    }
+  }
+  return %requires;
+}
+
+sub read_requires
+{
+  my $makefile  = shift;
+
+  # add a dependency to the Makefile
+  requires_depend($makefile);
+
+  my %requires;
+
+  my $shell_output = `cat $makefile`;
+
+  while( $shell_output =~ m/^REQUIRES(.+= +)(.+)/gm )
+  {
+    my @n = split( " ", $2 );
+    foreach my $req ( @n )
+    {
+      my $d = `echo $req | cut -f 1 -d '^'`;
+      $d =~ s/^\s+|\s+$//;
+
+      if( $d eq "ALL_DIRS" )
+      {
+        my $dirname = dirname($makefile);
+
+        opendir( DIR, "$dirname" ) or
+          _kxLab::error( "build_src_requires: Could not open directory: $dirname: $!" );
+        my @dirs = grep { ! /^\./ && -d "$_" && -f "$_/Makefile" } readdir( DIR );
+        closedir DIR;
+
+        foreach my $dir (@dirs)
+        {
+          requires_depend( "$dirname/$dir/Makefile" );
+          "$dirname/$dir" =~ m!$top_dir/(.+)!;
+          $requires{$1} = "";
+
+          my %src_requires = read_src_requires( "$dirname/$dir/Makefile" );
+          my @sort_src_requires = sort(keys %src_requires);
+          foreach my $req ( @sort_src_requires )
+          {
+            $all_src_requires{$req} = "";
+          }
+        }
+      }
+      else
+      {
+        # Print a nice error message if the REQUIRES statement points to a missing directory
+        _kxLab::error( "build_src_requires: REQUIRES '$d' in $makefile not found. Exit" ) if( ! -d "$top_dir/$d" );
+
+        if( -f "$top_dir/$d/Makefile" )
+        {
+          $requires{$d} = "";
+
+          my %src_requires = read_src_requires( "$top_dir/$d/Makefile" );
+          my @sort_src_requires = sort(keys %src_requires);
+          foreach my $req ( @sort_src_requires )
+          {
+            $all_src_requires{$req} = "";
+          }
+        }
+      }
+    }
+  }
+  return %requires;
+}
+
+sub start_depend
+{
+  my $req = shift;
+
+  print REQUIRES_FILE "$req:";
+}
+
+sub depend
+{
+  my $req = shift;
+
+  print REQUIRES_FILE " $req";
+}
+
+sub end_depend
+{
+  print REQUIRES_FILE "\n\n";
+}
+
+sub make_sub_requires
+{
+  my $req = shift;
+
+  if( ! exists $all_requires{$req} )
+  {
+    $all_requires{$req} = "";
+
+    my $d = `echo $req | cut -f 1 -d '^'`;
+    $d =~ s/^\s+|\s+$//;
+
+    # Read sub requires
+    my $makefile = "$top_dir/$d/Makefile";
+    my %sub_requires = read_requires( $makefile );
+    if( scalar(%sub_requires) )
+    {
+      # Make sub sub requires
+      my @sorted_sub_requires = sort(keys %sub_requires);
+      foreach my $sub_req ( @sorted_sub_requires )
+      {
+        make_sub_requires( $sub_req );
+      }
+    }
+  }
+}
+
+
+#
+# Parse the command line options
+#
+$opt_max_depth = 10;
+my @opt_skip_dirs;
+GetOptions( "max-depth=i" => \$opt_max_depth, "skip-dir=s" => \@opt_skip_dirs );
+%skip_dirs = map { $_ => "" } @opt_skip_dirs;
+
+# get the rest of the command line
+my $topdir   = shift;
+my $makefile = "Makefile";
+
+if( ! defined $topdir or $topdir eq "" ) { usage; }
+
+_kxLab::error( "build_requires: $topdir is not a directory" ) if( ! -d $topdir );
+_kxLab::error( "build_requires: Makefile missing: $makefile" ) if ( ! -f $makefile );
+
+# setup $top_build_dir
+$top_dir = $topdir;
+
+$requires_file = ".src_requires";
+my $requires_depend_file = $requires_file . "_depend";
+
+
+# open the output files
+open(REQUIRES_FILE, "> $requires_file") or
+  _kxLab::error( "build_requires: Could not open $requires_file file: $!" );
+open(REQUIRES_DEPEND_FILE, "> $requires_depend_file") or
+  _kxLab::error( "build_requires: Could not open $requires_depend_file file: $!" );
+
+
+# root component
+my $pwd = `pwd`;
+chomp $pwd;
+$pwd =~ m!$top_dir(.*)!;
+my $root;
+if( $1 eq "" )
+{
+  $root = "all";
+}
+else
+{
+  $1 =~ m!/(.+)!;
+  $root = $1;
+}
+
+print REQUIRES_FILE "# ROOT=$root\n\n";
+print REQUIRES_DEPEND_FILE "\n";
+
+# read the makefile
+%all_src_requires = read_src_requires( "$pwd/$makefile" );
+my %requires = read_requires( "$pwd/$makefile" );
+
+
+# check the "build-system" sub dependencies implicitly (excluding sources directories)
+#$requires{"build-system"} = "";
+
+
+# build sub dependencies
+my @sorted_requires = sort(keys %requires);
+foreach my $req ( @sorted_requires )
+{
+  make_sub_requires( $req );
+}
+
+# build the all: rule
+start_depend( "all" );
+my @sorted_src_requires = sort(keys %all_src_requires);
+foreach my $req ( @sorted_src_requires )
+{
+  depend( $req );
+}
+end_depend();
+
+
+# Finish by including tree.mk
+print REQUIRES_FILE "TREEDIRS = ", join(" ", sort(keys %all_src_requires)), "\n\n";
+print REQUIRES_FILE "include \$(BUILDSYSTEM)/tree-src.mk\n";
+
+
+# close output files
+close REQUIRES_FILE;
+close REQUIRES_DEPEND_FILE;

Property changes on: toolchains-1.7.1/build-system/build_src_requires
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/build-system/downloads_clean
===================================================================
--- toolchains-1.7.1/build-system/downloads_clean	(nonexistent)
+++ toolchains-1.7.1/build-system/downloads_clean	(revision 343)
@@ -0,0 +1,116 @@
+#!/usr/bin/perl
+
+use FindBin;
+use lib $FindBin::Bin;
+
+use strict;
+use warnings FATAL => 'all';
+
+use File::Find;
+use _kxLab;
+
+
+# Global variables
+my $header_printed = 0;
+
+my $top_dir;
+my @targets;
+my $verbose = $ENV{VERBOSE};
+
+my %seen;
+my ( @dist_clean_dirs, @clean_dirs, @dist_clean_dirs_all, @clean_dirs_all );
+my ( $dist_clean_count, $clean_count );
+
+sub do_clean
+{
+  unlink "$top_dir/.makefile";
+
+  foreach my $d ( @clean_dirs )
+  {
+    my $printed_d;
+
+    $printed_d = $d;
+    $printed_d =~ s/^$top_dir\///;
+
+    print "\n=======\n" if ( $verbose );
+    print "======= Cleaning in $printed_d...\n" if ( $verbose );
+    print "=======\n" if ( $verbose );
+    _kxLab::system( "make -C $d download_clean" );
+    unlink "$d/.makefile";
+    unlink <$d/.*_requires*>;
+  }
+}
+
+sub do_clean_list
+{
+  my $dir = shift;
+  my $cwd = `pwd`;
+
+  chomp $cwd;
+
+  # skip not our directories where we create patches
+  return if( $cwd =~ m/.*create\-.*\-patch.*/ );
+
+  return if( ! -f "$cwd/Makefile" );
+
+  # needs clean:
+  push @clean_dirs_all, $cwd;
+}
+
+sub process_clean
+{
+  return if( ! $File::Find::dir =~ m/$top_dir\/sources/ );
+
+  # add directory which contains 'Makefile' too.
+  if( $_ eq "Makefile" ) { do_clean_list( $File::Find::dir ); }
+
+  return if( ! -d $_ );
+
+  foreach my $d ( @targets )
+  {
+    if( $d eq $_ ) { do_clean_list( $File::Find::dir ); }
+  }
+}
+
+
+foreach ( @ARGV )
+{
+  push @targets, $_;
+}
+$top_dir = pop @targets;
+
+if( ! -d $top_dir )
+{
+  die "\nTop: $top_dir: is not a directory\n\n";
+}
+if( ! $top_dir =~ m/^\// )
+{
+  die "\nTop: $top_dir: is not absolute path\n\n";
+}
+
+find( \&process_clean, "$top_dir" );
+
+# get unique names:
+%seen = ();
+@clean_dirs = grep { ! $seen{ $_ }++ } @clean_dirs_all;
+@clean_dirs = reverse( keys %seen );
+
+$clean_count = @clean_dirs;
+
+if( $clean_count != 0 )
+{
+  if( !$header_printed )
+  {
+    print "\n======= Cleaning downloads tree =======\n\n" if ( $verbose );
+    $header_printed = 1;
+  }
+
+  do_clean();
+
+  print "\n";
+}
+else
+{
+  print "\nCleaning...   (nothing to be done).\n\n";
+}
+

Property changes on: toolchains-1.7.1/build-system/downloads_clean
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/build-system/tree-bs.mk
===================================================================
--- toolchains-1.7.1/build-system/tree-bs.mk	(nonexistent)
+++ toolchains-1.7.1/build-system/tree-bs.mk	(revision 343)
@@ -0,0 +1,9 @@
+
+# Generic rule used for directories
+
+all $(TREEDIRS):
+
+$(TREEDIRS):
+	@$(MAKE) FLAVOUR= -C $(TOP_BUILD_DIR_ABS)/$@ $(TREE_RULE)
+
+.PHONY: all $(TREEDIRS)
Index: toolchains-1.7.1/build-system/tree.mk
===================================================================
--- toolchains-1.7.1/build-system/tree.mk	(nonexistent)
+++ toolchains-1.7.1/build-system/tree.mk	(revision 343)
@@ -0,0 +1,11 @@
+
+# Generic rule used for directories
+
+all $(TREEDIRS):
+
+get-flavour = $(if $(shell echo $1 | grep "\^"),$(shell echo $1 | cut -f 2 -d '^'),)
+
+$(TREEDIRS):
+	@$(MAKE) FLAVOUR=$(call get-flavour,$@) -C $(TOP_BUILD_DIR_ABS)/$(shell echo $@ | cut -f 1 -d '^') $(TREE_RULE)
+
+.PHONY: all $(TREEDIRS)
Index: toolchains-1.7.1/build-system/tree-src.mk
===================================================================
--- toolchains-1.7.1/build-system/tree-src.mk	(nonexistent)
+++ toolchains-1.7.1/build-system/tree-src.mk	(revision 343)
@@ -0,0 +1,9 @@
+
+# Generic rule used for source directories
+
+all $(TREEDIRS):
+
+$(TREEDIRS):
+	@$(MAKE) -C $(TOP_BUILD_DIR_ABS)/$@ $(TREE_RULE)
+
+.PHONY: all $(TREEDIRS)
Index: toolchains-1.7.1/build-system/_kxLab.pm
===================================================================
--- toolchains-1.7.1/build-system/_kxLab.pm	(nonexistent)
+++ toolchains-1.7.1/build-system/_kxLab.pm	(revision 343)
@@ -0,0 +1,39 @@
+
+use strict;
+use warnings FATAL => 'all';
+
+package _kxLab;
+
+sub error
+{
+  my $message = shift;
+  my $func = shift;
+
+  print STDERR "Error: $message\n";
+  if( defined( $func ) )
+  {
+    &$func();
+  }
+  exit 1;
+}
+
+sub command_error
+{
+  my $command = shift;
+  my $context = shift;
+
+  error( "$command failed at @{$context}[1] line @{$context}[2]" );
+}
+
+sub system
+{
+  my $command = shift;
+
+  if( system( $command ) )
+  {
+    my @context = caller;
+    command_error($command, \@context);
+  }
+}
+
+1;
Index: toolchains-1.7.1/build-system/apply_patches
===================================================================
--- toolchains-1.7.1/build-system/apply_patches	(nonexistent)
+++ toolchains-1.7.1/build-system/apply_patches	(revision 343)
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+
+use FindBin;
+use lib $FindBin::Bin;
+
+use strict;
+use warnings FATAL => 'all';
+use _kxLab;
+
+my $filename = shift or die "Error: Need a patch file";
+my $arg2 = shift;
+my $depmode = 0;
+my $dir = ".";
+if( defined( $arg2 ) )
+{
+  if( $arg2 eq "-dep-" )
+  {
+    $depmode = 1;
+  }
+  else
+  {
+    $dir = $arg2;
+  }
+}
+
+open( PATCH, "<$filename" ) or die "Error: Could not open patch file: $filename: $!";
+while( <PATCH> )
+{
+  next if /^#/;
+  if (/(\S+)\s*(.*)/)
+  {
+    if( $depmode )
+    {
+      print "$1 ";
+    }
+    else
+    {
+      my $arg = $2 || "-p0";
+      print "=== Applying $1 ===\n";
+      _kxLab::system( "patch -d $dir $arg < $1" );
+    }
+  }
+}
+close PATCH;
+if( $depmode )
+{
+  print "$filename\n";
+}
+

Property changes on: toolchains-1.7.1/build-system/apply_patches
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/build-system/dist_clean
===================================================================
--- toolchains-1.7.1/build-system/dist_clean	(nonexistent)
+++ toolchains-1.7.1/build-system/dist_clean	(revision 343)
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+
+use File::Basename;
+
+$base = $ARGV[0];
+
+open( F, '<', '.dist' ) or die "Could not open .dist";
+
+while( <F> )
+{
+  chomp;
+  $f = "$base/$_";
+  unlink $f;
+  $dirs{dirname($f)}++;
+}
+
+foreach ( sort { length($b) <=> length($a) } keys %dirs )
+{
+  while( rmdir )
+  {
+    $_ = dirname( $_ );
+  }
+}

Property changes on: toolchains-1.7.1/build-system/dist_clean
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/build-system/install_targets
===================================================================
--- toolchains-1.7.1/build-system/install_targets	(nonexistent)
+++ toolchains-1.7.1/build-system/install_targets	(revision 343)
@@ -0,0 +1,131 @@
+#!/usr/bin/perl
+
+use FindBin;
+use lib $FindBin::Bin;
+
+use strict;
+use warnings FATAL => 'all';
+
+use File::Basename;
+use File::Temp;
+use _kxLab;
+
+# Global variables
+my $header_printed = 0;
+
+my $cleanup = $ENV{DO_CREATE_DIST_FILES} ? 0 : 1;
+my ($tempfd, $tempname) = File::Temp::tempfile(".dist.XXXXXX", UNLINK => $cleanup);
+
+# cleanpath( path )
+sub cleanpath
+{
+  my $path = shift;
+  $path =~ s!/{2,}!/!g;
+  return $path;
+}
+
+# dist( file )
+sub dist
+{
+  my $file = cleanpath(shift);
+  $file =~ s!^.*dist/!!;
+  print $tempfd "$file\n";
+}
+
+# newer_than( file1, file2 )
+sub newer_than
+{
+  my $file1 = shift;
+  my $file2 = shift;
+  _kxLab::error( "install_targets: Source file missing: $file1" ) if ( ! -f $file1 );
+  return( ! -f $file2 or -M $file1 < -M $file2 );
+}
+
+# install_tree( install_dir, file, target, verbose )
+sub install_tree
+{
+  my $install_dir = cleanpath(shift);
+  my $file = shift;
+  my $target = shift;
+  my $verbose = shift;
+
+  opendir(DIR, "$target");
+  my @files = readdir(DIR);
+  closedir DIR;
+  foreach my $f ( @files )
+  {
+    next if ($f eq "." or $f eq "..");
+    if( -d "$target/$f" )
+    {
+      install_tree( "$install_dir/$f", "$file/$f", "$target/$f", $verbose );
+    }
+    elsif( newer_than( "$target/$f", "$install_dir/$f" ) )
+    {
+      if( !$header_printed )
+      {
+        print "\n======= Installing files =======\n";
+        $header_printed = 1;
+      }
+      print "Installing $f in $install_dir\n" if ( $verbose );
+      _kxLab::system( "mkdir -p $install_dir" );
+      _kxLab::system( "cp -fa $target/$f $install_dir" );
+      dist( "$install_dir/$f" );
+    }
+  }
+}
+
+# install( install_dir, preserve_source_dir, verbose, targets )
+sub install
+{
+  my $install_dir = cleanpath(shift);
+  my $preserve_source_dir = shift;
+  my $verbose = shift;
+  my $targets = shift;
+
+  foreach my $target ( @{$targets} )
+  {
+    my $file = basename($target);
+    my $path = "";
+    if( $preserve_source_dir eq "true" )
+    {
+      $path = dirname( $target );
+    }
+
+    if( -d $target )
+    {
+      install_tree( "$install_dir/$path/$file", "$file", "$target", $verbose );
+    }
+    elsif( newer_than( $target, "$install_dir/$path/$file" ) )
+    {
+      if( !$header_printed )
+      {
+        print "\n======= Installing files =======\n";
+        $header_printed = 1;
+      }
+      print "Installing $file in $install_dir/$path\n" if ( $verbose );
+      _kxLab::system( "mkdir -p $install_dir/$path" );
+      _kxLab::system( "cp -fa $target $install_dir/$path" );
+      dist( "$install_dir/$path/$file" );
+    }
+  }
+}
+
+my $preserve_source_dir = "";
+my $dest_dir;
+my @targets;
+my $verbose = $ENV{VERBOSE};
+
+foreach ( @ARGV )
+{
+  if( /--preserve-source-dir=(\S*)/ )
+  {
+    $preserve_source_dir = $1;
+  }
+  else
+  {
+    push @targets, $_;
+  }
+}
+$dest_dir = pop @targets;
+
+install( $dest_dir, $preserve_source_dir, $verbose, \@targets );

Property changes on: toolchains-1.7.1/build-system/install_targets
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/build-system
===================================================================
--- toolchains-1.7.1/build-system	(nonexistent)
+++ toolchains-1.7.1/build-system	(revision 343)

Property changes on: toolchains-1.7.1/build-system
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,16 ##
+
+# Target bin dirs
+etc
+gnattools
+sbin
+
+# Build system config files
+targets-config.mk
+
+# Target build dirs
+.host
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
Index: toolchains-1.7.1/core/binutils/2.37/Makefile
===================================================================
--- toolchains-1.7.1/core/binutils/2.37/Makefile	(nonexistent)
+++ toolchains-1.7.1/core/binutils/2.37/Makefile	(revision 343)
@@ -0,0 +1,684 @@
+
+
+COMPONENT_TARGETS  = $(TOOLCHAIN_ARM32_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_H5_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_M1000_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_AT91SAM7S_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_NEWLIB)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_A1X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A2X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H3_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H5_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6ULL_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_JZ47XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_P5600_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_M1000_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_OMAP543X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_AM335X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK328X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S8XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A311X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK339X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8LE_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9LE_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_I586_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_I686_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_X86_64_GLIBC)
+
+
+include ../../../build-system/config.mk
+
+
+SOURCE_REQUIRES  = sources/GNU/binutils
+
+# ======= __END_OF_REQUIRES__ =======
+
+tar_xz_archive       = $(SRC_PACKAGE_PATH)/GNU/binutils/binutils-2.37.tar.xz
+SRC_ARCHIVE          = $(tar_xz_archive)
+SRC_DIR              = $(TARGET_BUILD_DIR)/binutils-2.37
+src_dir_name         = binutils-2.37
+src_done             = $(SRC_DIR)/.source-done
+
+PATCHES       = PATCHES
+
+build_dir            = $(TARGET_BUILD_DIR)/build
+install_dir          = $(TOOLCHAIN_PATH)
+
+sysroot_dir          = $(TOOLCHAIN_PATH)/$(TARGET)/sys-root
+
+build_target         = $(TARGET_BUILD_DIR)/.built
+install_target       = $(TARGET_BUILD_DIR)/.installed
+
+
+BUILD_TARGETS  = $(build_target)
+BUILD_TARGETS += $(install_target)
+
+include ../../../build-system/core.mk
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_ARM32_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --disable-werror
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-abi=aapcs
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A33XX_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --disable-werror
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-abi=aapcs
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A9XX_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --disable-werror
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-abi=aapcs
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H5_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S9XX_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK33XX_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_M1000_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-cpu=cortex-a57
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_AT91SAM7S_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-float=soft
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RISCV64_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-abi=lp64d
+extra_configure_switches += --with-arch=rv64imafdc
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A1X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-cpu=cortex-a8
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-fpu=neon
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A2X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-cpu=cortex-a7
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_H3_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-tune=cortex-a7
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_H5_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_S8XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-cpu=cortex-a5
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-fpu=neon
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_S9XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A9XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A311X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RK33XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-compressed-debug-sections
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RK339X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A33XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RK328X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+extra_configure_switches += --enable-plugins
+# standard options:
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-cpu=cortex-a17
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_IMX6_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a9
+extra_configure_switches += --with-fpu=vfpv3
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_IMX6ULL_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-cpu=cortex-a7
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_OMAP543X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-tune=cortex-a15
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_AM335X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a8
+extra_configure_switches += --with-fpu=neon
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_JZ47XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=mips32r2
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_P5600_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=mips32r5
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_M1000_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=cortex-a57
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --enable-targets=ppc64-radix-linux,powerpc64-radix-linux,ppc64-linux,powerpc64-linux,ppc-radix-linux,powerpc-radix-linux,ppc-linux,powerpc-linux
+extra_configure_switches += --enable-64-bit-bfd
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER9_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --enable-targets=ppc64-radix-linux,powerpc64-radix-linux,ppc64-linux,powerpc64-linux,ppc-radix-linux,powerpc-radix-linux,ppc-linux,powerpc-linux
+extra_configure_switches += --enable-64-bit-bfd
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8LE_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --enable-targets=ppc64le-radix-linux,powerpc64le-radix-linux,ppc64le-linux,powerpc64le-linux,ppcle-radix-linux,powerpcle-radix-linux,ppcle-linux,powerpcle-linux
+extra_configure_switches += --enable-64-bit-bfd
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER9LE_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --enable-targets=ppc64le-radix-linux,powerpc64le-radix-linux,ppc64le-linux,powerpc64le-linux,ppcle-radix-linux,powerpcle-radix-linux,ppcle-linux,powerpcle-linux
+extra_configure_switches += --enable-64-bit-bfd
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RISCV64_GLIBC))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+# standard options:
+extra_configure_switches += --enable-targets=riscv64-radix-linux,riscv64-linux
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-abi=lp64d
+extra_configure_switches += --with-arch=rv64imafdc
+extra_configure_switches += --enable-64-bit-bfd
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --enable-threads
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_I586_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-targets=i586-radix-linux
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --enable-initfini-array
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --enable-threads
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_I686_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-targets=i686-radix-linux
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --enable-initfini-array
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --enable-threads
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+# experimental gold linker( DEFAULT_LD=ld.bfd ):
+extra_configure_switches += --enable-gold=yes
+extra_configure_switches += --enable-ld=default
+extra_configure_switches += --enable-werror=no
+# standard options:
+extra_configure_switches += --enable-targets=x86_64-radix-linux
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --enable-64-bit-bfd
+extra_configure_switches += --enable-initfini-array
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --enable-threads
+extra_configure_switches += --disable-compressed-debug-sections
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+endif
+
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	# ======= These pages were shipped empty and will need to be regenerated =======
+	@( cd $(SRC_DIR) ; \
+	   rm -f binutils/doc/*.1 binutils/doc/*.man gprof/gprof.1 ld/ld.1 gas/doc/as.1 ; \
+	 )
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC)),)
+	# ======= On ppc64 and aarch64, we might use 64KiB pages =======
+	@( cd $(SRC_DIR) ; \
+	   sed -i -e '/#define.*ELF_COMMONPAGESIZE/s/0x1000$/0x10000/' bfd/elf*ppc.c ; \
+	   sed -i -e '/common_pagesize/s/4 /64 /' gold/powerpc.cc ; \
+	 )
+endif
+	@touch $@
+
+$(build_target): $(src_done)
+	@mkdir -p $(build_dir)
+	@cd $(build_dir) && ../$(src_dir_name)/configure \
+	  --prefix=$(TOOLCHAIN_PATH)             \
+	  --target=$(TARGET)                     \
+	  --infodir=$(TOOLCHAIN_PATH)/share/info \
+	  --mandir=$(TOOLCHAIN_PATH)/share/man   \
+	  --disable-nls                          \
+	  $(extra_configure_switches)
+	@$(MAKE) -C $(build_dir)
+	@$(MAKE) -C $(build_dir) info
+	@touch $@
+
+$(install_target): $(build_target)
+	@mkdir -p $(install_dir)
+	@$(MAKE) -j1 -C $(build_dir) install
+	@$(MAKE) -j1 -C $(build_dir) install-info
+	@rm -f $(TOOLCHAIN_PATH)/share/info/dir
+	@echo ""                                       > $(TOOLCHAIN_PATH)/README
+	@echo "  TOOLCHAIN = $(TOOLCHAIN)"            >> $(TOOLCHAIN_PATH)/README
+	@echo "     TARGET = $(TARGET)"               >> $(TOOLCHAIN_PATH)/README
+	@echo "  BASE_PATH = $(TOOLCHAINS_BASE_PATH)" >> $(TOOLCHAIN_PATH)/README
+	@echo "  DIRECTORY = $(TOOLCHAIN_DIR)"        >> $(TOOLCHAIN_PATH)/README
+	@echo "    VERSION = $(TOOLCHAIN_VERSION)"    >> $(TOOLCHAIN_PATH)/README
+	@echo ""                                      >> $(TOOLCHAIN_PATH)/README
+	@echo "-----------"                           >> $(TOOLCHAIN_PATH)/README
+	@echo ""                                      >> $(TOOLCHAIN_PATH)/README
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
Index: toolchains-1.7.1/core/binutils/2.37/PATCHES
===================================================================
--- toolchains-1.7.1/core/binutils/2.37/PATCHES	(nonexistent)
+++ toolchains-1.7.1/core/binutils/2.37/PATCHES	(revision 343)
@@ -0,0 +1,24 @@
+
+../../../sources/GNU/binutils/patches/binutils-2.37-set-long-long.patch       -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-copy-osabi.patch          -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-sec-merge-omit.patch      -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-ldforcele.patch           -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-libtool-lib64.patch       -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-cleansweep.patch          -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-export-demangle.patch     -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-no-config-check.patch     -p0
+
+../../../sources/GNU/binutils/patches/binutils-2.37-CVE-2019-1010204.patch              -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-aarch64-ifunc.patch                 -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-bfd-close-fds.patch                 -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-dwarf-5-dir0.patch                  -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-fname-in-error-messages.patch       -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-gold-i386-gnu-property-notes.patch  -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-gold-mismatched-section-flags.patch -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-gold-warn-unsupported.patch         -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-missing-man-pages.patch             -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-not-link-static-libstdc++.patch     -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-readelf-other-sym-info.patch        -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-revert-PLT-elision.patch            -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-special-sections-in-groups.patch    -p0
+../../../sources/GNU/binutils/patches/binutils-2.37-testsuite-fixes.patch               -p0
Index: toolchains-1.7.1/core/binutils/2.37
===================================================================
--- toolchains-1.7.1/core/binutils/2.37	(nonexistent)
+++ toolchains-1.7.1/core/binutils/2.37	(revision 343)

Property changes on: toolchains-1.7.1/core/binutils/2.37
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/binutils
===================================================================
--- toolchains-1.7.1/core/binutils	(nonexistent)
+++ toolchains-1.7.1/core/binutils	(revision 343)

Property changes on: toolchains-1.7.1/core/binutils
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,33 ##
+
+# Target build dirs
+.host/
+.a1x-newlib/
+.at91sam7s-newlib/
+.dm644x-newlib/
+.a1x-eglibc/
+.dm644x-eglibc/
+.omap35x-eglibc/
+.omap543x-eglibc/
+.bcm74x-eglibc/
+.x86_64-eglibc/
+
+# Hidden files (each file)
+.makefile
+
+# Tarballs
+*.gz
+*.bz2
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/gcc/11.2.0/Makefile
===================================================================
--- toolchains-1.7.1/core/gcc/11.2.0/Makefile	(nonexistent)
+++ toolchains-1.7.1/core/gcc/11.2.0/Makefile	(revision 343)
@@ -0,0 +1,2364 @@
+
+
+COMPONENT_TARGETS  = $(TOOLCHAIN_ARM32_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_H5_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_M1000_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_AT91SAM7S_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_NEWLIB)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_A1X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A2X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H3_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H5_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6ULL_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_JZ47XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_P5600_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_M1000_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_OMAP543X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_AM335X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK328X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S8XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A311X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK339X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8LE_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9LE_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_I586_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_I686_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_X86_64_GLIBC)
+
+
+FLAVOURS = static second full
+
+
+include ../../../build-system/config.mk
+
+
+SOURCE_REQUIRES  = sources/GNU/gcc/gcc-11.2.0
+SOURCE_REQUIRES += sources/GNU/gmp
+SOURCE_REQUIRES += sources/GNU/mpfr
+SOURCE_REQUIRES += sources/GNU/mpc
+SOURCE_REQUIRES += sources/inria/isl
+
+
+ifneq ($(findstring newlib, $(TOOLCHAIN)),)
+ifeq ($(FLAVOUR),static)
+REQUIRES  = core/binutils/2.37
+endif
+ifeq ($(FLAVOUR),full)
+REQUIRES  = core/newlib/4.1.0^full
+endif
+endif
+
+ifneq ($(findstring -glibc, $(TOOLCHAIN)),)
+ifeq ($(FLAVOUR),static)
+REQUIRES  = core/binutils/2.37
+endif
+ifeq ($(FLAVOUR),second)
+REQUIRES  = core/glibc/2.34^headers
+endif
+ifeq ($(FLAVOUR),full)
+REQUIRES  = core/glibc/2.34^full
+endif
+endif
+
+# ======= __END_OF_REQUIRES__ =======
+
+tar_xz_archive        = $(SRC_PACKAGE_PATH)/GNU/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz
+tar_xz_archive_gmp    = $(SRC_PACKAGE_PATH)/GNU/gmp/gmp-6.2.1.tar.xz
+tar_xz_archive_mpfr   = $(SRC_PACKAGE_PATH)/GNU/mpfr/mpfr-4.1.0.tar.xz
+tar_gz_archive_mpc    = $(SRC_PACKAGE_PATH)/GNU/mpc/mpc-1.2.1.tar.gz
+tar_xz_archive_isl    = $(SRC_PACKAGE_PATH)/inria/isl/isl-0.24.tar.xz
+SRC_ARCHIVE           = $(tar_xz_archive)
+SRC_DIR               = $(TARGET_BUILD_DIR)/gcc-11.2.0
+src_dir_name          = gcc-11.2.0
+src_done              = $(TARGET_BUILD_DIR)/.source-done
+gmp_src_done          = $(TARGET_BUILD_DIR)/.gmp-source-done
+mpfr_src_done         = $(TARGET_BUILD_DIR)/.mpfr-source-done
+mpc_src_done          = $(TARGET_BUILD_DIR)/.mpc-source-done
+isl_src_done          = $(TARGET_BUILD_DIR)/.isl-source-done
+
+ifneq ($(TOOLCHAIN),)
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_AT91SAM7S_NEWLIB)),)
+PATCHES = PATCHES.at91sam7s
+else
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A9XX_NEWLIB)),)
+PATCHES = PATCHES.a9xx
+else
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A33XX_NEWLIB)),)
+PATCHES = PATCHES.a33xx
+else
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) \
+                             $(TOOLCHAIN_POWER9_GLIBC)),)
+PATCHES = PATCHES.powerpc
+else
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8LE_GLIBC) \
+                             $(TOOLCHAIN_POWER9LE_GLIBC)),)
+PATCHES = PATCHES.powerpcle
+else
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_H5_GLIBC)     \
+                             $(TOOLCHAIN_S9XX_GLIBC)   \
+                             $(TOOLCHAIN_A311X_GLIBC)  \
+                             $(TOOLCHAIN_RK33XX_GLIBC) \
+                             $(TOOLCHAIN_RK339X_GLIBC) \
+                             $(TOOLCHAIN_M1000_GLIBC)),)
+PATCHES = PATCHES.aarch64
+else
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC)),)
+PATCHES = PATCHES.x86_64
+else
+PATCHES = PATCHES
+endif
+endif
+endif
+endif
+endif
+endif
+endif
+endif
+
+build_dir             = $(TARGET_BUILD_DIR)/build
+
+sysroot_dir           = $(TOOLCHAIN_PATH)/$(TARGET)/sys-root
+
+static_build_target   = $(TARGET_BUILD_DIR)/.static-built
+static_install_target = $(TARGET_BUILD_DIR)/.static-installed
+second_build_target   = $(TARGET_BUILD_DIR)/.second-built
+second_install_target = $(TARGET_BUILD_DIR)/.second-installed
+full_build_target     = $(TARGET_BUILD_DIR)/.full-built
+full_install_target   = $(TARGET_BUILD_DIR)/.full-installed
+
+#
+# Cross GNAT requires native GNAT on the build machine with same version.
+# To be independed from distribution we are working the build GNAT tools
+# created and installed with prefix $(GNATTOOLS_DEST_DIR)
+#
+# see: build-system/3pp/gnattools/11.2.0 for more information.
+#
+GNATTOOLS_DEST_DIR = $(BUILDSYSTEM)/gnattools/11.2.0/usr
+
+environment  = PATH=$(TOOLCHAIN_PATH)/bin:$(GNATTOOLS_DEST_DIR)/bin:$(PATH)
+environment += GNATBIND=$(GNATTOOLS_DEST_DIR)/bin/gnatbind
+environment += GNATMAKE=$(GNATTOOLS_DEST_DIR)/bin/gnatmake
+
+
+LIBSUFFIX    =
+
+
+ifeq ($(FLAVOUR),static)
+BUILD_TARGETS  = $(static_build_target)
+BUILD_TARGETS += $(static_install_target)
+endif
+
+ifeq ($(FLAVOUR),second)
+BUILD_TARGETS  = $(second_build_target)
+BUILD_TARGETS += $(second_install_target)
+endif
+
+ifeq ($(FLAVOUR),full)
+BUILD_TARGETS  = $(full_build_target)
+BUILD_TARGETS += $(full_install_target)
+endif
+
+
+include ../../../build-system/core.mk
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_ARM32_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-abi=aapcs
+extra_configure_switches += --with-dwarf2
+extra_configure_switches += --disable-isl-version-check
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-threads
+extra_configure_switches += --disable-tls
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --without-headers
+extra_configure_switches += --enable-languages=c
+else
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-headers=yes
+extra_configure_switches += --enable-languages=c,c++
+endif
+extra_configure_switches += --with-newlib
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+extra_configure_switches += --with-multilib-list=aprofile,rmprofile
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A33XX_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-isl-version-check
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-threads
+extra_configure_switches += --disable-tls
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --without-headers
+extra_configure_switches += --enable-languages=c
+else
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-headers=yes
+extra_configure_switches += --enable-languages=c,c++
+endif
+extra_configure_switches += --with-newlib
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+extra_configure_switches += --with-extra-multilibs=armv6-m
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A9XX_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-isl-version-check
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-threads
+extra_configure_switches += --disable-tls
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --without-headers
+extra_configure_switches += --enable-languages=c
+else
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-headers=yes
+extra_configure_switches += --enable-languages=c,c++
+endif
+extra_configure_switches += --with-newlib
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+extra_configure_switches += --with-extra-multilibs=armv7-m
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H5_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-multilib-list=lp64,ilp32
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --disable-__cxa_atexit
+extra_configure_switches += --enable-fix-cortex-a53-835769
+extra_configure_switches += --enable-fix-cortex-a53-843419
+extra_configure_switches += --disable-isl-version-check
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-threads
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --without-headers
+extra_configure_switches += --enable-languages=c
+else
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-headers=yes
+extra_configure_switches += --enable-languages=c,c++
+endif
+extra_configure_switches += --with-newlib
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S9XX_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-multilib-list=lp64,ilp32
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --disable-__cxa_atexit
+extra_configure_switches += --enable-fix-cortex-a53-835769
+extra_configure_switches += --enable-fix-cortex-a53-843419
+extra_configure_switches += --disable-isl-version-check
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-threads
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --without-headers
+extra_configure_switches += --enable-languages=c
+else
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-headers=yes
+extra_configure_switches += --enable-languages=c,c++
+endif
+extra_configure_switches += --with-newlib
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK33XX_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-multilib-list=lp64,ilp32
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --disable-__cxa_atexit
+extra_configure_switches += --enable-fix-cortex-a53-835769
+extra_configure_switches += --enable-fix-cortex-a53-843419
+extra_configure_switches += --disable-isl-version-check
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-threads
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --without-headers
+extra_configure_switches += --enable-languages=c
+else
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-headers=yes
+extra_configure_switches += --enable-languages=c,c++
+endif
+extra_configure_switches += --with-newlib
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_M1000_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-multilib-list=lp64,ilp32
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a57
+extra_configure_switches += --disable-__cxa_atexit
+extra_configure_switches += --disable-isl-version-check
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-threads
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --without-headers
+extra_configure_switches += --enable-languages=c
+else
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-headers=yes
+extra_configure_switches += --enable-languages=c,c++
+endif
+extra_configure_switches += --with-newlib
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_AT91SAM7S_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --enable-fpu=no
+extra_configure_switches += --enable-nofmult=no
+extra_configure_switches += --enable-26bit=no
+extra_configure_switches += --enable-underscore=no
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --with-float=soft
+extra_configure_switches += --with-dwarf2
+extra_configure_switches += --disable-isl-version-check
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-threads
+extra_configure_switches += --disable-tls
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --without-headers
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --with-newlib
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+extra_configure_switches += --with-extra-multilibs=armv4t
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RISCV64_NEWLIB))
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-abi=lp64d
+extra_configure_switches += --with-arch=rv64imafdc
+extra_configure_switches += --with-dwarf2
+extra_configure_switches += --disable-isl-version-check
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-tm-clone-registry
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-tls
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --without-headers
+extra_configure_switches += --enable-languages=c
+else
+extra_configure_switches += --enable-plugins
+extra_configure_switches += --with-headers=yes
+extra_configure_switches += --enable-languages=c,c++
+endif
+extra_configure_switches += --with-newlib
+extra_configure_switches += --with-sysroot=$(TOOLCHAIN_PATH)/$(TARGET)
+extra_configure_switches += 'CFLAGS_FOR_TARGET=-O2 -mcmodel=medany'
+extra_configure_switches += 'CXXFLAGS_FOR_TARGET=-O2 -mcmodel=medany'
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A1X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a8
+extra_configure_switches += --with-fpu=neon
+extra_configure_switches += --with-abi=aapcs-linux
+# add
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A2X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-tune=cortex-a7
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+# add
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_H3_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-tune=cortex-a7
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+# add
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --with-mode=thumb
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# --without-headers replacement for --with-newlib, to make libgcc independed from glibc:
+extra_configure_switches += --without-headers
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_H5_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --enable-fix-cortex-a53-835769
+extra_configure_switches += --enable-fix-cortex-a53-843419
+# add
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_S8XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a5
+extra_configure_switches += --with-fpu=neon
+extra_configure_switches += --with-abi=aapcs-linux
+# add
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_S9XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --enable-fix-cortex-a53-835769
+extra_configure_switches += --enable-fix-cortex-a53-843419
+# add
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A9XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+# add
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A311X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a73.cortex-a53
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --enable-fix-cortex-a53-835769
+extra_configure_switches += --enable-fix-cortex-a53-843419
+# add
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RK33XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --enable-fix-cortex-a53-835769
+extra_configure_switches += --enable-fix-cortex-a53-843419
+# add
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RK339X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a72.cortex-a53
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --enable-fix-cortex-a53-835769
+extra_configure_switches += --enable-fix-cortex-a53-843419
+# add
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A33XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+# add
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RK328X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-tune=cortex-a17
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+# add
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_IMX6_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a9
+extra_configure_switches += --with-fpu=vfpv3
+extra_configure_switches += --with-abi=aapcs-linux
+# add
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --with-mode=thumb
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# --without-headers replacement for --with-newlib, to make libgcc independed from glibc:
+extra_configure_switches += --without-headers
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_IMX6ULL_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a7
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+# add
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# --without-headers replacement for --with-newlib, to make libgcc independed from glibc:
+extra_configure_switches += --without-headers
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_OMAP543X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-tune=cortex-a15
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+# add
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --with-mode=thumb
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# --without-headers replacement for --with-newlib, to make libgcc independed from glibc:
+extra_configure_switches += --without-headers
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_AM335X_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a8
+extra_configure_switches += --with-fpu=neon
+extra_configure_switches += --with-abi=aapcs-linux
+# add
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# --without-headers replacement for --with-newlib, to make libgcc independed from glibc:
+extra_configure_switches += --without-headers
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_JZ47XX_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch-32=mips32r2
+extra_configure_switches += --with-arch-64=mips64r2
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --with-mips-plt
+extra_configure_switches += --enable-target-optspace
+extra_configure_switches += --enable-symvers=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_P5600_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=mips32r5
+extra_configure_switches += --with-tune=p5600
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --with-mips-plt
+extra_configure_switches += --enable-target-optspace
+extra_configure_switches += --enable-symvers=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_M1000_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --disable-multiarch
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a57
+extra_configure_switches += --with-abi=lp64
+# add
+extra_configure_switches += --enable-gold
+extra_configure_switches += --enable-c99
+extra_configure_switches += --enable-long-long
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+# without-headers replacement, to make libgcc independed from glibc:
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-multilib-list=m64,m32
+extra_configure_switches += --with-cpu-32=power8
+extra_configure_switches += --with-tune-32=power8
+extra_configure_switches += --with-cpu-64=power8
+extra_configure_switches += --with-tune-64=power8
+extra_configure_switches += --with-long-double-128
+# gnu-indirect-function available for i[3456]86*|x86_64*|ppc*|ppc64*|s390*|arm*|aarch64*|mips* targets:
+extra_configure_switches += --enable-gnu-indirect-function
+extra_configure_switches += --enable-secureplt
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER9_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-multilib-list=m64,m32
+extra_configure_switches += --with-cpu-32=power9
+extra_configure_switches += --with-tune-32=power9
+extra_configure_switches += --with-cpu-64=power9
+extra_configure_switches += --with-tune-64=power9
+extra_configure_switches += --with-long-double-128
+# gnu-indirect-function available for i[3456]86*|x86_64*|ppc*|ppc64*|s390*|arm*|aarch64*|mips* targets:
+extra_configure_switches += --enable-gnu-indirect-function
+extra_configure_switches += --enable-secureplt
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8LE_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=power8
+extra_configure_switches += --with-tune=power8
+extra_configure_switches += --with-long-double-128
+# gnu-indirect-function available for i[3456]86*|x86_64*|ppc*|ppc64*|s390*|arm*|aarch64*|mips* targets:
+extra_configure_switches += --enable-gnu-indirect-function
+extra_configure_switches += --enable-secureplt
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER9LE_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=power9
+extra_configure_switches += --with-tune=power9
+extra_configure_switches += --with-long-double-128
+# gnu-indirect-function available for i[3456]86*|x86_64*|ppc*|ppc64*|s390*|arm*|aarch64*|mips* targets:
+extra_configure_switches += --enable-gnu-indirect-function
+extra_configure_switches += --enable-secureplt
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RISCV64_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-abi=lp64d
+extra_configure_switches += --with-arch=rv64imafdc
+extra_configure_switches += --enable-tls
+extra_configure_switches += --disable-tm-clone-registry
+extra_configure_switches += --disable-isl-version-check
+extra_configure_switches += 'CFLAGS_FOR_TARGET=-O2 -mcmodel=medany'
+extra_configure_switches += 'CXXFLAGS_FOR_TARGET=-O2 -mcmodel=medany'
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-nls
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_I586_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=i586
+extra_configure_switches += --with-tune=i586
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_I686_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --with-arch=i686
+extra_configure_switches += --with-tune=i686
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC)),)
+extra_configure_switches  = '--with-pkgversion=Radix $(TOOLCHAINS_VERSION)'
+extra_configure_switches += '--with-bugurl=https://radix.pro'
+extra_configure_switches += --libdir=$(TOOLCHAIN_PATH)/lib$(LIBSUFFIX)
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-multilib-list=m64,m32
+extra_configure_switches += --disable-isl-version-check
+ifeq ($(FLAVOUR),static)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --disable-threads
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --disable-shared
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+extra_configure_switches += --with-newlib
+endif
+ifeq ($(FLAVOUR),second)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --disable-libatomic
+extra_configure_switches += --disable-libgomp
+extra_configure_switches += --disable-libitm
+extra_configure_switches += --disable-libmudflap
+extra_configure_switches += --disable-libquadmath
+extra_configure_switches += --disable-libsanitizer
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --disable-libstdc++-v3
+extra_configure_switches += --enable-languages=c
+extra_configure_switches += --enable-decimal-float=no
+extra_configure_switches += --disable-nls
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --with-sysroot=$(sysroot_dir)
+extra_configure_switches += --enable-languages=c,c++,d,objc,obj-c++,fortran,go,lto,ada
+extra_configure_switches += --enable-libstdcxx-dual-abi
+extra_configure_switches += --with-default-libstdcxx-abi=new
+extra_configure_switches += --disable-libstdcxx-pch
+extra_configure_switches += --disable-libunwind-exceptions
+extra_configure_switches += --with-linker-hash-style=gnu
+extra_configure_switches += --enable-gnu-unique-object
+extra_configure_switches += --enable-clocale=gnu
+extra_configure_switches += --enable-__cxa_atexit
+extra_configure_switches += --enable-threads=posix
+extra_configure_switches += --enable-default-ssp
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --enable-shared
+extra_configure_switches += --enable-plugin
+extra_configure_switches += --enable-lto
+extra_configure_switches += --enable-nls
+extra_configure_switches += --with-included-gettext
+endif
+endif
+
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	@touch $@
+
+$(gmp_src_done): $(src_done)
+	@echo "Expanding $(tar_xz_archive_gmp)"
+	@tar xJf $(tar_xz_archive_gmp) -C $(TARGET_BUILD_DIR)
+	@cd $(SRC_DIR); ln -sf ../gmp-6.2.1 gmp
+	@touch $@
+
+$(mpfr_src_done): $(src_done)
+	@echo "Expanding $(tar_xz_archive_mpfr)"
+	@tar xJf $(tar_xz_archive_mpfr) -C $(TARGET_BUILD_DIR)
+	@cd $(SRC_DIR); ln -sf ../mpfr-4.1.0 mpfr
+	@touch $@
+
+$(mpc_src_done): $(src_done)
+	@echo "Expanding $(tar_gz_archive_mpc)"
+	@tar xzf $(tar_gz_archive_mpc) -C $(TARGET_BUILD_DIR)
+	@cd $(SRC_DIR); ln -sf ../mpc-1.2.1 mpc
+	@touch $@
+
+$(isl_src_done): $(src_done)
+	@echo "Expanding $(tar_xz_archive_isl)"
+	@tar xJf $(tar_xz_archive_isl) -C $(TARGET_BUILD_DIR)
+	@cd $(SRC_DIR); ln -sf ../isl-0.24 isl
+	@touch $@
+
+$(static_build_target): $(gmp_src_done) $(mpfr_src_done) $(mpc_src_done) $(isl_src_done)
+	@mkdir -p $(build_dir)
+	@cd $(build_dir) && $(environment) ../$(src_dir_name)/configure \
+	  --prefix=$(TOOLCHAIN_PATH)       \
+	  --build=$(HOST)                  \
+	  --host=$(HOST)                   \
+	  --target=$(TARGET)               \
+	  --with-as=$(TOOLCHAIN_PATH)/bin/$(TARGET)-as \
+	  --with-ld=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ld \
+	  --datadir=$(TOOLCHAIN_PATH)/share       \
+	  --infodir=$(TOOLCHAIN_PATH)/share/info  \
+	  --mandir=$(TOOLCHAIN_PATH)/share/man    \
+	  $(extra_configure_switches)
+	@$(environment) $(MAKE) -C $(build_dir) all
+	@touch $@
+
+$(static_install_target): $(static_build_target)
+	@$(MAKE) $(environment) -j1 -C $(build_dir) install
+	@rm -f $(TOOLCHAIN_PATH)/share/info/dir
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
+
+$(second_build_target): $(gmp_src_done) $(mpfr_src_done) $(mpc_src_done) $(isl_src_done)
+	@mkdir -p $(build_dir)
+	@cd $(build_dir) && $(environment) ../$(src_dir_name)/configure \
+	  --prefix=$(TOOLCHAIN_PATH)       \
+	  --build=$(HOST)                  \
+	  --host=$(HOST)                   \
+	  --target=$(TARGET)               \
+	  --with-as=$(TOOLCHAIN_PATH)/bin/$(TARGET)-as \
+	  --with-ld=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ld \
+	  --datadir=$(TOOLCHAIN_PATH)/share       \
+	  --infodir=$(TOOLCHAIN_PATH)/share/info  \
+	  --mandir=$(TOOLCHAIN_PATH)/share/man    \
+	  $(extra_configure_switches)
+	@$(environment) $(MAKE) -C $(build_dir) all
+	@touch $@
+
+$(second_install_target): $(second_build_target)
+	@$(MAKE) $(environment) -j1 -C $(build_dir) install
+	@rm -f $(TOOLCHAIN_PATH)/share/info/dir
+	@cp -d $(TOOLCHAIN_PATH)/$(TARGET)/lib/libgcc_s.so $(sysroot_dir)/usr/lib
+	@cp    $(TOOLCHAIN_PATH)/$(TARGET)/lib/libgcc_s.so.1 $(sysroot_dir)/usr/lib
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) $(TOOLCHAIN_POWER9_GLIBC) \
+                             $(TOOLCHAIN_X86_64_GLIBC)),)
+	@cp -d $(TOOLCHAIN_PATH)/$(TARGET)/lib32/libgcc_s.so $(sysroot_dir)/usr/lib32
+	@cp    $(TOOLCHAIN_PATH)/$(TARGET)/lib32/libgcc_s.so.1 $(sysroot_dir)/usr/lib32
+endif
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
+
+$(full_build_target): $(gmp_src_done) $(mpfr_src_done) $(mpc_src_done) $(isl_src_done)
+	@mkdir -p $(build_dir)
+	cd $(build_dir) && $(environment) ../$(src_dir_name)/configure \
+	  --prefix=$(TOOLCHAIN_PATH)       \
+	  --build=$(HOST)                  \
+	  --host=$(HOST)                   \
+	  --target=$(TARGET)               \
+	  --with-as=$(TOOLCHAIN_PATH)/bin/$(TARGET)-as \
+	  --with-ld=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ld \
+	  --datadir=$(TOOLCHAIN_PATH)/share       \
+	  --infodir=$(TOOLCHAIN_PATH)/share/info  \
+	  --mandir=$(TOOLCHAIN_PATH)/share/man    \
+	  $(extra_configure_switches)
+	$(environment) $(MAKE) -C $(build_dir) all
+	@touch $@
+
+#
+# Before installing final GCC we remove libgcc builded with second GCC.
+# The final gcc doesn't install libgcc_s.so, libstdc++.so into $(sysroot_dir)/usr/{lib|lib32}
+# and it is not needed.
+# NOTE: if you want to install libgcc_s.so, libstdc++.so and other libraries builded with GCC
+#       and placed into $(TOOLCHAIN_PATH)/{lib|lib32} during GCC installation into TARGET
+#       root file system then you should change *.la files. So the lines
+#
+# libdir='/opt/toolchain/x86_64-PC-linux-glibc/1.0.0/x86_64-radix-linux-gnu/lib/../lib32'
+#
+# where '/opt/toolchain/x86_64-PC-linux-glibc/1.0.0/x86_64-radix-linux-gnu' is the same
+#    as '$(TOOLCHAIN_PATH)/$(TARGET)'
+# should be replaced by
+# libdir='/usr/lib/../lib32'
+#
+# In the other words we hould do following
+#
+#	@cat $(TOOLCHAIN_PATH)/$(TARGET)/lib$(LIBSUFFIX)/*.la | \
+#	  $(SED) -e "s|$(TOOLCHAIN_PATH)/$(TARGET)|/usr/lib$(LIBSUFFIX)|g" > \
+#	  $(TOOLCHAIN_PATH)/$(TARGET)/lib$(LIBSUFFIX)/*.la.tmp && \
+#	  mv $(TOOLCHAIN_PATH)/$(TARGET)/lib$(LIBSUFFIX)/*.la.tmp \
+#	     $(target_rootfs)/usr/lib$(LIBSUFFIX)/*.la
+#
+# for each *.la file in the $(TOOLCHAIN_PATH)/$(TARGET)/{lib|lib32} directory.
+#
+
+$(full_install_target): $(full_build_target)
+	@rm -f $(sysroot_dir)/usr/lib/libgcc_s.so
+	@rm -f $(sysroot_dir)/usr/lib/libgcc_s.so.1
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) $(TOOLCHAIN_POWER9_GLIBC) \
+                             $(TOOLCHAIN_X86_64_GLIBC)),)
+	@rm -f $(sysroot_dir)/usr/lib32/libgcc_s.so
+	@rm -f $(sysroot_dir)/usr/lib32/libgcc_s.so.1
+endif
+	@$(MAKE) $(environment) -j1 -C $(build_dir) install
+	@rm -f $(TOOLCHAIN_PATH)/share/info/dir
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
Index: toolchains-1.7.1/core/gcc/11.2.0/PATCHES
===================================================================
--- toolchains-1.7.1/core/gcc/11.2.0/PATCHES	(nonexistent)
+++ toolchains-1.7.1/core/gcc/11.2.0/PATCHES	(revision 343)
@@ -0,0 +1,7 @@
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libstdc++-docs.patch            -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libtool-no-rpath.patch          -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-c++-alias-member-template.patch -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-fortran-interface.patch         -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-golang-compiler.patch           -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-no-fixincludes.patch            -p0
Index: toolchains-1.7.1/core/gcc/11.2.0/PATCHES.a33xx
===================================================================
--- toolchains-1.7.1/core/gcc/11.2.0/PATCHES.a33xx	(nonexistent)
+++ toolchains-1.7.1/core/gcc/11.2.0/PATCHES.a33xx	(revision 343)
@@ -0,0 +1,9 @@
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-a33xx-newlib.patch              -p0
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libstdc++-docs.patch            -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libtool-no-rpath.patch          -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-c++-alias-member-template.patch -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-fortran-interface.patch         -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-golang-compiler.patch           -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-no-fixincludes.patch            -p0
Index: toolchains-1.7.1/core/gcc/11.2.0/PATCHES.a9xx
===================================================================
--- toolchains-1.7.1/core/gcc/11.2.0/PATCHES.a9xx	(nonexistent)
+++ toolchains-1.7.1/core/gcc/11.2.0/PATCHES.a9xx	(revision 343)
@@ -0,0 +1,9 @@
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-a9xx-newlib.patch               -p0
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libstdc++-docs.patch            -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libtool-no-rpath.patch          -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-c++-alias-member-template.patch -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-fortran-interface.patch         -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-golang-compiler.patch           -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-no-fixincludes.patch            -p0
Index: toolchains-1.7.1/core/gcc/11.2.0/PATCHES.aarch64
===================================================================
--- toolchains-1.7.1/core/gcc/11.2.0/PATCHES.aarch64	(nonexistent)
+++ toolchains-1.7.1/core/gcc/11.2.0/PATCHES.aarch64	(revision 343)
@@ -0,0 +1,9 @@
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-aarch64-multilib.patch          -p0
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libstdc++-docs.patch            -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libtool-no-rpath.patch          -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-c++-alias-member-template.patch -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-fortran-interface.patch         -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-golang-compiler.patch           -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-no-fixincludes.patch            -p0
Index: toolchains-1.7.1/core/gcc/11.2.0/PATCHES.at91sam7s
===================================================================
--- toolchains-1.7.1/core/gcc/11.2.0/PATCHES.at91sam7s	(nonexistent)
+++ toolchains-1.7.1/core/gcc/11.2.0/PATCHES.at91sam7s	(revision 343)
@@ -0,0 +1,9 @@
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-at91sam7s-newlib.patch          -p0
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libstdc++-docs.patch            -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libtool-no-rpath.patch          -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-c++-alias-member-template.patch -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-fortran-interface.patch         -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-golang-compiler.patch           -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-no-fixincludes.patch            -p0
Index: toolchains-1.7.1/core/gcc/11.2.0/PATCHES.powerpc
===================================================================
--- toolchains-1.7.1/core/gcc/11.2.0/PATCHES.powerpc	(nonexistent)
+++ toolchains-1.7.1/core/gcc/11.2.0/PATCHES.powerpc	(revision 343)
@@ -0,0 +1,10 @@
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-ppc64-interpreter.patch         -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-ppc64-multilib.patch            -p0
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libstdc++-docs.patch            -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libtool-no-rpath.patch          -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-c++-alias-member-template.patch -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-fortran-interface.patch         -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-golang-compiler.patch           -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-no-fixincludes.patch            -p0
Index: toolchains-1.7.1/core/gcc/11.2.0/PATCHES.powerpcle
===================================================================
--- toolchains-1.7.1/core/gcc/11.2.0/PATCHES.powerpcle	(nonexistent)
+++ toolchains-1.7.1/core/gcc/11.2.0/PATCHES.powerpcle	(revision 343)
@@ -0,0 +1,10 @@
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-ppc64-interpreter.patch         -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-ppc64le-multilib.patch          -p0
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libstdc++-docs.patch            -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libtool-no-rpath.patch          -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-c++-alias-member-template.patch -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-fortran-interface.patch         -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-golang-compiler.patch           -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-no-fixincludes.patch            -p0
Index: toolchains-1.7.1/core/gcc/11.2.0/PATCHES.x86_64
===================================================================
--- toolchains-1.7.1/core/gcc/11.2.0/PATCHES.x86_64	(nonexistent)
+++ toolchains-1.7.1/core/gcc/11.2.0/PATCHES.x86_64	(revision 343)
@@ -0,0 +1,10 @@
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-x86_64-interpreter.patch        -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-x86_64-multilib.patch           -p0
+
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libstdc++-docs.patch            -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-libtool-no-rpath.patch          -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-c++-alias-member-template.patch -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-fortran-interface.patch         -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-golang-compiler.patch           -p0
+../../../sources/GNU/gcc/patches/gcc-11.2.0-no-fixincludes.patch            -p0
Index: toolchains-1.7.1/core/gcc/11.2.0
===================================================================
--- toolchains-1.7.1/core/gcc/11.2.0	(nonexistent)
+++ toolchains-1.7.1/core/gcc/11.2.0	(revision 343)

Property changes on: toolchains-1.7.1/core/gcc/11.2.0
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/gcc
===================================================================
--- toolchains-1.7.1/core/gcc	(nonexistent)
+++ toolchains-1.7.1/core/gcc	(revision 343)

Property changes on: toolchains-1.7.1/core/gcc
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,33 ##
+
+# Target build dirs
+.host/
+.a1x-newlib/
+.at91sam7s-newlib/
+.dm644x-newlib/
+.a1x-eglibc/
+.dm644x-eglibc/
+.omap35x-eglibc/
+.omap543x-eglibc/
+.bcm74x-eglibc/
+.x86_64-eglibc/
+
+# Hidden files (each file)
+.makefile
+
+# Tarballs
+*.gz
+*.bz2
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/gdb/11.1/Makefile
===================================================================
--- toolchains-1.7.1/core/gdb/11.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/core/gdb/11.1/Makefile	(revision 343)
@@ -0,0 +1,390 @@
+
+
+COMPONENT_TARGETS  = $(TOOLCHAIN_ARM32_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_H5_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_M1000_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_NEWLIB)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_A1X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A2X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H3_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H5_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6ULL_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_JZ47XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_P5600_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_M1000_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_OMAP543X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_AM335X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK328X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S8XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A311X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK339X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8LE_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9LE_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_I586_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_I686_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_X86_64_GLIBC)
+
+
+include ../../../build-system/config.mk
+
+
+SOURCE_REQUIRES = sources/GNU/gdb
+
+REQUIRES  = core/gcc/11.2.0^full
+
+# ======= __END_OF_REQUIRES__ =======
+
+tar_xz_archive   = $(SRC_PACKAGE_PATH)/GNU/gdb/gdb-11.1.tar.xz
+SRC_ARCHIVE      = $(tar_xz_archive)
+SRC_DIR          = $(TARGET_BUILD_DIR)/gdb-11.1
+src_dir_name     = gdb-11.1
+src_done         = $(TARGET_BUILD_DIR)/.source-done
+
+build_dir        = $(TARGET_BUILD_DIR)/build
+
+sysroot_dir      = $(TOOLCHAIN_PATH)/$(TARGET)/sys-root
+
+build_target     = $(TARGET_BUILD_DIR)/.built
+install_target   = $(TARGET_BUILD_DIR)/.installed
+
+environment  = PATH=$(TOOLCHAIN_PATH)/bin:$(PATH)
+
+
+BUILD_TARGETS  = $(build_target)
+BUILD_TARGETS += $(install_target)
+
+include ../../../build-system/core.mk
+
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_ARM32_NEWLIB))
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-abi=aapcs
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A33XX_NEWLIB))
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=armv6-m
+extra_configure_switches += --with-tune=cortex-m0
+extra_configure_switches += --with-float=soft
+extra_configure_switches += --with-abi=aapcs
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A9XX_NEWLIB))
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=armv7-m
+extra_configure_switches += --with-tune=cortex-m3
+extra_configure_switches += --with-fpu=fpv4-sp-d16
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --with-abi=aapcs
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H5_NEWLIB))
+extra_configure_switches  = --enable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=armv8-a
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S9XX_NEWLIB))
+extra_configure_switches  = --enable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=armv8-a
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK33XX_NEWLIB))
+extra_configure_switches  = --enable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=armv8-a
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_1000_NEWLIB))
+extra_configure_switches  = --enable-multiarch
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-arch=armv8-a
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RISCV64_NEWLIB))
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --with-abi=lp64d
+extra_configure_switches += --with-arch=rv64imafdc
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A1X_GLIBC)),)
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a8
+extra_configure_switches += --with-fpu=neon
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A2X_GLIBC)),)
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-tune=cortex-a7
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_H3_GLIBC)),)
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-tune=cortex-a7
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_H5_GLIBC)),)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_IMX6_GLIBC)),)
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a9
+extra_configure_switches += --with-fpu=vfpv3
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_IMX6ULL_GLIBC)),)
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a7
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_JZ47XX_GLIBC)),)
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --with-arch-32=mips32r2
+extra_configure_switches += --with-arch-64=mips64r2
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_P5600_GLIBC)),)
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --with-arch=mips32r5
+extra_configure_switches += --with-tune=p5600
+extra_configure_switches += --with-float=hard
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_M1000_GLIBC)),)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a57
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_OMAP543X_GLIBC)),)
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-tune=cortex-a15
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_AM335X_GLIBC)),)
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a8
+extra_configure_switches += --with-fpu=neon
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RK328X_GLIBC)),)
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --with-arch=armv7ve
+extra_configure_switches += --with-tune=cortex-a17
+extra_configure_switches += --with-fpu=neon-vfpv4
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_S8XX_GLIBC)),)
+extra_configure_switches  = --enable-interwork
+extra_configure_switches += --enable-multilib
+extra_configure_switches += --disable-libssp
+extra_configure_switches += --with-arch=armv7-a
+extra_configure_switches += --with-tune=cortex-a5
+extra_configure_switches += --with-fpu=neon
+extra_configure_switches += --with-abi=aapcs-linux
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_S9XX_GLIBC)),)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A9XX_GLIBC)),)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A311X_GLIBC)),)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RK33XX_GLIBC)),)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RK339X_GLIBC)),)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-cpu=cortex-a53
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-abi=lp64
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A33XX_GLIBC)),)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-arch=armv8-a
+extra_configure_switches += --with-fpu=neon-fp-armv8
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER9_GLIBC)),)
+extra_configure_switches += --with-multilib-list=m64,m32
+extra_configure_switches += --with-cpu=power9
+extra_configure_switches += --with-tune=power9
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC)),)
+extra_configure_switches += --with-multilib-list=m64,m32
+extra_configure_switches += --with-cpu=power8
+extra_configure_switches += --with-tune=power8
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8LE_GLIBC)),)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=power8
+extra_configure_switches += --with-tune=power8
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER9LE_GLIBC)),)
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-cpu=power9
+extra_configure_switches += --with-tune=power9
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RISCV64_GLIBC))
+extra_configure_switches += --disable-multilib
+extra_configure_switches += --with-abi=lp64d
+extra_configure_switches += --with-arch=rv64imafdc
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_I586_GLIBC)),)
+extra_configure_switches += --with-arch=i586
+extra_configure_switches += --with-tune=i586
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_I686_GLIBC)),)
+extra_configure_switches += --with-arch=i686
+extra_configure_switches += --with-tune=i686
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC)),)
+extra_configure_switches += --with-multilib-list=m64,m32
+extra_configure_switches += --with-build-sysroot=$(sysroot_dir)
+endif
+
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	@touch $@
+
+$(build_target): $(src_done)
+	@mkdir -p $(build_dir)
+	@cd $(build_dir) && $(environment) ../$(src_dir_name)/configure \
+	  --prefix=$(TOOLCHAIN_PATH)              \
+	  --target=$(TARGET)                      \
+	  --datadir=$(TOOLCHAIN_PATH)/share       \
+	  --infodir=$(TOOLCHAIN_PATH)/share/info  \
+	  --mandir=$(TOOLCHAIN_PATH)/share/man    \
+	  $(extra_configure_switches)
+	@$(MAKE) $(environment) -C $(build_dir) all
+	@touch $@
+
+$(install_target): $(build_target)
+	@$(MAKE) $(environment) -j1 -C $(build_dir) install
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
Index: toolchains-1.7.1/core/gdb/11.1
===================================================================
--- toolchains-1.7.1/core/gdb/11.1	(nonexistent)
+++ toolchains-1.7.1/core/gdb/11.1	(revision 343)

Property changes on: toolchains-1.7.1/core/gdb/11.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/gdb
===================================================================
--- toolchains-1.7.1/core/gdb	(nonexistent)
+++ toolchains-1.7.1/core/gdb	(revision 343)

Property changes on: toolchains-1.7.1/core/gdb
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,33 ##
+
+# Target build dirs
+.host/
+.a1x-newlib/
+.at91sam7s-newlib/
+.dm644x-newlib/
+.a1x-eglibc/
+.dm644x-eglibc/
+.omap35x-eglibc/
+.omap543x-eglibc/
+.bcm74x-eglibc/
+.x86_64-eglibc/
+
+# Hidden files (each file)
+.makefile
+
+# Tarballs
+*.gz
+*.bz2
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/glibc/2.34/Makefile
===================================================================
--- toolchains-1.7.1/core/glibc/2.34/Makefile	(nonexistent)
+++ toolchains-1.7.1/core/glibc/2.34/Makefile	(revision 343)
@@ -0,0 +1,906 @@
+
+
+COMPONENT_TARGETS  = $(TOOLCHAIN_A1X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A2X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H3_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H5_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6ULL_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_JZ47XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_P5600_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_M1000_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_OMAP543X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_AM335X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK328X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S8XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A311X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK339X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8LE_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9LE_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_I586_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_I686_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_X86_64_GLIBC)
+
+FLAVOURS = headers full
+
+include ../../../build-system/config.mk
+
+SOURCE_REQUIRES = sources/GNU/glibc
+
+ifeq ($(FLAVOUR),headers)
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A1X_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A2X_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H3_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H5_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_IMX6_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_IMX6ULL_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_JZ47XX_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_P5600_GLIBC))
+REQUIRES  = core/linux/Baikal/T1000/t1-5.4.105-5.6.207
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_M1000_GLIBC))
+REQUIRES  = core/linux/Baikal/M1000/m1-5.4.92-5.1.76
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_OMAP543X_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_AM335X_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RK328X_GLIBC) \
+                             $(TOOLCHAIN_RK33XX_GLIBC) \
+                             $(TOOLCHAIN_RK339X_GLIBC) \
+                             $(TOOLCHAIN_A33XX_GLIBC)),)
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S8XX_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_S9XX_GLIBC) \
+                             $(TOOLCHAIN_A9XX_GLIBC) \
+                             $(TOOLCHAIN_A311X_GLIBC)),)
+REQUIRES  = core/linux/5.14.9
+endif
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) \
+                             $(TOOLCHAIN_POWER9_GLIBC)),)
+REQUIRES  = core/glibc/2.34-ppc32^headers
+endif
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8LE_GLIBC) \
+                             $(TOOLCHAIN_POWER9LE_GLIBC)),)
+REQUIRES  = core/linux/5.14.9
+endif
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RISCV64_GLIBC)),)
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_I586_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_I686_GLIBC))
+REQUIRES  = core/linux/5.14.9
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
+REQUIRES  = core/glibc/2.34-x86_32^headers
+endif
+endif
+
+ifeq ($(FLAVOUR),full)
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
+REQUIRES  = core/glibc/2.34-x86_32^full
+else
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) \
+                             $(TOOLCHAIN_POWER9_GLIBC)),)
+REQUIRES  = core/glibc/2.34-ppc32^full
+else
+REQUIRES  = core/gcc/11.2.0^second
+endif
+endif
+endif
+
+# ======= __END_OF_REQUIRES__ =======
+
+tar_xz_archive  = $(SRC_PACKAGE_PATH)/GNU/glibc/glibc-2.34.tar.xz
+SRC_ARCHIVE     = $(tar_xz_archive)
+SRC_DIR         = $(TARGET_BUILD_DIR)/glibc-2.34
+src_dir_name    = glibc-2.34
+src_done        = $(TARGET_BUILD_DIR)/.source-done
+
+PATCHES         = PATCHES
+
+full_dir        = $(TARGET_BUILD_DIR)/build-full
+headers_dir     = $(TARGET_BUILD_DIR)/build-headers
+
+sysroot_dir     = $(TOOLCHAIN_PATH)/$(TARGET)/sys-root
+
+headers_target  = $(TARGET_BUILD_DIR)/.headers-installed
+full_target     = $(TARGET_BUILD_DIR)/.installed
+
+
+
+ifeq ($(FLAVOUR),headers)
+BUILD_TARGETS = $(headers_target)
+endif
+
+ifeq ($(FLAVOUR),full)
+BUILD_TARGETS = $(full_target)
+endif
+
+include ../../../build-system/core.mk
+
+
+env_sysroot     = install_root=$(sysroot_dir)
+
+
+CC           = $(CCACHE)$(TOOLCHAIN_PATH)/bin/$(TARGET)-gcc
+CXX          = $(CCACHE)$(TOOLCHAIN_PATH)/bin/$(TARGET)-g++
+
+environment  = AS=$(TOOLCHAIN_PATH)/bin/$(TARGET)-as
+environment += LD=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ld
+environment += CC="$(CC)"
+environment += CXX="$(CXX)"
+environment += AR=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ar
+environment += RANLIB=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ranlib
+
+environment += PATH=$(TOOLCHAIN_PATH)/bin:$(PATH)
+
+environment += BUILD_CC="$(CCACHE)/usr/bin/gcc"
+
+LIBSUFFIX    =
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A1X_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A2X_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv7ve -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H3_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv7ve -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H5_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a53 -mabi=lp64"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_IMX6_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_IMX6ULL_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_JZ47XX_GLIBC))
+environment += CFLAGS="-g -O2 -march=mips32r2 -mhard-float"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_P5600_GLIBC))
+environment += CFLAGS="-g -O2 -march=mips32r5 -mtune=p5600 -mhard-float"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_M1000_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a57 -mabi=lp64"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_OMAP543X_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv7ve -mtune=cortex-a15 -mfpu=neon-vfpv4 -mfloat-abi=hard"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_AM335X_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK328X_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv7ve -mtune=cortex-a17 -mfpu=neon-vfpv4 -mfloat-abi=hard"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S8XX_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv7-a -mtune=cortex-a5 -mfpu=neon -mfloat-abi=hard"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S9XX_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a53 -mabi=lp64"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A9XX_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A311X_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a73.cortex-a53 -mabi=lp64"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK33XX_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a53 -mabi=lp64"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK339X_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a72.cortex-a53 -mabi=lp64"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A33XX_GLIBC))
+environment += CFLAGS="-g -O3 -march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC))
+environment += CFLAGS="-g -O3 -mcpu=power8 -mlong-double-128"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER9_GLIBC))
+environment += CFLAGS="-g -O3 -mcpu=power9 -mlong-double-128"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER8LE_GLIBC))
+environment += CFLAGS="-g -O3 -mcpu=power8 -mlong-double-128"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER9LE_GLIBC))
+environment += CFLAGS="-g -O3 -mcpu=power9 -mlong-double-128"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RISCV64_GLIBC))
+environment += CFLAGS="-g -O3 -march=rv64gc -mcmodel=medany"
+endif
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_I586_GLIBC))
+environment += CFLAGS="-g -O3 -march=i586 -mtune=i586"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_I686_GLIBC))
+environment += CFLAGS="-g -O3"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
+environment += CFLAGS="-g -O3"
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A1X_GLIBC)      \
+                             $(TOOLCHAIN_A2X_GLIBC)      \
+                             $(TOOLCHAIN_H3_GLIBC)       \
+                             $(TOOLCHAIN_IMX6_GLIBC)     \
+                             $(TOOLCHAIN_IMX6ULL_GLIBC)  \
+                             $(TOOLCHAIN_OMAP543X_GLIBC) \
+                             $(TOOLCHAIN_AM335X_GLIBC)   \
+                             $(TOOLCHAIN_RK328X_GLIBC)   \
+                             $(TOOLCHAIN_S8XX_GLIBC)     \
+                             $(TOOLCHAIN_A9XX_GLIBC)     \
+                             $(TOOLCHAIN_A33XX_GLIBC)),)
+LIB_NAMES_SUFFIX = hard
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_JZ47XX_GLIBC) $(TOOLCHAIN_P5600_GLIBC)),)
+LIB_NAMES_SUFFIX = o32_hard
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_H5_GLIBC)     \
+                             $(TOOLCHAIN_S9XX_GLIBC)   \
+                             $(TOOLCHAIN_A311X_GLIBC)  \
+                             $(TOOLCHAIN_RK33XX_GLIBC) \
+                             $(TOOLCHAIN_RK339X_GLIBC) \
+                             $(TOOLCHAIN_M1000_GLIBC)),)
+LIB_NAMES_SUFFIX = lp64
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_I586_GLIBC) $(TOOLCHAIN_I686_GLIBC)),)
+LIB_NAMES_SUFFIX = 32
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) $(TOOLCHAIN_POWER9_GLIBC)),)
+LIB_NAMES_SUFFIX = 64-v1
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8LE_GLIBC) $(TOOLCHAIN_POWER9LE_GLIBC)),)
+LIB_NAMES_SUFFIX = 64-v2
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RISCV64_GLIBC)),)
+LIB_NAMES_SUFFIX = lp64d
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC)),)
+LIB_NAMES_SUFFIX = 64
+endif
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A1X_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A2X_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H3_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=4.14.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=4.14.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H5_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=4.14.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=4.14.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_IMX6_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.35
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.35
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_IMX6ULL_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.35
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.35
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_JZ47XX_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_P5600_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_M1000_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=4.9.14
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=4.9.14
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_OMAP543X_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=2.6.36
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=2.6.36
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_AM335X_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK33XX_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK339X_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A33XX_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK328X_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.0.52
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S8XX_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.10.33
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.10.33
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S9XX_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A9XX_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A311X_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.14.29
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) $(TOOLCHAIN_POWER9_GLIBC)),)
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.2.0
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.2.0
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8LE_GLIBC) $(TOOLCHAIN_POWER9LE_GLIBC)),)
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.2.0
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.2.0
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RISCV64_GLIBC)),)
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=5.8.0
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=5.8.0
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_I586_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=2.6.36
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=2.6.36
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_I686_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=2.6.36
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=2.6.36
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=2.6.36
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=2.6.36
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+
+extra_configure_switches  += libc_cv_slibdir=/lib$(LIBSUFFIX)
+extra_configure_switches  += libc_cv_rtlddir=/lib$(LIBSUFFIX)
+
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	@touch $@
+
+$(headers_target): $(src_done)
+	@mkdir -p $(headers_dir)
+	@cd $(headers_dir) && $(env_sysroot) $(environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET)             \
+	  $(extra_configure_switches)
+	@cd $(headers_dir) && $(MAKE) -j1 install-headers \
+	                                  install-bootstrap-headers=yes $(env_sysroot)
+	@cd $(headers_dir) && $(environment) $(MAKE) -j1 csu/subdir_lib
+	# ======= install 'lib-names-$(LIB_NAMES_SUFFIX).h' =======
+	@mkdir -p $(sysroot_dir)/usr/include/gnu
+	@install --mode=0644 $(headers_dir)/gnu/lib-names-$(LIB_NAMES_SUFFIX).h $(sysroot_dir)/usr/include/gnu
+	@install --mode=0644 $(SRC_DIR)/include/gnu/stubs.h $(sysroot_dir)/usr/include/gnu
+	# =========================================================
+	@cd $(headers_dir) && $(environment) $(MAKE) -j1 csu/subdir_install $(env_sysroot)
+	@$(environment) $(CC) -nostdlib -nostartfiles -shared -x c /dev/null \
+	                      -o $(sysroot_dir)/usr/lib$(LIBSUFFIX)/libc.so
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
+
+$(full_target): $(src_done)
+	@mkdir -p $(full_dir)
+	@echo "slibdir=/lib$(LIBSUFFIX)" >> $(full_dir)/configparms
+	@echo "rtlddir=/lib$(LIBSUFFIX)" >> $(full_dir)/configparms
+	@cd $(full_dir) && $(env_sysroot) $(environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET)             \
+	  $(extra_configure_switches)
+	@cd $(full_dir) && $(environment) $(MAKE) all
+	@cd $(full_dir) && $(environment) $(MAKE) -j1 install $(env_sysroot)
+	@rm -f $(sysroot_dir)/usr/share/info/dir
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
Index: toolchains-1.7.1/core/glibc/2.34/PATCHES
===================================================================
--- toolchains-1.7.1/core/glibc/2.34/PATCHES	(nonexistent)
+++ toolchains-1.7.1/core/glibc/2.34/PATCHES	(revision 343)
@@ -0,0 +1,10 @@
+
+../../../sources/GNU/glibc/patches/glibc-2.34-CVE-2021-38604.patch     -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-i18n.patch               -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-locale-no-archive.patch  -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-malloc-hooks.patch       -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-en_US-no-am-pm.patch     -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-c-utf8-locale.patch      -p0
+
+../../../sources/GNU/glibc/patches/glibc-2.34-ppc64-interpreter.patch  -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-x86_64-interpreter.patch -p0
Index: toolchains-1.7.1/core/glibc/2.34
===================================================================
--- toolchains-1.7.1/core/glibc/2.34	(nonexistent)
+++ toolchains-1.7.1/core/glibc/2.34	(revision 343)

Property changes on: toolchains-1.7.1/core/glibc/2.34
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/glibc/2.34-ppc32/Makefile
===================================================================
--- toolchains-1.7.1/core/glibc/2.34-ppc32/Makefile	(nonexistent)
+++ toolchains-1.7.1/core/glibc/2.34-ppc32/Makefile	(revision 343)
@@ -0,0 +1,147 @@
+
+
+COMPONENT_TARGETS  = $(TOOLCHAIN_POWER8_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9_GLIBC)
+
+FLAVOURS = headers full
+
+include ../../../build-system/config.mk
+
+SOURCE_REQUIRES = sources/GNU/glibc
+
+ifeq ($(FLAVOUR),headers)
+REQUIRES  = core/linux/5.14.9
+endif
+
+ifeq ($(FLAVOUR),full)
+REQUIRES  = core/gcc/11.2.0^second
+endif
+
+# ======= __END_OF_REQUIRES__ =======
+
+tar_xz_archive  = $(SRC_PACKAGE_PATH)/GNU/glibc/glibc-2.34.tar.xz
+SRC_ARCHIVE     = $(tar_xz_archive)
+SRC_DIR         = $(TARGET_BUILD_DIR)/glibc-2.34
+src_dir_name    = glibc-2.34
+src_done        = $(TARGET_BUILD_DIR)/.source-done
+
+PATCHES         = PATCHES
+
+full_dir        = $(TARGET_BUILD_DIR)/build-full
+headers_dir     = $(TARGET_BUILD_DIR)/build-headers
+
+sysroot_dir     = $(TOOLCHAIN_PATH)/$(TARGET)/sys-root
+
+headers_target  = $(TARGET_BUILD_DIR)/.headers-installed
+full_target     = $(TARGET_BUILD_DIR)/.installed
+
+
+
+ifeq ($(FLAVOUR),headers)
+BUILD_TARGETS = $(headers_target)
+endif
+
+ifeq ($(FLAVOUR),full)
+BUILD_TARGETS = $(full_target)
+endif
+
+include ../../../build-system/core.mk
+
+
+env_sysroot     = install_root=$(sysroot_dir)
+
+
+CC           = $(CCACHE)$(TOOLCHAIN_PATH)/bin/$(TARGET)-gcc -m32
+CXX          = $(CCACHE)$(TOOLCHAIN_PATH)/bin/$(TARGET)-g++ -m32
+
+environment  = AS=$(TOOLCHAIN_PATH)/bin/$(TARGET)-as
+environment += LD=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ld
+environment += CC="$(CC)"
+environment += CXX="$(CXX)"
+environment += AR=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ar
+environment += RANLIB=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ranlib
+
+environment += PATH=$(TOOLCHAIN_PATH)/bin:$(PATH)
+
+environment += BUILD_CC="$(CCACHE)/usr/bin/gcc"
+
+LIBSUFFIX    =
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC))
+environment += CFLAGS="-g -O3 -mcpu=power8 -mlong-double-128"
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER9_GLIBC))
+environment += CFLAGS="-g -O3 -mcpu=power9 -mlong-double-128"
+endif
+
+LIBSUFFIX    = 32
+
+TARGET32 = $(shell echo $(TARGET) | sed 's/ppc64/ppc/')
+
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) $(TOOLCHAIN_POWER9_GLIBC)),)
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.2.0
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=3.2.0
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+
+extra_configure_switches  += libc_cv_slibdir=/lib$(LIBSUFFIX)
+extra_configure_switches  += libc_cv_rtlddir=/lib$(LIBSUFFIX)
+
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	@touch $@
+
+$(headers_target): $(src_done)
+	@mkdir -p $(headers_dir)
+	@cd $(headers_dir) && $(env_sysroot) $(environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET32)           \
+	  $(extra_configure_switches)
+	@cd $(headers_dir) && $(MAKE) -j1 install-headers \
+	                                  install-bootstrap-headers=yes $(env_sysroot)
+	@cd $(headers_dir) && $(environment) $(MAKE) -j1 csu/subdir_lib
+	# ======= install 'lib-names-32.h' =======
+	@mkdir -p $(sysroot_dir)/usr/include/gnu
+	@install --mode=0644 $(headers_dir)/gnu/lib-names-32.h $(sysroot_dir)/usr/include/gnu
+	# ========================================
+	@cd $(headers_dir) && $(environment) $(MAKE) -j1 csu/subdir_install $(env_sysroot)
+	@$(environment) $(CC) -nostdlib -nostartfiles -shared -x c /dev/null \
+	                      -o $(sysroot_dir)/usr/lib$(LIBSUFFIX)/libc.so
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
+
+$(full_target): $(src_done)
+	@mkdir -p $(full_dir)
+	@echo "slibdir=/lib$(LIBSUFFIX)" >> $(full_dir)/configparms
+	@echo "rtlddir=/lib$(LIBSUFFIX)" >> $(full_dir)/configparms
+	@cd $(full_dir) && $(env_sysroot) $(environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET32)           \
+	  $(extra_configure_switches)
+	@cd $(full_dir) && $(environment) $(MAKE) all
+	@cd $(full_dir) && $(environment) $(MAKE) -j1 install $(env_sysroot)
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
Index: toolchains-1.7.1/core/glibc/2.34-ppc32/PATCHES
===================================================================
--- toolchains-1.7.1/core/glibc/2.34-ppc32/PATCHES	(nonexistent)
+++ toolchains-1.7.1/core/glibc/2.34-ppc32/PATCHES	(revision 343)
@@ -0,0 +1,10 @@
+
+../../../sources/GNU/glibc/patches/glibc-2.34-CVE-2021-38604.patch     -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-i18n.patch               -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-locale-no-archive.patch  -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-malloc-hooks.patch       -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-en_US-no-am-pm.patch     -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-c-utf8-locale.patch      -p0
+
+../../../sources/GNU/glibc/patches/glibc-2.34-ppc64-interpreter.patch  -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-x86_64-interpreter.patch -p0
Index: toolchains-1.7.1/core/glibc/2.34-ppc32
===================================================================
--- toolchains-1.7.1/core/glibc/2.34-ppc32	(nonexistent)
+++ toolchains-1.7.1/core/glibc/2.34-ppc32	(revision 343)

Property changes on: toolchains-1.7.1/core/glibc/2.34-ppc32
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/glibc/2.34-x86_32/Makefile
===================================================================
--- toolchains-1.7.1/core/glibc/2.34-x86_32/Makefile	(nonexistent)
+++ toolchains-1.7.1/core/glibc/2.34-x86_32/Makefile	(revision 343)
@@ -0,0 +1,141 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_X86_64_GLIBC)
+
+FLAVOURS = headers full
+
+include ../../../build-system/config.mk
+
+SOURCE_REQUIRES = sources/GNU/glibc
+
+ifeq ($(FLAVOUR),headers)
+REQUIRES  = core/linux/5.14.9
+endif
+
+ifeq ($(FLAVOUR),full)
+REQUIRES  = core/gcc/11.2.0^second
+endif
+
+# ======= __END_OF_REQUIRES__ =======
+
+tar_xz_archive  = $(SRC_PACKAGE_PATH)/GNU/glibc/glibc-2.34.tar.xz
+SRC_ARCHIVE     = $(tar_xz_archive)
+SRC_DIR         = $(TARGET_BUILD_DIR)/glibc-2.34
+src_dir_name    = glibc-2.34
+src_done        = $(TARGET_BUILD_DIR)/.source-done
+
+PATCHES         = PATCHES
+
+full_dir        = $(TARGET_BUILD_DIR)/build-full
+headers_dir     = $(TARGET_BUILD_DIR)/build-headers
+
+sysroot_dir     = $(TOOLCHAIN_PATH)/$(TARGET)/sys-root
+
+headers_target  = $(TARGET_BUILD_DIR)/.headers-installed
+full_target     = $(TARGET_BUILD_DIR)/.installed
+
+
+
+ifeq ($(FLAVOUR),headers)
+BUILD_TARGETS = $(headers_target)
+endif
+
+ifeq ($(FLAVOUR),full)
+BUILD_TARGETS = $(full_target)
+endif
+
+include ../../../build-system/core.mk
+
+
+env_sysroot     = install_root=$(sysroot_dir)
+
+
+CC           = $(CCACHE)$(TOOLCHAIN_PATH)/bin/$(TARGET)-gcc -m32
+CXX          = $(CCACHE)$(TOOLCHAIN_PATH)/bin/$(TARGET)-g++ -m32
+
+environment  = AS=$(TOOLCHAIN_PATH)/bin/$(TARGET)-as
+environment += LD=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ld
+environment += CC="$(CC)"
+environment += CXX="$(CXX)"
+environment += AR=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ar
+environment += RANLIB=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ranlib
+
+environment += PATH=$(TOOLCHAIN_PATH)/bin:$(PATH)
+
+environment += BUILD_CC="$(CCACHE)/usr/bin/gcc"
+
+LIBSUFFIX    =
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
+environment += CFLAGS="-g -O3 -march=i686 -mtune=i686"
+LIBSUFFIX    = 32
+endif
+
+TARGET32 = $(shell echo $(TARGET) | sed 's/x86_64/i686/')
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
+extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches  += --with-headers=$(sysroot_dir)/usr/include
+ifeq ($(FLAVOUR),headers)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=2.6.36
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+ifeq ($(FLAVOUR),full)
+extra_configure_switches  += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches  += --enable-kernel=2.6.36
+extra_configure_switches  += --disable-profile
+extra_configure_switches  += --enable-bind-now
+extra_configure_switches  += --without-gd
+extra_configure_switches  += --without-cvs
+endif
+endif
+
+
+extra_configure_switches  += libc_cv_slibdir=/lib$(LIBSUFFIX)
+extra_configure_switches  += libc_cv_rtlddir=/lib$(LIBSUFFIX)
+
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	@touch $@
+
+$(headers_target): $(src_done)
+	@mkdir -p $(headers_dir)
+	@cd $(headers_dir) && $(env_sysroot) $(environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET32)           \
+	  $(extra_configure_switches)
+	@cd $(headers_dir) && $(MAKE) -j1 install-headers \
+	                                  install-bootstrap-headers=yes $(env_sysroot)
+	@cd $(headers_dir) && $(environment) $(MAKE) -j1 csu/subdir_lib
+	# ======= install 'lib-names-32.h' =======
+	@mkdir -p $(sysroot_dir)/usr/include/gnu
+	@install --mode=0644 $(headers_dir)/gnu/lib-names-32.h $(sysroot_dir)/usr/include/gnu
+	# ========================================
+	@cd $(headers_dir) && $(environment) $(MAKE) -j1 csu/subdir_install $(env_sysroot)
+	@$(environment) $(CC) -nostdlib -nostartfiles -shared -x c /dev/null \
+	                      -o $(sysroot_dir)/usr/lib$(LIBSUFFIX)/libc.so
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
+
+$(full_target): $(src_done)
+	@mkdir -p $(full_dir)
+	@echo "slibdir=/lib$(LIBSUFFIX)" >> $(full_dir)/configparms
+	@echo "rtlddir=/lib$(LIBSUFFIX)" >> $(full_dir)/configparms
+	@cd $(full_dir) && $(env_sysroot) $(environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET32)           \
+	  $(extra_configure_switches)
+	@cd $(full_dir) && $(environment) $(MAKE) all
+	@cd $(full_dir) && $(environment) $(MAKE) -j1 install $(env_sysroot)
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
Index: toolchains-1.7.1/core/glibc/2.34-x86_32/PATCHES
===================================================================
--- toolchains-1.7.1/core/glibc/2.34-x86_32/PATCHES	(nonexistent)
+++ toolchains-1.7.1/core/glibc/2.34-x86_32/PATCHES	(revision 343)
@@ -0,0 +1,10 @@
+
+../../../sources/GNU/glibc/patches/glibc-2.34-CVE-2021-38604.patch     -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-i18n.patch               -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-locale-no-archive.patch  -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-malloc-hooks.patch       -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-en_US-no-am-pm.patch     -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-c-utf8-locale.patch      -p0
+
+../../../sources/GNU/glibc/patches/glibc-2.34-ppc64-interpreter.patch  -p0
+../../../sources/GNU/glibc/patches/glibc-2.34-x86_64-interpreter.patch -p0
Index: toolchains-1.7.1/core/glibc/2.34-x86_32
===================================================================
--- toolchains-1.7.1/core/glibc/2.34-x86_32	(nonexistent)
+++ toolchains-1.7.1/core/glibc/2.34-x86_32	(revision 343)

Property changes on: toolchains-1.7.1/core/glibc/2.34-x86_32
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/linux/5.14.9/Makefile
===================================================================
--- toolchains-1.7.1/core/linux/5.14.9/Makefile	(nonexistent)
+++ toolchains-1.7.1/core/linux/5.14.9/Makefile	(revision 343)
@@ -0,0 +1,121 @@
+
+COMPONENT_TARGETS  = $(TOOLCHAIN_A1X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A2X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H3_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H5_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6ULL_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_JZ47XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_P5600_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_M1000_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_OMAP543X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_AM335X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK328X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S8XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A311X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK339X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8LE_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9LE_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_I586_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_I686_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_X86_64_GLIBC)
+
+
+include ../../../build-system/config.mk
+
+
+SOURCE_REQUIRES = sources/Linux/v5.x
+
+REQUIRES  = core/gcc/11.2.0^static
+
+# ======= __END_OF_REQUIRES__ =======
+
+tar_xz_archive  = $(SRC_PACKAGE_PATH)/Linux/v5.x/linux-5.14.9.tar.xz
+SRC_ARCHIVE     = $(tar_xz_archive)
+SRC_DIR         = $(TARGET_BUILD_DIR)/linux-5.14.9
+src_done        = $(TARGET_BUILD_DIR)/.source-done
+
+PATCHES = PATCHES
+
+sysroot_dir     = $(TOOLCHAIN_PATH)/$(TARGET)/sys-root
+
+
+headers_target  = $(TARGET_BUILD_DIR)/.headers-installed
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_A1X_GLIBC) $(TOOLCHAIN_A2X_GLIBC) \
+                             $(TOOLCHAIN_H3_GLIBC) $(TOOLCHAIN_IMX6_GLIBC)\
+                             $(TOOLCHAIN_IMX6ULL_GLIBC) $(TOOLCHAIN_OMAP543X_GLIBC)\
+                             $(TOOLCHAIN_AM335X_GLIBC) $(TOOLCHAIN_RK328X_GLIBC) \
+                             $(TOOLCHAIN_S8XX_GLIBC) $(TOOLCHAIN_A9XX_GLIBC) \
+                             $(TOOLCHAIN_A33XX_GLIBC)),)
+arch = arm
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_H5_GLIBC) \
+                             $(TOOLCHAIN_S9XX_GLIBC) $(TOOLCHAIN_A311X_GLIBC) \
+                             $(TOOLCHAIN_RK33XX_GLIBC) $(TOOLCHAIN_RK339X_GLIBC) \
+                             $(TOOLCHAIN_M1000_GLIBC)),)
+arch = arm64
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_JZ47XX_GLIBC) $(TOOLCHAIN_P5600_GLIBC)),)
+arch = mips
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) $(TOOLCHAIN_POWER9_GLIBC) \
+                             $(TOOLCHAIN_POWER8LE_GLIBC) $(TOOLCHAIN_POWER9LE_GLIBC)),)
+arch = powerpc
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_RISCV64_GLIBC)),)
+arch = riscv
+endif
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC) \
+                             $(TOOLCHAIN_I686_GLIBC)   \
+                             $(TOOLCHAIN_I586_GLIBC)),)
+arch = x86
+endif
+
+
+BUILD_TARGETS = $(headers_target)
+
+
+include ../../../build-system/core.mk
+
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	@touch $@
+
+$(SRC_DIR)/include/generated/uapi/linux/version.h: $(src_done)
+	@touch $(SRC_DIR)/.config
+	@$(MAKE) -C $(SRC_DIR) include/generated/uapi/linux/version.h
+
+$(sysroot_dir)/usr/include/linux/autoconf.h: $(SRC_DIR)/include/generated/uapi/linux/version.h
+	@$(MAKE) -C $(SRC_DIR) headers_install \
+	            ARCH=$(arch) CROSS_COMPILE=$(TOOLCHAIN_PATH)/bin/$(TARGET)- \
+	            INSTALL_HDR_PATH=$(sysroot_dir)/usr
+	@touch $@
+
+$(headers_target): $(sysroot_dir)/usr/include/linux/autoconf.h
+	@( cd $(sysroot_dir)/usr/include ; \
+	   for file in `find . -name *.install*` ; do \
+	     rm -f $$file ; \
+	   done ; \
+	 )
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR)):headers" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
Index: toolchains-1.7.1/core/linux/5.14.9/PATCHES
===================================================================
Index: toolchains-1.7.1/core/linux/5.14.9
===================================================================
--- toolchains-1.7.1/core/linux/5.14.9	(nonexistent)
+++ toolchains-1.7.1/core/linux/5.14.9	(revision 343)

Property changes on: toolchains-1.7.1/core/linux/5.14.9
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/linux/Baikal/M1000/m1-5.4.92-5.1.76/Makefile
===================================================================
--- toolchains-1.7.1/core/linux/Baikal/M1000/m1-5.4.92-5.1.76/Makefile	(nonexistent)
+++ toolchains-1.7.1/core/linux/Baikal/M1000/m1-5.4.92-5.1.76/Makefile	(revision 343)
@@ -0,0 +1,60 @@
+
+
+COMPONENT_TARGETS  = $(TOOLCHAIN_M1000_GLIBC)
+
+
+include ../../../../../build-system/config.mk
+
+
+SOURCE_REQUIRES = sources/Linux/Baikal/M1000
+
+
+REQUIRES  = core/gcc/11.2.0^static
+
+# ======= __END_OF_REQUIRES__ =======
+
+tar_xz_archive  = $(SRC_PACKAGE_PATH)/Linux/Baikal/M1000/linux-m1-5.4.92-5.1.76.tar.xz
+SRC_ARCHIVE     = $(tar_xz_archive)
+SRC_DIR         = $(TARGET_BUILD_DIR)/linux-m1-5.4.92-5.1.76
+src_done        = $(TARGET_BUILD_DIR)/.source-done
+
+sysroot_dir     = $(TOOLCHAIN_PATH)/$(TARGET)/sys-root
+
+headers_target  = $(TARGET_BUILD_DIR)/.headers-installed
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_M1000_GLIBC)),)
+arch = arm64
+endif
+
+
+BUILD_TARGETS = $(headers_target)
+
+
+include ../../../../../build-system/core.mk
+
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	@touch $@
+
+$(SRC_DIR)/include/generated/uapi/linux/version.h: $(src_done)
+	@touch $(SRC_DIR)/.config
+	@$(MAKE) -C $(SRC_DIR) \
+	  ARCH=$(arch) CROSS_COMPILE=$(TOOLCHAIN_PATH)/bin/$(TARGET)- \
+	  include/generated/uapi/linux/version.h
+
+$(sysroot_dir)/usr/include/linux/autoconf.h: $(SRC_DIR)/include/generated/uapi/linux/version.h
+	@$(MAKE) -C $(SRC_DIR) headers_install                        \
+	  ARCH=$(arch) CROSS_COMPILE=$(TOOLCHAIN_PATH)/bin/$(TARGET)- \
+	  INSTALL_HDR_PATH=$(sysroot_dir)/usr
+	@touch $@
+
+$(headers_target): $(sysroot_dir)/usr/include/linux/autoconf.h
+	@( cd $(sysroot_dir)/usr/include ; \
+	   for file in `find . -name *.install*` ; do \
+	     rm -f $$file ; \
+	   done ; \
+	 )
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR)):headers" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
Index: toolchains-1.7.1/core/linux/Baikal/M1000/m1-5.4.92-5.1.76
===================================================================
--- toolchains-1.7.1/core/linux/Baikal/M1000/m1-5.4.92-5.1.76	(nonexistent)
+++ toolchains-1.7.1/core/linux/Baikal/M1000/m1-5.4.92-5.1.76	(revision 343)

Property changes on: toolchains-1.7.1/core/linux/Baikal/M1000/m1-5.4.92-5.1.76
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/linux/Baikal/T1000/t1-5.4.105-5.6.207/Makefile
===================================================================
--- toolchains-1.7.1/core/linux/Baikal/T1000/t1-5.4.105-5.6.207/Makefile	(nonexistent)
+++ toolchains-1.7.1/core/linux/Baikal/T1000/t1-5.4.105-5.6.207/Makefile	(revision 343)
@@ -0,0 +1,60 @@
+
+
+COMPONENT_TARGETS  = $(TOOLCHAIN_P5600_GLIBC)
+
+
+include ../../../../../build-system/config.mk
+
+
+SOURCE_REQUIRES = sources/Linux/Baikal/T1000
+
+
+REQUIRES  = core/gcc/11.2.0^static
+
+# ======= __END_OF_REQUIRES__ =======
+
+tar_xz_archive  = $(SRC_PACKAGE_PATH)/Linux/Baikal/T1000/linux-t1-5.4.105-5.6.207.tar.xz
+SRC_ARCHIVE     = $(tar_xz_archive)
+SRC_DIR         = $(TARGET_BUILD_DIR)/linux-t1-5.4.105-5.6.207
+src_done        = $(TARGET_BUILD_DIR)/.source-done
+
+sysroot_dir     = $(TOOLCHAIN_PATH)/$(TARGET)/sys-root
+
+headers_target  = $(TARGET_BUILD_DIR)/.headers-installed
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_P5600_GLIBC)),)
+arch = mips
+endif
+
+
+BUILD_TARGETS = $(headers_target)
+
+
+include ../../../../../build-system/core.mk
+
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	@touch $@
+
+$(SRC_DIR)/include/generated/uapi/linux/version.h: $(src_done)
+	@touch $(SRC_DIR)/.config
+	@$(MAKE) -C $(SRC_DIR) \
+	  ARCH=$(arch) CROSS_COMPILE=$(TOOLCHAIN_PATH)/bin/$(TARGET)- \
+	  include/generated/uapi/linux/version.h
+
+$(sysroot_dir)/usr/include/linux/autoconf.h: $(SRC_DIR)/include/generated/uapi/linux/version.h
+	@$(MAKE) -C $(SRC_DIR) headers_install                        \
+	  ARCH=$(arch) CROSS_COMPILE=$(TOOLCHAIN_PATH)/bin/$(TARGET)- \
+	  INSTALL_HDR_PATH=$(sysroot_dir)/usr
+	@touch $@
+
+$(headers_target): $(sysroot_dir)/usr/include/linux/autoconf.h
+	@( cd $(sysroot_dir)/usr/include ; \
+	   for file in `find . -name *.install*` ; do \
+	     rm -f $$file ; \
+	   done ; \
+	 )
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR)):headers" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
Index: toolchains-1.7.1/core/linux/Baikal/T1000/t1-5.4.105-5.6.207
===================================================================
--- toolchains-1.7.1/core/linux/Baikal/T1000/t1-5.4.105-5.6.207	(nonexistent)
+++ toolchains-1.7.1/core/linux/Baikal/T1000/t1-5.4.105-5.6.207	(revision 343)

Property changes on: toolchains-1.7.1/core/linux/Baikal/T1000/t1-5.4.105-5.6.207
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/linux
===================================================================
--- toolchains-1.7.1/core/linux	(nonexistent)
+++ toolchains-1.7.1/core/linux	(revision 343)

Property changes on: toolchains-1.7.1/core/linux
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,33 ##
+
+# Target build dirs
+.host/
+.a1x-newlib/
+.at91sam7s-newlib/
+.dm644x-newlib/
+.a1x-eglibc/
+.dm644x-eglibc/
+.omap35x-eglibc/
+.omap543x-eglibc/
+.bcm74x-eglibc/
+.x86_64-eglibc/
+
+# Hidden files (each file)
+.makefile
+
+# Tarballs
+*.gz
+*.bz2
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/newlib/4.1.0/Makefile
===================================================================
--- toolchains-1.7.1/core/newlib/4.1.0/Makefile	(nonexistent)
+++ toolchains-1.7.1/core/newlib/4.1.0/Makefile	(revision 343)
@@ -0,0 +1,433 @@
+
+
+COMPONENT_TARGETS  = $(TOOLCHAIN_ARM32_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_H5_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_M1000_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_AT91SAM7S_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_NEWLIB)
+
+FLAVOURS = nano full
+
+
+include ../../../build-system/config.mk
+
+
+SOURCE_REQUIRES = sources/newlib
+
+ifeq ($(FLAVOUR),nano)
+REQUIRES  = core/gcc/11.2.0^static
+endif
+ifeq ($(FLAVOUR),full)
+REQUIRES  = core/newlib/4.1.0^nano
+endif
+
+# ======= __END_OF_REQUIRES__ =======
+
+tar_gz_archive     = $(SRC_PACKAGE_PATH)/newlib/newlib-4.1.0.tar.gz
+SRC_ARCHIVE        = $(tar_gz_archive)
+SRC_DIR            = $(TARGET_BUILD_DIR)/newlib-4.1.0
+src_dir_name       = newlib-4.1.0
+src_done           = $(TARGET_BUILD_DIR)/.source-done
+
+PATCHES            = PATCHES
+
+build_dir          = $(TARGET_BUILD_DIR)/newlib
+build_gloss_dir    = $(TARGET_BUILD_DIR)/libgloss
+build_nano_dir     = $(TARGET_BUILD_DIR)/nano
+
+install_dir        = $(TOOLCHAIN_PATH)/$(TARGET)
+
+build_nano_target  = $(TARGET_BUILD_DIR)/.nano-built
+nano_target        = $(TARGET_BUILD_DIR)/.nano-installed
+
+build_target       = $(TARGET_BUILD_DIR)/.built
+full_target        = $(TARGET_BUILD_DIR)/.installed
+
+
+
+ifeq ($(FLAVOUR),nano)
+BUILD_TARGETS  = $(build_nano_target)
+BUILD_TARGETS += $(nano_target)
+endif
+
+ifeq ($(FLAVOUR),full)
+BUILD_TARGETS  = $(build_target)
+BUILD_TARGETS += $(full_target)
+endif
+
+include ../../../build-system/core.mk
+
+
+environment  = AS="$(TOOLCHAIN_PATH)/bin/$(TARGET)-as"
+environment += LD="$(TOOLCHAIN_PATH)/bin/$(TARGET)-ld"
+environment += CC="$(CCACHE)$(TOOLCHAIN_PATH)/bin/$(TARGET)-gcc"
+environment += AR="$(TOOLCHAIN_PATH)/bin/$(TARGET)-ar"
+environment += RANLIB="$(TOOLCHAIN_PATH)/bin/$(TARGET)-ranlib"
+
+environment += PATH_FIG2DEV="/usr/bin:/usr/X11R6/bin:/usr/share/texmf/bin"
+environment += PATH="$(TOOLCHAIN_PATH)/bin:$(PATH):$(PATH_FIG2DEV)"
+#                                                   =============
+# need for fig2dev and documentation (see: ../.config).
+
+environment += BUILD_CC="$(CCACHE)/usr/bin/gcc"
+environment += TARGET_CFLAGS="-g -O2 -ffunction-sections -fdata-sections"
+environment += CPPFLAGS="-I$(TOOLCHAIN_PATH)/$(TARGET)/include"
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_ARM32_NEWLIB))
+extra_configure_switches  = --enable-multilib
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-nls
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-newlib-supplied-sycalls
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --enable-newlib-io-long-long
+extra_configure_switches += --enable-newlib-register-fini
+extra_configure_switches += --enable-newlib-io-c99-formats
+extra_configure_switches += --enable-newlib-io-pos-args
+extra_configure_switches += --enable-newlib-multithread
+endif
+ifeq ($(FLAVOUR),nano)
+extra_configure_switches += --enable-newlib-reent-small
+extra_configure_switches += --disable-newlib-fvwrite-in-streamio
+extra_configure_switches += --disable-newlib-fseek-optimization
+extra_configure_switches += --disable-newlib-wide-orient
+extra_configure_switches += --enable-newlib-nano-malloc
+extra_configure_switches += --disable-newlib-unbuf-stream-opt
+extra_configure_switches += --enable-lite-exit
+extra_configure_switches += --enable-newlib-global-atexit
+extra_configure_switches += --enable-newlib-nano-formatted-io
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A33XX_NEWLIB))
+extra_configure_switches  = --enable-multilib
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-nls
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-newlib-supplied-sycalls
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --enable-newlib-io-long-long
+extra_configure_switches += --enable-newlib-register-fini
+extra_configure_switches += --enable-newlib-io-c99-formats
+extra_configure_switches += --enable-newlib-io-pos-args
+extra_configure_switches += --enable-newlib-multithread
+endif
+ifeq ($(FLAVOUR),nano)
+extra_configure_switches += --enable-newlib-reent-small
+extra_configure_switches += --disable-newlib-fvwrite-in-streamio
+extra_configure_switches += --disable-newlib-fseek-optimization
+extra_configure_switches += --disable-newlib-wide-orient
+extra_configure_switches += --enable-newlib-nano-malloc
+extra_configure_switches += --disable-newlib-unbuf-stream-opt
+extra_configure_switches += --enable-lite-exit
+extra_configure_switches += --enable-newlib-global-atexit
+extra_configure_switches += --enable-newlib-nano-formatted-io
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A9XX_NEWLIB))
+extra_configure_switches  = --enable-multilib
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-nls
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-newlib-supplied-sycalls
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --enable-newlib-io-long-long
+extra_configure_switches += --enable-newlib-register-fini
+extra_configure_switches += --enable-newlib-io-c99-formats
+extra_configure_switches += --enable-newlib-io-pos-args
+extra_configure_switches += --enable-newlib-multithread
+endif
+ifeq ($(FLAVOUR),nano)
+extra_configure_switches += --enable-newlib-reent-small
+extra_configure_switches += --disable-newlib-fvwrite-in-streamio
+extra_configure_switches += --disable-newlib-fseek-optimization
+extra_configure_switches += --disable-newlib-wide-orient
+extra_configure_switches += --enable-newlib-nano-malloc
+extra_configure_switches += --disable-newlib-unbuf-stream-opt
+extra_configure_switches += --enable-lite-exit
+extra_configure_switches += --enable-newlib-global-atexit
+extra_configure_switches += --enable-newlib-nano-formatted-io
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H5_NEWLIB))
+extra_configure_switches  = --enable-multilib
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-nls
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-newlib-supplied-sycalls
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --enable-newlib-io-long-long
+extra_configure_switches += --enable-newlib-register-fini
+extra_configure_switches += --enable-newlib-io-c99-formats
+extra_configure_switches += --enable-newlib-io-pos-args
+extra_configure_switches += --enable-newlib-multithread
+endif
+ifeq ($(FLAVOUR),nano)
+extra_configure_switches += --enable-newlib-reent-small
+extra_configure_switches += --disable-newlib-fvwrite-in-streamio
+extra_configure_switches += --disable-newlib-fseek-optimization
+extra_configure_switches += --disable-newlib-wide-orient
+extra_configure_switches += --enable-newlib-nano-malloc
+extra_configure_switches += --disable-newlib-unbuf-stream-opt
+extra_configure_switches += --enable-lite-exit
+extra_configure_switches += --enable-newlib-global-atexit
+extra_configure_switches += --enable-newlib-nano-formatted-io
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S9XX_NEWLIB))
+extra_configure_switches  = --enable-multilib
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-nls
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-newlib-supplied-sycalls
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --enable-newlib-io-long-long
+extra_configure_switches += --enable-newlib-register-fini
+extra_configure_switches += --enable-newlib-io-c99-formats
+extra_configure_switches += --enable-newlib-io-pos-args
+extra_configure_switches += --enable-newlib-multithread
+endif
+ifeq ($(FLAVOUR),nano)
+extra_configure_switches += --enable-newlib-reent-small
+extra_configure_switches += --disable-newlib-fvwrite-in-streamio
+extra_configure_switches += --disable-newlib-fseek-optimization
+extra_configure_switches += --disable-newlib-wide-orient
+extra_configure_switches += --enable-newlib-nano-malloc
+extra_configure_switches += --disable-newlib-unbuf-stream-opt
+extra_configure_switches += --enable-lite-exit
+extra_configure_switches += --enable-newlib-global-atexit
+extra_configure_switches += --enable-newlib-nano-formatted-io
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK33XX_NEWLIB))
+extra_configure_switches  = --enable-multilib
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-nls
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-newlib-supplied-sycalls
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --enable-newlib-io-long-long
+extra_configure_switches += --enable-newlib-register-fini
+extra_configure_switches += --enable-newlib-io-c99-formats
+extra_configure_switches += --enable-newlib-io-pos-args
+extra_configure_switches += --enable-newlib-multithread
+endif
+ifeq ($(FLAVOUR),nano)
+extra_configure_switches += --enable-newlib-reent-small
+extra_configure_switches += --disable-newlib-fvwrite-in-streamio
+extra_configure_switches += --disable-newlib-fseek-optimization
+extra_configure_switches += --disable-newlib-wide-orient
+extra_configure_switches += --enable-newlib-nano-malloc
+extra_configure_switches += --disable-newlib-unbuf-stream-opt
+extra_configure_switches += --enable-lite-exit
+extra_configure_switches += --enable-newlib-global-atexit
+extra_configure_switches += --enable-newlib-nano-formatted-io
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_M1000_NEWLIB))
+extra_configure_switches  = --enable-multilib
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-nls
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-newlib-supplied-sycalls
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --enable-newlib-io-long-long
+extra_configure_switches += --enable-newlib-register-fini
+extra_configure_switches += --enable-newlib-io-c99-formats
+extra_configure_switches += --enable-newlib-io-pos-args
+extra_configure_switches += --enable-newlib-multithread
+endif
+ifeq ($(FLAVOUR),nano)
+extra_configure_switches += --enable-newlib-reent-small
+extra_configure_switches += --disable-newlib-fvwrite-in-streamio
+extra_configure_switches += --disable-newlib-fseek-optimization
+extra_configure_switches += --disable-newlib-wide-orient
+extra_configure_switches += --enable-newlib-nano-malloc
+extra_configure_switches += --disable-newlib-unbuf-stream-opt
+extra_configure_switches += --enable-lite-exit
+extra_configure_switches += --enable-newlib-global-atexit
+extra_configure_switches += --enable-newlib-nano-formatted-io
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_AT91SAM7S_NEWLIB))
+extra_configure_switches  = --enable-interwork
+extra_configure_switches  = --enable-multilib
+extra_configure_switches += --enable-fpu=no
+extra_configure_switches += --enable-nofmult=no
+extra_configure_switches += --enable-26bit=no
+extra_configure_switches += --enable-underscore=no
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-nls
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-newlib-supplied-sycalls
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --enable-newlib-io-long-long
+extra_configure_switches += --enable-newlib-register-fini
+# also NEWLIB allows:
+extra_configure_switches += --enable-newlib-io-c99-formats
+extra_configure_switches += --enable-newlib-io-pos-args
+extra_configure_switches += --enable-newlib-multithread
+endif
+ifeq ($(FLAVOUR),nano)
+extra_configure_switches += --enable-newlib-reent-small
+extra_configure_switches += --disable-newlib-fvwrite-in-streamio
+extra_configure_switches += --disable-newlib-fseek-optimization
+extra_configure_switches += --disable-newlib-wide-orient
+extra_configure_switches += --enable-newlib-nano-malloc
+extra_configure_switches += --disable-newlib-unbuf-stream-opt
+extra_configure_switches += --enable-lite-exit
+extra_configure_switches += --enable-newlib-global-atexit
+extra_configure_switches += --enable-newlib-nano-formatted-io
+endif
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RISCV64_NEWLIB))
+extra_configure_switches  = --enable-multilib
+extra_configure_switches += --with-gnu-as
+extra_configure_switches += --with-gnu-ld
+extra_configure_switches += --disable-nls
+extra_configure_switches += --disable-shared
+extra_configure_switches += --disable-newlib-supplied-sycalls
+ifeq ($(FLAVOUR),full)
+extra_configure_switches += --enable-newlib-io-long-long
+extra_configure_switches += --enable-newlib-register-fini
+extra_configure_switches += --enable-newlib-io-c99-formats
+extra_configure_switches += --enable-newlib-io-pos-args
+extra_configure_switches += --enable-newlib-multithread
+endif
+ifeq ($(FLAVOUR),nano)
+extra_configure_switches += --enable-newlib-reent-small
+extra_configure_switches += --disable-newlib-fvwrite-in-streamio
+extra_configure_switches += --disable-newlib-fseek-optimization
+extra_configure_switches += --disable-newlib-wide-orient
+extra_configure_switches += --enable-newlib-nano-malloc
+extra_configure_switches += --disable-newlib-unbuf-stream-opt
+extra_configure_switches += --enable-lite-exit
+extra_configure_switches += --enable-newlib-global-atexit
+extra_configure_switches += --enable-newlib-nano-formatted-io
+endif
+endif
+
+
+ENABLE_STRIP_DEBUG_INFO = no
+
+ENABLE_LIBGLOSS_SUPPORT = yes
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_AT91SAM7S_NEWLIB)),)
+ENABLE_LIBGLOSS_SUPPORT = no
+endif
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	@( cd $(SRC_DIR)/libgloss/config ; \
+	   sed -i '/^INCLUDES.*=/ s,$$, -I$$(prefix)/include -I$$(prefix)/$$(target_alias)/sys-include -I$$(prefix)/$$(target_alias)/include,' default.mh ; \
+	 )
+	@( cd $(SRC_DIR)/newlib/libc/sys/arm ; \
+	   sed -i '/^INCLUDES.*=/ s,$$, -I../../../targ-include,' Makefile.am Makefile.in ; \
+	 )
+ifeq ($(ENABLE_LIBGLOSS_SUPPORT),yes)
+	@( cd $(SRC_DIR)/libgloss/arm ; \
+	   sed -i '/^INCLUDES.*=/ s,$$, -I$$(srcdir)/../../newlib/libc/machine/arm,' Makefile.in ; \
+	 )
+endif
+	@touch $@
+
+$(build_nano_target): $(src_done)
+	@mkdir -p $(build_nano_dir)
+	@cd $(build_nano_dir) && $(environment) ../$(src_dir_name)/newlib/configure \
+	  --prefix=$(TOOLCHAIN_PATH)       \
+	  --build=$(BUILD)                 \
+	  --host=$(TARGET)                 \
+	  --target=$(TARGET)               \
+	  --infodir=$(TOOLCHAIN_PATH)/share/info \
+	  --mandir=$(TOOLCHAIN_PATH)/share/man   \
+	  --srcdir=../$(src_dir_name)/newlib \
+	  $(extra_configure_switches)
+	@$(environment) $(MAKE) -C $(build_nano_dir) all
+	@touch $@
+
+$(build_target): $(src_done)
+	@mkdir -p $(build_dir)
+	@cd $(build_dir) && $(environment) ../$(src_dir_name)/newlib/configure \
+	  --prefix=$(TOOLCHAIN_PATH)       \
+	  --build=$(BUILD)                 \
+	  --host=$(TARGET)                 \
+	  --target=$(TARGET)               \
+	  --infodir=$(TOOLCHAIN_PATH)/share/info \
+	  --mandir=$(TOOLCHAIN_PATH)/share/man   \
+	  --srcdir=../$(src_dir_name)/newlib \
+	  $(extra_configure_switches)
+	@$(environment) $(MAKE) -C $(build_dir) all
+ifeq ($(ENABLE_LIBGLOSS_SUPPORT),yes)
+	@mkdir -p $(build_gloss_dir)
+	@cd $(build_gloss_dir) && $(environment) ../$(src_dir_name)/libgloss/configure \
+	  --prefix=$(TOOLCHAIN_PATH)       \
+	  --build=$(BUILD)                 \
+	  --host=$(TARGET)                 \
+	  --target=$(TARGET)               \
+	  --infodir=$(TOOLCHAIN_PATH)/share/info \
+	  --mandir=$(TOOLCHAIN_PATH)/share/man   \
+	  --srcdir=../$(src_dir_name)/libgloss \
+	  $(extra_configure_switches)
+	@$(environment) $(MAKE) -C $(build_gloss_dir) all info
+endif
+	@touch $@
+
+$(nano_target): $(build_nano_target)
+	@mkdir -p $(install_dir)
+	@$(environment) $(MAKE) -C $(build_nano_dir) -j1 install
+	@mkdir -p $(install_dir)/include/newlib-nano
+	@install -m644 -t $(install_dir)/include/newlib-nano $(install_dir)/include/newlib.h
+	@find $(install_dir)/lib -regex ".*/lib\(c\|g\|m\|rdimon\)\.a" -exec rename .a _nano.a '{}' \;
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
+
+$(full_target): $(build_target)
+	@mkdir -p $(install_dir)
+	@$(environment) $(MAKE) -C $(build_dir) -j1 install
+ifeq ($(ENABLE_LIBGLOSS_SUPPORT),yes)
+	@$(environment) $(MAKE) -C $(build_gloss_dir) -j1 install
+endif
+ifeq ($(ENABLE_STRIP_DEBUG_INFO),yes)
+	@find $(install_dir)/lib \( -name "*.a" -or -name "*.o" \)   \
+	      -exec $(TOOLCHAIN_PATH)/bin/$(TARGET)-objcopy          \
+	      -R .comment -R .note -R .debug_info -R .debug_aranges  \
+	      -R .debug_pubnames -R .debug_pubtypes -R .debug_abbrev \
+	      -R .debug_line -R .debug_str -R .debug_ranges -R .debug_loc '{}' \;
+endif
+	@$(environment) $(MAKE) -C $(build_dir) pdf
+ifeq ($(ENABLE_LIBGLOSS_SUPPORT),yes)
+	@$(environment) $(MAKE) -C $(build_gloss_dir) pdf
+endif
+	# ======= Install Documentation =======
+ifeq ($(ENABLE_LIBGLOSS_SUPPORT),yes)
+	@$(environment) $(MAKE) -C $(build_gloss_dir)/doc -j1 install-info
+endif
+	@mkdir -p $(TOOLCHAIN_PATH)/share/doc/newlib
+	@cp $(build_dir)/libc/libc.pdf $(TOOLCHAIN_PATH)/share/doc/newlib
+	@cp $(build_dir)/libm/libm.pdf $(TOOLCHAIN_PATH)/share/doc/newlib
+ifeq ($(ENABLE_LIBGLOSS_SUPPORT),yes)
+	@cp $(build_gloss_dir)/doc/porting.pdf $(TOOLCHAIN_PATH)/share/doc/newlib
+endif
+	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
+	@touch $@
Index: toolchains-1.7.1/core/newlib/4.1.0/PATCHES
===================================================================
--- toolchains-1.7.1/core/newlib/4.1.0/PATCHES	(nonexistent)
+++ toolchains-1.7.1/core/newlib/4.1.0/PATCHES	(revision 343)
@@ -0,0 +1,2 @@
+
+../../../sources/newlib/patches/newlib-4.1.0-riscv.patch  -p0
Index: toolchains-1.7.1/core/newlib/4.1.0
===================================================================
--- toolchains-1.7.1/core/newlib/4.1.0	(nonexistent)
+++ toolchains-1.7.1/core/newlib/4.1.0	(revision 343)

Property changes on: toolchains-1.7.1/core/newlib/4.1.0
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/core/newlib
===================================================================
--- toolchains-1.7.1/core/newlib	(nonexistent)
+++ toolchains-1.7.1/core/newlib	(revision 343)

Property changes on: toolchains-1.7.1/core/newlib
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,33 ##
+
+# Target build dirs
+.host/
+.a1x-newlib/
+.at91sam7s-newlib/
+.dm644x-newlib/
+.a1x-eglibc/
+.dm644x-eglibc/
+.omap35x-eglibc/
+.omap543x-eglibc/
+.bcm74x-eglibc/
+.x86_64-eglibc/
+
+# Hidden files (each file)
+.makefile
+
+# Tarballs
+*.gz
+*.bz2
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: toolchains-1.7.1/core
===================================================================
--- toolchains-1.7.1/core	(nonexistent)
+++ toolchains-1.7.1/core	(revision 343)

Property changes on: toolchains-1.7.1/core
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,33 ##
+
+# Target build dirs
+.host/
+.a1x-newlib/
+.at91sam7s-newlib/
+.dm644x-newlib/
+.a1x-eglibc/
+.dm644x-eglibc/
+.omap35x-eglibc/
+.omap543x-eglibc/
+.bcm74x-eglibc/
+.x86_64-eglibc/
+
+# Hidden files (each file)
+.makefile
+
+# Tarballs
+*.gz
+*.bz2
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/.config
===================================================================
--- toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/.config	(nonexistent)
+++ toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-a1x-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-A1X-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/build.sh
===================================================================
--- toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/build.sh	(revision 343)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7-a -mtune=cortex-a8"
+
+FPU_FLAGS=" -mfloat-abi=hard -mfpu=neon -ftree-vectorize -fomit-frame-pointer -ffast-math"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/clean.sh
===================================================================
--- toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/main.c
===================================================================
--- toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/main.c	(nonexistent)
+++ toolchains-1.7.1/products/A1X-glibc/1.7.1/A1X-TEST-neon/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/A1X-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/A1X-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/A1X-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_A1X_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/A1X-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/A1X-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/A1X-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/A1X-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/.config
===================================================================
--- toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/.config	(nonexistent)
+++ toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-a2x-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-A2X-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/build.sh
===================================================================
--- toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/build.sh	(revision 343)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7ve -mtune=cortex-a7"
+
+FPU_FLAGS=" -mfloat-abi=hard -mfpu=neon-vfpv4 -ftree-vectorize -fomit-frame-pointer -ffast-math"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/clean.sh
===================================================================
--- toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/main.c
===================================================================
--- toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/main.c	(nonexistent)
+++ toolchains-1.7.1/products/A2X-glibc/1.7.1/A2X-TEST-vfp/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/A2X-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/A2X-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/A2X-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_A2X_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/A2X-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/A2X-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/A2X-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/A2X-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/.config
===================================================================
--- toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-a311x-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-A311X-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a73.cortex-a53 -mabi=lp64"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/A311X-glibc/1.7.1/A311X-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/A311X-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/A311X-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/A311X-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_A311X_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/A311X-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/A311X-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/A311X-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/A311X-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/.config
===================================================================
--- toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=armv8l-a33xx-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/armv8l-A33XX-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/build.sh	(revision 343)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv8-a"
+
+FPU_FLAGS=" -mfloat-abi=hard -mfpu=neon-fp-armv8 -ftree-vectorize -fomit-frame-pointer -ffast-math"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-glibc/1.7.1/A33XX-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/A33XX-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/A33XX-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_A33XX_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/A33XX-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/A33XX-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/A33XX-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/.config
===================================================================
--- toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-a33xx-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-A33XX-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/build.sh	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+DEBUG_FLAGS="-gdwarf-2"
+ARCH_FLAGS="-mthumb -march=armv6-m -mcpu=cortex-m0"
+#NO_STD_FLAGS=" -nostdlib -nostartfiles"
+
+$TARGET-gcc -g $DEBUG_FLAGS $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+
+$TARGET-gcc ${NO_STD_FLAGS} $ARCH_FLAGS $FPU_FLAGS $LDFLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-newlib/1.7.1/A33XX-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/A33XX-newlib/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/A33XX-newlib/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-newlib/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,34 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_A33XX_NEWLIB)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/A33XX-newlib/1.7.1
===================================================================
--- toolchains-1.7.1/products/A33XX-newlib/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/A33XX-newlib/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/A33XX-newlib/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/.config
===================================================================
--- toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=armv8l-a9xx-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/armv8l-A9XX-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/build.sh	(revision 343)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv8-a"
+
+FPU_FLAGS=" -mfloat-abi=hard -mfpu=neon-fp-armv8 -ftree-vectorize -fomit-frame-pointer -ffast-math"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-glibc/1.7.1/A9XX-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/A9XX-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/A9XX-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_A9XX_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/A9XX-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/A9XX-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/A9XX-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/.config
===================================================================
--- toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-a9xx-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-A9XX-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/build.sh	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+DEBUG_FLAGS="-gdwarf-2"
+ARCH_FLAGS="-march=armv7-m -mcpu=cortex-m3 -mthumb"
+#NO_STD_FLAGS=" -nostdlib -nostartfiles"
+
+$TARGET-gcc -g $DEBUG_FLAGS $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+
+$TARGET-gcc ${NO_STD_FLAGS} $ARCH_FLAGS $FPU_FLAGS $LDFLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/clean.sh	(revision 343)
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.gdb
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   double d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.0;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/.config
===================================================================
--- toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/.config	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-a9xx-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-A9XX-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/build.sh
===================================================================
--- toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/build.sh	(revision 343)
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+DEBUG_FLAGS="-gdwarf-2"
+ARCH_FLAGS="-march=armv7-m -mcpu=cortex-m3 -mthumb"
+FPU_FLAGS=" -mfpu=fpv4-sp-d16 -mfloat-abi=hard"
+#NO_STD_FLAGS=" -nostdlib -nostartfiles"
+
+$TARGET-gcc -g $DEBUG_FLAGS -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS  -c -o main.o main.c
+
+$TARGET-gcc ${NO_STD_FLAGS} $ARCH_FLAGS $FPU_FLAGS $LDFLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/clean.sh
===================================================================
--- toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/clean.sh	(revision 343)
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.gdb
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/main.c
===================================================================
--- toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/main.c	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-newlib/1.7.1/A9XX-TEST-fpv4/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   double d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.0;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/A9XX-newlib/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/A9XX-newlib/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-newlib/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,34 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_A9XX_NEWLIB)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target): $(build_requires)
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/A9XX-newlib/1.7.1
===================================================================
--- toolchains-1.7.1/products/A9XX-newlib/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/A9XX-newlib/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/A9XX-newlib/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/.config
===================================================================
--- toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/.config	(nonexistent)
+++ toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-am335x-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-AM335X-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/build.sh
===================================================================
--- toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/build.sh	(revision 343)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7-a -mtune=cortex-a8"
+
+FPU_FLAGS=" -mfloat-abi=hard -mfpu=neon -ftree-vectorize -fomit-frame-pointer -ffast-math"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/clean.sh
===================================================================
--- toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/main.c
===================================================================
--- toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/main.c	(nonexistent)
+++ toolchains-1.7.1/products/AM335X-glibc/1.7.1/AM335X-TEST-neon/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/AM335X-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/AM335X-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/AM335X-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_AM335X_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/AM335X-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/AM335X-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/AM335X-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/AM335X-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/.config
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-none-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-NONE-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_OPTIONS=" -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard"
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer ${ARCH_OPTIONS} -mlittle-endian -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc ${ARCH_OPTIONS} -mlittle-endian  -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/A1X-TEST/main.c	(revision 343)
@@ -0,0 +1,16 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   float pi = 3.1415, e = 2.71, f;
+
+   c = a / b;
+   r = a % b;
+
+   f = pi * e;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/.config
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-none-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-NONE-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_OPTIONS=" -march=armv7ve -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard"
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer ${ARCH_OPTIONS} -mlittle-endian -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc ${ARCH_OPTIONS} -mlittle-endian  -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/A2X-TEST/main.c	(revision 343)
@@ -0,0 +1,16 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   float pi = 3.1415, e = 2.71, f;
+
+   c = a / b;
+   r = a % b;
+
+   f = pi * e;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/.config
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-none-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-NONE-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_OPTIONS=" -march=armv7ve -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard"
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer ${ARCH_OPTIONS} -mlittle-endian -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc ${ARCH_OPTIONS} -mlittle-endian  -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/H3-TEST/main.c	(revision 343)
@@ -0,0 +1,16 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   float pi = 3.1415, e = 2.71, f;
+
+   c = a / b;
+   r = a % b;
+
+   f = pi * e;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/.config
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-none-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-NONE-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_OPTIONS=" -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard"
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer ${ARCH_OPTIONS} -mlittle-endian -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc ${ARCH_OPTIONS} -mlittle-endian  -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/IMX6-TEST/main.c	(revision 343)
@@ -0,0 +1,16 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   float pi = 3.1415, e = 2.71, f;
+
+   c = a / b;
+   r = a % b;
+
+   f = pi * e;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,34 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_ARM32_NEWLIB)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target): $(build_requires)
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/.config
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-none-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-NONE-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_OPTIONS=" -march=armv7ve -mtune=cortex-a15 -mfpu=neon-vfpv4 -mfloat-abi=hard"
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer ${ARCH_OPTIONS} -mlittle-endian -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc ${ARCH_OPTIONS} -mlittle-endian  -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/OMAP543X-TEST/main.c	(revision 343)
@@ -0,0 +1,16 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   float pi = 3.1415, e = 2.71, f;
+
+   c = a / b;
+   r = a % b;
+
+   f = pi * e;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/.config
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-none-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-NONE-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_OPTIONS=" -march=armv7ve -mtune=cortex-a17 -mfpu=neon-vfpv4 -mfloat-abi=hard"
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer ${ARCH_OPTIONS} -mlittle-endian -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc ${ARCH_OPTIONS} -mlittle-endian  -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/RK328X-TEST/main.c	(revision 343)
@@ -0,0 +1,16 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   float pi = 3.1415, e = 2.71, f;
+
+   c = a / b;
+   r = a % b;
+
+   f = pi * e;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/.config
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-none-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-NONE-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_OPTIONS=" -march=armv7-a -mtune=cortex-a5 -mfpu=neon -mfloat-abi=hard"
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer ${ARCH_OPTIONS} -mlittle-endian -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc ${ARCH_OPTIONS} -mlittle-endian  -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/S8XX-TEST/main.c	(revision 343)
@@ -0,0 +1,16 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   float pi = 3.1415, e = 2.71, f;
+
+   c = a / b;
+   r = a % b;
+
+   f = pi * e;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/.config
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-none-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-NONE-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_OPTIONS=" -march=armv8-a -mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard"
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer ${ARCH_OPTIONS} -mlittle-endian -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc ${ARCH_OPTIONS} -mlittle-endian  -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1/armv8l-TEST/main.c	(revision 343)
@@ -0,0 +1,16 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   float pi = 3.1415, e = 2.71, f;
+
+   c = a / b;
+   r = a % b;
+
+   f = pi * e;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/ARM32-newlib/1.7.1
===================================================================
--- toolchains-1.7.1/products/ARM32-newlib/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/ARM32-newlib/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/ARM32-newlib/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/.config
===================================================================
--- toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-at91sam7s-eabi
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-AT91SAM7S-eabi-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/_build.sh
===================================================================
--- toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/_build.sh	(nonexistent)
+++ toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/_build.sh	(revision 343)
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+arm-at91sam7s-eabi-gcc -g -gdwarf-2 -fomit-frame-pointer -mcpu=arm7tdmi -mbig-endian  -I$TOOLCHAIN_PATH/include -c -o main.o main.c
+arm-at91sam7s-eabi-gcc -mcpu=arm7tdmi -mbig-endian  -o main main.o
+
+arm-at91sam7s-eabi-objdump -x main > main.map
+
+arm-at91sam7s-eabi-strip main -o main.elf
+
+arm-at91sam7s-eabi-objcopy -O srec main.elf main.srec
+arm-at91sam7s-eabi-objcopy -O ihex main.elf main.hex
+arm-at91sam7s-eabi-objdump -S -d main.o > main.asm
+arm-at91sam7s-eabi-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/_build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/_clean.sh
===================================================================
--- toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/_clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/_clean.sh	(revision 343)
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+rm -f full.program.asm main main.asm main.elf main.hex main.map main.o main.srec

Property changes on: toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/_clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/AT91SAM7S-TEST/main.c	(revision 343)
@@ -0,0 +1,13 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,33 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_AT91SAM7S_NEWLIB)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1
===================================================================
--- toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/AT91SAM7S-newlib/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/.config
===================================================================
--- toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/.config	(nonexistent)
+++ toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-h3-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-H3-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/build.sh
===================================================================
--- toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/build.sh	(revision 343)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7ve -mtune=cortex-a7"
+
+FPU_FLAGS=" -mfloat-abi=hard -mfpu=neon-vfpv4 -ftree-vectorize -fomit-frame-pointer -ffast-math"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/clean.sh
===================================================================
--- toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/main.c
===================================================================
--- toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/main.c	(nonexistent)
+++ toolchains-1.7.1/products/H3-glibc/1.7.1/H3-TEST-neon/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/H3-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/H3-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/H3-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_H3_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/H3-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/H3-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/H3-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/H3-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/.config
===================================================================
--- toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-h5-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-H5-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a53"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/H5-glibc/1.7.1/H5-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/H5-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/H5-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/H5-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_H5_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/H5-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/H5-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/H5-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/H5-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/.config
===================================================================
--- toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/.config	(nonexistent)
+++ toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-h5-elf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-H5-elf-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/build.sh
===================================================================
--- toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+DEBUG_FLAGS="-gdwarf-2"
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a53 -mabi=ilp32 -mlittle-endian"
+
+$TARGET-gcc -g $DEBUG_FLAGS $ARCH_FLAGS -fomit-frame-pointer  -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $DEBUG_FLAGS $ARCH_FLAGS -o main main.o -lc -lm -lnosys -lrdimon
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/clean.sh
===================================================================
--- toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/main.c
===================================================================
--- toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/main.c	(nonexistent)
+++ toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-ilp32/main.c	(revision 343)
@@ -0,0 +1,13 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/.config
===================================================================
--- toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/.config	(nonexistent)
+++ toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-h5-elf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-H5-elf-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/build.sh
===================================================================
--- toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+DEBUG_FLAGS="-gdwarf-2"
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a53 -mabi=lp64 -mlittle-endian"
+
+$TARGET-gcc -g $DEBUG_FLAGS $ARCH_FLAGS -fomit-frame-pointer  -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $DEBUG_FLAGS $ARCH_FLAGS -o main main.o -lc -lm -lnosys -lrdimon
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/clean.sh
===================================================================
--- toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/main.c
===================================================================
--- toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/main.c	(nonexistent)
+++ toolchains-1.7.1/products/H5-newlib/1.7.1/H5-TEST-lp64/main.c	(revision 343)
@@ -0,0 +1,13 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/H5-newlib/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/H5-newlib/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/H5-newlib/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,34 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_H5_NEWLIB)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/H5-newlib/1.7.1
===================================================================
--- toolchains-1.7.1/products/H5-newlib/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/H5-newlib/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/H5-newlib/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/.config
===================================================================
--- toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=i586-radix-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/i586-PC-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/build.sh	(revision 343)
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+$TARGET-gcc -g -gdwarf-2 -march=i586 -mtune=i586 -fomit-frame-pointer -I$TOOLCHAIN_PATH/$TARGET/sys-root/usr/include -c -o main.o main.c
+$TARGET-gcc -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/I586-glibc/1.7.1/I586-TEST/main.c	(revision 343)
@@ -0,0 +1,19 @@
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   double   y, x = 3.5;
+
+   y = x + 2.8;
+
+   c = a / b;
+   r = a % b;
+
+   printf("\nHello, World!\n\n");
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/I586-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/I586-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/I586-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_I586_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/.config
===================================================================
--- toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=i686-radix-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/i686-PC-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/build.sh	(revision 343)
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer -I$TOOLCHAIN_PATH/$TARGET/sys-root/usr/include -c -o main.o main.c
+$TARGET-gcc -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/I686-glibc/1.7.1/I686-TEST/main.c	(revision 343)
@@ -0,0 +1,19 @@
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   double   y, x = 3.5;
+
+   y = x + 2.8;
+
+   c = a / b;
+   r = a % b;
+
+   printf("\nHello, World!\n\n");
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/I686-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/I686-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/I686-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_I686_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/I686-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/I686-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/I686-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/I686-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/.config
===================================================================
--- toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-imx6-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-IMX6-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7-a -mtune=cortex-a9"
+
+
+$TARGET-gcc -g -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/.config
===================================================================
--- toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/.config	(nonexistent)
+++ toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-imx6-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-IMX6-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/build.sh
===================================================================
--- toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/build.sh	(revision 343)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7-a -mtune=cortex-a9"
+
+FPU_FLAGS=" -mfpu=vfpv3 -mfloat-abi=hard"
+
+$TARGET-gcc -g -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/clean.sh
===================================================================
--- toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/main.c
===================================================================
--- toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/main.c	(nonexistent)
+++ toolchains-1.7.1/products/IMX6-glibc/1.7.1/IMX6-TEST-vfp/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/IMX6-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/IMX6-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/IMX6-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_IMX6_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/IMX6-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/IMX6-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/IMX6-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/IMX6-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/.config
===================================================================
--- toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-imx6ull-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-IMX6ULL-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7-a -mtune=cortex-a7"
+
+
+$TARGET-gcc -g -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/.config
===================================================================
--- toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/.config	(nonexistent)
+++ toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-imx6ull-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-IMX6ULL-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/build.sh
===================================================================
--- toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/build.sh	(revision 343)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7-a -mtune=cortex-a7"
+
+FPU_FLAGS=" -mfpu=neon-vfpv4 -mfloat-abi=hard"
+
+$TARGET-gcc -g -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/clean.sh
===================================================================
--- toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/main.c
===================================================================
--- toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/main.c	(nonexistent)
+++ toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/IMX6-TEST-vfp/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_IMX6ULL_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/IMX6ULL-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/.config
===================================================================
--- toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=mipsel-jz47xx-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/mipsel-JZ47XX-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=mips32r2 -mhard-float"
+
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/JZ47XX-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/JZ47XX-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_JZ47XX_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/JZ47XX-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/JZ47XX-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/JZ47XX-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/JZ47XX-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/.config
===================================================================
--- toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-m1000-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-M1000-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a57 -mabi=lp64"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/M1000-glibc/1.7.1/M1000-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/M1000-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/M1000-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/M1000-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_M1000_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/M1000-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/M1000-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/M1000-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/M1000-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/.config
===================================================================
--- toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/.config	(nonexistent)
+++ toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-m1000-elf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-M1000-elf-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/build.sh
===================================================================
--- toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+DEBUG_FLAGS="-gdwarf-2"
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a57 -mabi=ilp32 -mlittle-endian"
+
+$TARGET-gcc -g $DEBUG_FLAGS $ARCH_FLAGS -fomit-frame-pointer  -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $DEBUG_FLAGS $ARCH_FLAGS -o main main.o -lc -lm -lnosys -lrdimon
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/clean.sh
===================================================================
--- toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/main.c
===================================================================
--- toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/main.c	(nonexistent)
+++ toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-ilp32/main.c	(revision 343)
@@ -0,0 +1,13 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/.config
===================================================================
--- toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/.config	(nonexistent)
+++ toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-m1000-elf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-M1000-elf-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/build.sh
===================================================================
--- toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+DEBUG_FLAGS="-gdwarf-2"
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a57 -mabi=lp64 -mlittle-endian"
+
+$TARGET-gcc -g $DEBUG_FLAGS $ARCH_FLAGS -fomit-frame-pointer  -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $DEBUG_FLAGS $ARCH_FLAGS -o main main.o -lc -lm -lnosys -lrdimon
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/clean.sh
===================================================================
--- toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/main.c
===================================================================
--- toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/main.c	(nonexistent)
+++ toolchains-1.7.1/products/M1000-newlib/1.7.1/M1000-TEST-lp64/main.c	(revision 343)
@@ -0,0 +1,13 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/M1000-newlib/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/M1000-newlib/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/M1000-newlib/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,34 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_M1000_NEWLIB)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/M1000-newlib/1.7.1
===================================================================
--- toolchains-1.7.1/products/M1000-newlib/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/M1000-newlib/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/M1000-newlib/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/Makefile
===================================================================
--- toolchains-1.7.1/products/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/Makefile	(revision 343)
@@ -0,0 +1,178 @@
+
+
+COMPONENT_TARGETS  = $(TOOLCHAIN_ARM32_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_H5_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_M1000_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_AT91SAM7S_NEWLIB)
+COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_NEWLIB)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_A1X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A2X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H3_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_H5_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_IMX6ULL_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_JZ47XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_P5600_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_M1000_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_OMAP543X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_AM335X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK328X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S8XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A311X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_RK339X_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER8LE_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_POWER9LE_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_GLIBC)
+
+COMPONENT_TARGETS += $(TOOLCHAIN_I586_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_I686_GLIBC)
+COMPONENT_TARGETS += $(TOOLCHAIN_X86_64_GLIBC)
+
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+
+include ../build-system/config.mk
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_ARM32_NEWLIB))
+REQUIRES  = products/ARM32-newlib/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A33XX_NEWLIB))
+REQUIRES  = products/A33XX-newlib/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A9XX_NEWLIB))
+REQUIRES  = products/A9XX-newlib/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H5_NEWLIB))
+REQUIRES  = products/H5-newlib/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S9XX_NEWLIB))
+REQUIRES  = products/S9XX-newlib/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK33XX_NEWLIB))
+REQUIRES  = products/RK33XX-newlib/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_M1000_NEWLIB))
+REQUIRES  = products/M1000-newlib/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_AT91SAM7S_NEWLIB))
+REQUIRES  = products/AT91SAM7S-newlib/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RISCV64_NEWLIB))
+REQUIRES  = products/RISCV64-newlib/1.7.1
+endif
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A1X_GLIBC))
+REQUIRES  = products/A1X-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A2X_GLIBC))
+REQUIRES  = products/A2X-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H3_GLIBC))
+REQUIRES  = products/H3-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H5_GLIBC))
+REQUIRES  = products/H5-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_IMX6_GLIBC))
+REQUIRES  = products/IMX6-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_IMX6ULL_GLIBC))
+REQUIRES  = products/IMX6ULL-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_JZ47XX_GLIBC))
+REQUIRES  = products/JZ47XX-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_P5600_GLIBC))
+REQUIRES  = products/P5600-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_M1000_GLIBC))
+REQUIRES  = products/M1000-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_OMAP543X_GLIBC))
+REQUIRES  = products/OMAP543X-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_AM335X_GLIBC))
+REQUIRES  = products/AM335X-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK328X_GLIBC))
+REQUIRES  = products/RK328X-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S8XX_GLIBC))
+REQUIRES  = products/S8XX-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S9XX_GLIBC))
+REQUIRES  = products/S9XX-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A9XX_GLIBC))
+REQUIRES  = products/A9XX-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A311X_GLIBC))
+REQUIRES  = products/A311X-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK33XX_GLIBC))
+REQUIRES  = products/RK33XX-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK339X_GLIBC))
+REQUIRES  = products/RK339X-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A33XX_GLIBC))
+REQUIRES  = products/A33XX-glibc/1.7.1
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC))
+REQUIRES  = products/POWER8-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER9_GLIBC))
+REQUIRES  = products/POWER9-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER8LE_GLIBC))
+REQUIRES  = products/POWER8LE-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER9LE_GLIBC))
+REQUIRES  = products/POWER9LE-glibc/1.7.1
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RISCV64_GLIBC))
+REQUIRES  = products/RISCV64-glibc/1.7.1
+endif
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_I586_GLIBC))
+REQUIRES  = products/I586-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_I686_GLIBC))
+REQUIRES  = products/I686-glibc/1.7.1
+endif
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
+REQUIRES  = products/X86_64-glibc/1.7.1
+endif
+
+
+# ======= __END_OF_REQUIRES__ =======
+
+install_target     = $(TARGET_BUILD_DIR)/.install_done
+
+BUILD_TARGETS      = $(install_target)
+
+
+include ../build-system/core.mk
+
+
+$(install_target):
+	@touch $@
Index: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_OMAP543X_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/.config
===================================================================
--- toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-omap543x-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-OMAP543X-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7ve -mtune=cortex-a15"
+
+
+$TARGET-gcc -g -O3 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/.config
===================================================================
--- toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/.config	(nonexistent)
+++ toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-omap543x-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-OMAP543X-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/build.sh
===================================================================
--- toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7ve -mtune=cortex-a15"
+FPU_FLAGS=" -mfloat-abi=hard -mfpu=neon-vfpv4 -ffast-math"
+
+$TARGET-gcc -g -O3 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/clean.sh
===================================================================
--- toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/main.c
===================================================================
--- toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/main.c	(nonexistent)
+++ toolchains-1.7.1/products/OMAP543X-glibc/1.7.1/OMAP543X-TEST-vfp/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/OMAP543X-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/OMAP543X-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/OMAP543X-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/P5600-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/P5600-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/P5600-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_P5600_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/.config
===================================================================
--- toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=mipsel-p5600-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/mipsel-P5600-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=mips32r5 -mtune=p5600 -mhard-float"
+
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/P5600-glibc/1.7.1/P5600-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/P5600-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/P5600-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/P5600-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/P5600-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/POWER8-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/POWER8-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/POWER8-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_POWER8_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/.config
===================================================================
--- toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=ppc64-power8-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/ppc64-POWER8-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/.config
===================================================================
--- toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/.config	(nonexistent)
+++ toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=ppc64-power8-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/ppc64-POWER8-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/build.sh
===================================================================
--- toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -g -O3 -m32 -mcpu=power8 -mlong-double-128"
+
+
+$TARGET-gcc -m32 -g -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc -m32 $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/clean.sh
===================================================================
--- toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/main.c
===================================================================
--- toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/main.c	(nonexistent)
+++ toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/32/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -g -O3 -mcpu=power8 -mlong-double-128"
+
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/POWER8-glibc/1.7.1/POWER8-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/POWER8-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/POWER8-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/POWER8-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/POWER8-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_POWER8LE_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/.config
===================================================================
--- toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=ppc64le-power8-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/ppc64le-POWER8-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -g -O3 -mcpu=power8 -mlong-double-128"
+
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/POWER8LE-glibc/1.7.1/POWER8LE-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/POWER8LE-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/POWER8LE-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/POWER8LE-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/POWER8LE-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/POWER9-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/POWER9-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/POWER9-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_POWER9_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/.config
===================================================================
--- toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=ppc64-power9-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/ppc64-POWER9-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/.config
===================================================================
--- toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/.config	(nonexistent)
+++ toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=ppc64-power9-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/ppc64-POWER9-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/build.sh
===================================================================
--- toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -g -O3 -m32 -mcpu=power9 -mlong-double-128"
+
+
+$TARGET-gcc -m32 -g -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc -m32 $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/clean.sh
===================================================================
--- toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/main.c
===================================================================
--- toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/main.c	(nonexistent)
+++ toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/32/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -g -O3 -mcpu=power9 -mlong-double-128"
+
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/POWER9-glibc/1.7.1/POWER9-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/POWER9-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/POWER9-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/POWER9-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/POWER9-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_POWER9LE_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/.config
===================================================================
--- toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=ppc64le-power9-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/ppc64le-POWER9-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -g -O3 -mcpu=power9 -mlong-double-128"
+
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/POWER9LE-glibc/1.7.1/POWER9LE-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/POWER9LE-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/POWER9LE-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/POWER9LE-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/POWER9LE-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/RISCV64-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/RISCV64-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_RISCV64_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/.config
===================================================================
--- toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=riscv64-rv64gc-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/riscv64-RV64GC-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_OPTIONS=" -g -O3 -march=rv64gc -mabi=lp64d -mcmodel=medany"
+
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer ${ARCH_FLAGS} -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc ${ARCH_FLAGS} -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-glibc/1.7.1/rv64gc-TEST/main.c	(revision 343)
@@ -0,0 +1,18 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float f = 3.1415;
+   double g = 5.0, h = 2.0, d;
+   uint32_t a = 7, b = 3, c, r;
+
+   d = g * h;
+   c = a / b;
+   r = a % b;
+
+   d += f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/RISCV64-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/RISCV64-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/RISCV64-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/RISCV64-newlib/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/RISCV64-newlib/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-newlib/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,34 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_RISCV64_NEWLIB)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target): $(build_requires)
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/.config
===================================================================
--- toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=riscv64-none-elf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/riscv64-NONE-elf-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_OPTIONS=" -march=rv64imafdc -mabi=lp64d"
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer ${ARCH_OPTIONS} -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc ${ARCH_OPTIONS} -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-newlib/1.7.1/rv64imafdc-TEST/main.c	(revision 343)
@@ -0,0 +1,18 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   float pi = 3.1415, e = 2.71, f;
+   double g = 5.0, h = 2.0, d;
+
+   d = g * h;
+   c = a / b;
+   r = a % b;
+
+   f = pi * e;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/RISCV64-newlib/1.7.1
===================================================================
--- toolchains-1.7.1/products/RISCV64-newlib/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/RISCV64-newlib/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/RISCV64-newlib/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/RK328X-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/RK328X-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/RK328X-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_RK328X_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/.config
===================================================================
--- toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/.config	(nonexistent)
+++ toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-rk328x-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-RK328X-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/build.sh
===================================================================
--- toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/build.sh	(revision 343)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7ve -mtune=cortex-a17"
+
+FPU_FLAGS=" -mfloat-abi=hard -mfpu=neon-vfpv4 -ftree-vectorize -fomit-frame-pointer -ffast-math"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/clean.sh
===================================================================
--- toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/main.c
===================================================================
--- toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/main.c	(nonexistent)
+++ toolchains-1.7.1/products/RK328X-glibc/1.7.1/RK328X-TEST-vfp/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/RK328X-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/RK328X-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/RK328X-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/RK328X-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/RK339X-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/RK339X-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/RK339X-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_RK339X_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/.config
===================================================================
--- toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-rk339x-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-RK339X-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a72.cortex-a53 -mabi=lp64"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/RK339X-glibc/1.7.1/RK339X-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/RK339X-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/RK339X-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/RK339X-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/RK339X-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/RK33XX-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/RK33XX-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_RK33XX_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/.config
===================================================================
--- toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-rk33xx-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-RK33XX-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a53 -mabi=lp64"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-glibc/1.7.1/RK33XX-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/RK33XX-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/RK33XX-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/RK33XX-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/RK33XX-newlib/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-newlib/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,34 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_RK33XX_NEWLIB)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/.config
===================================================================
--- toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/.config	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-rk33xx-elf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-RK33XX-elf-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/build.sh
===================================================================
--- toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+DEBUG_FLAGS="-gdwarf-2"
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a53 -mabi=ilp32 -mlittle-endian"
+
+$TARGET-gcc -g $DEBUG_FLAGS $ARCH_FLAGS -fomit-frame-pointer  -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $DEBUG_FLAGS $ARCH_FLAGS -o main main.o -lc -lm -lnosys -lrdimon
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/clean.sh
===================================================================
--- toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/main.c
===================================================================
--- toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/main.c	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-ilp32/main.c	(revision 343)
@@ -0,0 +1,13 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/.config
===================================================================
--- toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/.config	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-rk33xx-elf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-RK33XX-elf-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/build.sh
===================================================================
--- toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+DEBUG_FLAGS="-gdwarf-2"
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a53 -mabi=lp64 -mlittle-endian"
+
+$TARGET-gcc -g $DEBUG_FLAGS $ARCH_FLAGS -fomit-frame-pointer  -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $DEBUG_FLAGS $ARCH_FLAGS -o main main.o -lc -lm -lnosys -lrdimon
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/clean.sh
===================================================================
--- toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/main.c
===================================================================
--- toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/main.c	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-newlib/1.7.1/RK33XX-TEST-lp64/main.c	(revision 343)
@@ -0,0 +1,13 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/RK33XX-newlib/1.7.1
===================================================================
--- toolchains-1.7.1/products/RK33XX-newlib/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/RK33XX-newlib/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/RK33XX-newlib/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/S8XX-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/S8XX-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/S8XX-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_S8XX_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/.config
===================================================================
--- toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/.config	(nonexistent)
+++ toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=arm-s8xx-linux-gnueabihf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/arm-S8XX-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/build.sh
===================================================================
--- toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/build.sh	(revision 343)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv7-a -mtune=cortex-a5"
+
+FPU_FLAGS=" -mfloat-abi=hard -mfpu=neon -ftree-vectorize -fomit-frame-pointer -ffast-math"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS $FPU_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/clean.sh
===================================================================
--- toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/main.c
===================================================================
--- toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/main.c	(nonexistent)
+++ toolchains-1.7.1/products/S8XX-glibc/1.7.1/S8XX-TEST-neon/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/S8XX-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/S8XX-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/S8XX-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/S8XX-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/S9XX-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/S9XX-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_S9XX_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/.config
===================================================================
--- toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-s9xx-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-S9XX-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/build.sh	(revision 343)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+ARCH_FLAGS=" -march=armv8-a -mcpu=cortex-a53 -mabi=lp64"
+
+$TARGET-gcc -g -O3 -gdwarf-2 -fomit-frame-pointer $ARCH_FLAGS -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $ARCH_FLAGS $FPU_FLAGS -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-glibc/1.7.1/S9XX-TEST/main.c	(revision 343)
@@ -0,0 +1,17 @@
+
+//#include <stdlib.h>
+//#include <inttypes.h>
+
+int main()
+{
+   float d, f = 3.1415;
+   
+//   uint32_t a = 7, b = 3, c, r;
+
+//   c = a / b;
+//   r = a % b;
+
+   d = f * 2.1;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/S9XX-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/S9XX-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/S9XX-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/S9XX-newlib/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/S9XX-newlib/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-newlib/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,34 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_S9XX_NEWLIB)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/.config
===================================================================
--- toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/.config	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-s9xx-elf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-S9XX-elf-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/build.sh
===================================================================
--- toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+DEBUG_FLAGS="-gdwarf-2"
+ARCH_FLAGS="-march=armv8-a -mcpu=cortex-a53 -mabi=ilp32 -mlittle-endian"
+
+$TARGET-gcc -g $DEBUG_FLAGS $ARCH_FLAGS -fomit-frame-pointer  -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $DEBUG_FLAGS $ARCH_FLAGS -o main main.o -lc -lm -lnosys -lrdimon
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/clean.sh
===================================================================
--- toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/main.c
===================================================================
--- toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/main.c	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-ilp32/main.c	(revision 343)
@@ -0,0 +1,13 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/.config
===================================================================
--- toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/.config	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=aarch64-s9xx-elf
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/aarch64-S9XX-elf-newlib/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/build.sh
===================================================================
--- toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/build.sh	(revision 343)
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+DEBUG_FLAGS="-gdwarf-2"
+ARCH_FLAGS="-march=armv8-a -mcpu=cortex-a53 -mabi=lp64 -mlittle-endian"
+
+$TARGET-gcc -g $DEBUG_FLAGS $ARCH_FLAGS -fomit-frame-pointer  -I$TOOLCHAIN_PATH/$TARGET/include -c -o main.o main.c
+$TARGET-gcc $DEBUG_FLAGS $ARCH_FLAGS -o main main.o -lc -lm -lnosys -lrdimon
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/clean.sh
===================================================================
--- toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/main.c
===================================================================
--- toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/main.c	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-newlib/1.7.1/S9XX-TEST-lp64/main.c	(revision 343)
@@ -0,0 +1,13 @@
+
+#include <stdlib.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+
+   c = a / b;
+   r = a % b;
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/S9XX-newlib/1.7.1
===================================================================
--- toolchains-1.7.1/products/S9XX-newlib/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/S9XX-newlib/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/S9XX-newlib/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products/X86_64-glibc/1.7.1/Makefile
===================================================================
--- toolchains-1.7.1/products/X86_64-glibc/1.7.1/Makefile	(nonexistent)
+++ toolchains-1.7.1/products/X86_64-glibc/1.7.1/Makefile	(revision 343)
@@ -0,0 +1,35 @@
+
+
+COMPONENT_TARGETS = $(TOOLCHAIN_X86_64_GLIBC)
+
+export TOOLCHAIN_VERSION = 1.7.1
+
+include ../../../build-system/config.mk
+
+REQUIRES  = core/gcc/11.2.0^full
+REQUIRES += tools/patchelf/0.13
+REQUIRES += core/gdb/11.1
+
+# ======= __END_OF_REQUIRES__ =======
+
+tarball_name    = $(TOOLCHAIN_DIR)-$(TOOLCHAIN_VERSION).tar.xz
+tarball         = $(TARGET_BUILD_DIR)/$(tarball_name)
+
+tarball_target  = $(TARGET_BUILD_DIR)/.tarball-created
+
+BUILD_TARGETS   = $(tarball_target)
+
+PRODUCT_TARGETS = $(tarball)
+
+include ../../../build-system/core.mk
+
+
+$(tarball): $(tarball_target)
+
+$(tarball_target):
+	@echo ""
+	@echo "Creating $(tarball_name) tarball..."
+	@cd $(TOOLCHAINS_BASE_PATH) ; \
+	  tar -cf - $(TOOLCHAIN_DIR)/$(TOOLCHAIN_VERSION) | xz --threads=0 > $(tarball_name)
+	@mv $(TOOLCHAINS_BASE_PATH)/$(tarball_name) $(TARGET_BUILD_DIR)
+	@touch $@
Index: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/.config
===================================================================
--- toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/.config	(nonexistent)
+++ toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=x86_64-radix-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/x86_64-PC-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/.config
===================================================================
--- toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/.config	(nonexistent)
+++ toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/.config	(revision 343)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#################################################################
+#
+# default common variables:
+#
+if test -z "$HOST"; then
+  export HOST=x86_64-pc-linux-gnu
+fi
+
+if test -z "$TARGET"; then
+  export TARGET=x86_64-radix-linux-gnu
+fi
+
+if test -z "$TOOLCHAIN_PATH"; then
+  export TOOLCHAIN_PATH=/opt/toolchains/x86_64-PC-linux-glibc/1.7.1
+fi
+
+#
+# END of default common variables.
+#
+#################################################################
Index: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/build.sh
===================================================================
--- toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/build.sh	(revision 343)
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+$TARGET-gcc -m32 -g -gdwarf-2 -fomit-frame-pointer -I$TOOLCHAIN_PATH/$TARGET/sys-root/usr/include -c -o main.o main.c
+$TARGET-gcc -m32 -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/clean.sh
===================================================================
--- toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/main.c
===================================================================
--- toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/main.c	(nonexistent)
+++ toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/32/main.c	(revision 343)
@@ -0,0 +1,19 @@
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   double   y, x = 3.5;
+
+   y = x + 2.8;
+
+   c = a / b;
+   r = a % b;
+
+   printf("\nHello, World!\n\n");
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/build.sh
===================================================================
--- toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/build.sh	(nonexistent)
+++ toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/build.sh	(revision 343)
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+. ./.config
+
+export PATH=$TOOLCHAIN_PATH/bin:$PATH
+
+$TARGET-gcc -g -gdwarf-2 -fomit-frame-pointer -I$TOOLCHAIN_PATH/$TARGET/sys-root/usr/include -c -o main.o main.c
+$TARGET-gcc -o main main.o
+
+$TARGET-objdump -x main > main.map
+
+$TARGET-strip main -o main.elf
+
+$TARGET-objcopy -O srec main.elf main.srec
+$TARGET-objcopy -O ihex main.elf main.hex
+$TARGET-objdump -S -d main.o > main.asm
+$TARGET-objdump -S -d main > full.program.asm

Property changes on: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/build.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/clean.sh
===================================================================
--- toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/clean.sh	(nonexistent)
+++ toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/clean.sh	(revision 343)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+rm -f full.program.asm
+rm -f main
+rm -f main.asm
+rm -f main.elf
+rm -f main.hex
+rm -f main.map
+rm -f main.o
+rm -f main.srec

Property changes on: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/clean.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/main.c
===================================================================
--- toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/main.c	(nonexistent)
+++ toolchains-1.7.1/products/X86_64-glibc/1.7.1/X86_64-TEST/main.c	(revision 343)
@@ -0,0 +1,19 @@
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <inttypes.h>
+
+int main()
+{
+   uint32_t a = 7, b = 3, c, r;
+   double   y, x = 3.5;
+
+   y = x + 2.8;
+
+   c = a / b;
+   r = a % b;
+
+   printf("\nHello, World!\n\n");
+
+   return( 0 );
+}
Index: toolchains-1.7.1/products/X86_64-glibc/1.7.1
===================================================================
--- toolchains-1.7.1/products/X86_64-glibc/1.7.1	(nonexistent)
+++ toolchains-1.7.1/products/X86_64-glibc/1.7.1	(revision 343)

Property changes on: toolchains-1.7.1/products/X86_64-glibc/1.7.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/products
===================================================================
--- toolchains-1.7.1/products	(nonexistent)
+++ toolchains-1.7.1/products	(revision 343)

Property changes on: toolchains-1.7.1/products
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/sources/Linux/v5.x/Makefile
===================================================================
--- toolchains-1.7.1/sources/Linux/v5.x/Makefile	(nonexistent)
+++ toolchains-1.7.1/sources/Linux/v5.x/Makefile	(revision 343)
@@ -0,0 +1,50 @@
+#
+# Project Home:
+# ============
+# git.radix.pro/sources.git
+#
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+
+include ../../../build-system/config.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/Linux/v5.x
+
+versions    = 5.14.9
+
+tarballs    = $(addsuffix .tar.xz, $(addprefix linux-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: toolchains-1.7.1/sources/Linux/v5.x
===================================================================
--- toolchains-1.7.1/sources/Linux/v5.x	(nonexistent)
+++ toolchains-1.7.1/sources/Linux/v5.x	(revision 343)

Property changes on: toolchains-1.7.1/sources/Linux/v5.x
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/sources/Linux/Baikal/M1000/Makefile
===================================================================
--- toolchains-1.7.1/sources/Linux/Baikal/M1000/Makefile	(nonexistent)
+++ toolchains-1.7.1/sources/Linux/Baikal/M1000/Makefile	(revision 343)
@@ -0,0 +1,52 @@
+#
+# Project Home:
+# ============
+# https://www.baikalelectronics.ru/products
+#
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+
+include ../../../../build-system/config.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/Linux/Baikal/M1000
+
+versions    = m1-5.4.92-5.1.76
+
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix linux-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: toolchains-1.7.1/sources/Linux/Baikal/M1000
===================================================================
--- toolchains-1.7.1/sources/Linux/Baikal/M1000	(nonexistent)
+++ toolchains-1.7.1/sources/Linux/Baikal/M1000	(revision 343)

Property changes on: toolchains-1.7.1/sources/Linux/Baikal/M1000
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/sources/Linux/Baikal/T1000/Makefile
===================================================================
--- toolchains-1.7.1/sources/Linux/Baikal/T1000/Makefile	(nonexistent)
+++ toolchains-1.7.1/sources/Linux/Baikal/T1000/Makefile	(revision 343)
@@ -0,0 +1,52 @@
+#
+# Project Home:
+# ============
+# http://www.baikalelectronics.ru/products/T1
+#
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+
+include ../../../../build-system/config.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/Linux/Baikal/T1000
+
+versions    = t1-5.4.105-5.6.207
+
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix linux-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: toolchains-1.7.1/sources/Linux/Baikal/T1000
===================================================================
--- toolchains-1.7.1/sources/Linux/Baikal/T1000	(nonexistent)
+++ toolchains-1.7.1/sources/Linux/Baikal/T1000	(revision 343)

Property changes on: toolchains-1.7.1/sources/Linux/Baikal/T1000
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/sources/Linux/Baikal/Makefile
===================================================================
--- toolchains-1.7.1/sources/Linux/Baikal/Makefile	(nonexistent)
+++ toolchains-1.7.1/sources/Linux/Baikal/Makefile	(revision 343)
@@ -0,0 +1,14 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+SOURCE_REQUIRES += ALL_DIRS
+
+# ======= __END_OF_REQUIRES__ =======
+
+include ../../../build-system/core.mk
+
+
+download_clean:
+	@true
+
+.PHONY: download_clean
Index: toolchains-1.7.1/sources/Linux/Baikal
===================================================================
--- toolchains-1.7.1/sources/Linux/Baikal	(nonexistent)
+++ toolchains-1.7.1/sources/Linux/Baikal	(revision 343)

Property changes on: toolchains-1.7.1/sources/Linux/Baikal
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/sources/Linux/Makefile
===================================================================
--- toolchains-1.7.1/sources/Linux/Makefile	(nonexistent)
+++ toolchains-1.7.1/sources/Linux/Makefile	(revision 343)
@@ -0,0 +1,14 @@
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+SOURCE_REQUIRES += ALL_DIRS
+
+# ======= __END_OF_REQUIRES__ =======
+
+include ../../build-system/core.mk
+
+
+download_clean:
+	@true
+
+.PHONY: download_clean
Index: toolchains-1.7.1/sources/Linux
===================================================================
--- toolchains-1.7.1/sources/Linux	(nonexistent)
+++ toolchains-1.7.1/sources/Linux	(revision 343)

Property changes on: toolchains-1.7.1/sources/Linux
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/sources/GNU/binutils/patches/README
===================================================================
--- toolchains-1.7.1/sources/GNU/binutils/patches/README	(nonexistent)
+++ toolchains-1.7.1/sources/GNU/binutils/patches/README	(revision 343)
@@ -0,0 +1,47 @@
+
+/* begin *
+
+   Various upstream patches:
+
+     binutils-2.37-cleansweep.patch
+     binutils-2.37-copy-osabi.patch
+     binutils-2.37-ldforcele.patch
+     binutils-2.37-set-long-long.patch
+     binutils-2.37-sec-merge-omit.patch
+
+   Various regression fixes:
+
+     binutils-2.37-CVE-2019-1010204.patch
+     binutils-2.37-aarch64-ifunc.patch
+     binutils-2.37-bfd-close-fds.patch                 - strongly after binutils-2.37-cleansweep.patch
+     binutils-2.37-not-link-static-libstdc++.patch
+     binutils-2.37-dwarf-5-dir0.patch
+     binutils-2.37-fname-in-error-messages.patch       - strongly after binutils-2.37-readelf-other-sym-info.patch
+     binutils-2.37-gold-i386-gnu-property-notes.patch
+     binutils-2.37-gold-mismatched-section-flags.patch
+     binutils-2.37-gold-warn-unsupported.patch
+     binutils-2.37-missing-man-pages.patch
+     binutils-2.37-readelf-other-sym-info.patch
+     binutils-2.37-special-sections-in-groups.patch    - strongly after binutils-2.37-copy-osabi.patch
+     binutils-2.37-testsuite-fixes.patch
+
+
+   binutils-2.37-export-demangle.patch                 - Export the demangle.h header file;
+   binutils-2.37-no-config-check.patch                 - Don't check to see if 'config.h' was included in the installed headers;
+   binutils-2.37-ldforcele.patch                       - use LD_FORCE_LE environment variable;
+   binutils-2.37-libtool-lib64.patch                   - Work around a bug caused by binutils using an ancient libtool;
+
+   README.TXT                                          - this file.
+
+
+   NOTE:
+   ====
+      On ppc64 and aarch64, we might use 64KiB pages. Following command can be used
+      to set common page size to 64KiB:
+
+      sed -i -e '/#define.*ELF_COMMONPAGESIZE/s/0x1000$/0x10000/' bfd/elf*ppc.c
+      sed -i -e '/#define.*ELF_COMMONPAGESIZE/s/0x1000$/0x10000/' bfd/elf*aarch64.c
+      sed -i -e '/common_pagesize/s/4 /64 /' gold/powerpc.cc
+      sed -i -e '/pagesize/s/0x1000,/0x10000,/' gold/aarch64.cc
+
+ * end */
Index: toolchains-1.7.1/sources/GNU/binutils/patches
===================================================================
--- toolchains-1.7.1/sources/GNU/binutils/patches	(nonexistent)
+++ toolchains-1.7.1/sources/GNU/binutils/patches	(revision 343)

Property changes on: toolchains-1.7.1/sources/GNU/binutils/patches
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,77 ##
+
+# Target build dirs
+.noarch
+.host
+
+.arm32-newlib
+.a33xx-newlib
+.a9xx-newlib
+.h5-newlib
+.s9xx-newlib
+.rk33xx-newlib
+.m1000-newlib
+.riscv64-newlib
+.at91sam7s-newlib
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.imx6-glibc
+.jz47xx-glibc
+.p5600-glibc
+.m1000-glibc
+.omap543x-glibc
+.am335x-glibc
+.rk328x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.a9xx-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.a33xx-glibc
+.power8-glibc
+.power9-glibc
+.power8le-glibc
+.power9le-glibc
+.riscv64-glibc
+.i686-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.src_requires
+.src_requires_depend
+.dist
+
+# Destinations
+dist
+
+
+# Tarballs
+*.gz
+*.bz2
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Text files
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# Object Files
+*.[ao]
+
+# backup copies
+*~
Index: toolchains-1.7.1/sources/GNU/binutils/Makefile
===================================================================
--- toolchains-1.7.1/sources/GNU/binutils/Makefile	(nonexistent)
+++ toolchains-1.7.1/sources/GNU/binutils/Makefile	(revision 343)
@@ -0,0 +1,106 @@
+#
+# Download: http://www.gnu.org/prep/ftp.html
+#
+# You can use the generic url http://ftpmirror.gnu.org
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: http://ftp.gnu.org/gnu/binutils
+#
+
+COMPONENT_TARGETS = $(TOOLCHAIN_NOARCH)
+
+
+include ../../../build-system/config.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNU/binutils
+
+versions    = 2.37
+
+tarballs    = $(addsuffix .tar.xz, $(addprefix binutils-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+patches     = $(CURDIR)/patches/binutils-2.37-CVE-2019-1010204.patch
+patches    += $(CURDIR)/patches/binutils-2.37-aarch64-ifunc.patch
+patches    += $(CURDIR)/patches/binutils-2.37-bfd-close-fds.patch
+patches    += $(CURDIR)/patches/binutils-2.37-not-link-static-libstdc++.patch
+patches    += $(CURDIR)/patches/binutils-2.37-dwarf-5-dir0.patch
+patches    += $(CURDIR)/patches/binutils-2.37-fname-in-error-messages.patch
+patches    += $(CURDIR)/patches/binutils-2.37-gold-i386-gnu-property-notes.patch
+patches    += $(CURDIR)/patches/binutils-2.37-gold-mismatched-section-flags.patch
+patches    += $(CURDIR)/patches/binutils-2.37-gold-warn-unsupported.patch
+patches    += $(CURDIR)/patches/binutils-2.37-missing-man-pages.patch
+patches    += $(CURDIR)/patches/binutils-2.37-readelf-other-sym-info.patch
+patches    += $(CURDIR)/patches/binutils-2.37-revert-PLT-elision.patch
+patches    += $(CURDIR)/patches/binutils-2.37-special-sections-in-groups.patch
+patches    += $(CURDIR)/patches/binutils-2.37-testsuite-fixes.patch
+
+patches    += $(CURDIR)/patches/binutils-2.37-cleansweep.patch
+patches    += $(CURDIR)/patches/binutils-2.37-copy-osabi.patch
+patches    += $(CURDIR)/patches/binutils-2.37-export-demangle.patch
+patches    += $(CURDIR)/patches/binutils-2.37-ldforcele.patch
+patches    += $(CURDIR)/patches/binutils-2.37-libtool-lib64.patch
+patches    += $(CURDIR)/patches/binutils-2.37-no-config-check.patch
+patches    += $(CURDIR)/patches/binutils-2.37-sec-merge-omit.patch
+patches    += $(CURDIR)/patches/binutils-2.37-set-long-long.patch
+
+
+.NOTPARALLEL: $(patches)
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s) $(patches)
+
+
+include ../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) -i & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+$(patches): $(sha1s)
+	@echo -e "\n======= Create Patches =======\n" ; \
+	 ( cd create-2.37-CVE-2019-1010204-patch              ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-aarch64-ifunc-patch                 ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-bfd-close-fds-patch                 ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-not-link-static-libstdc++-patch     ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-dwarf-5-dir0-patch                  ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-fname-in-error-messages-patch       ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-gold-i386-gnu-property-notes-patch  ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-gold-mismatched-section-flags-patch ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-gold-warn-unsupported-patch         ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-missing-man-pages-patch             ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-readelf-other-sym-info-patch        ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-revert-PLT-elision-patch            ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-special-sections-in-groups-patch    ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-testsuite-fixes-patch               ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-cleansweep-patch                    ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-copy-osabi-patch                    ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-export-demangle-patch               ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-ldforcele-patch                     ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-libtool-lib64-patch                 ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-no-config-check-patch               ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-sec-merge-emit-patch                ; ./create.patch.sh ) ; \
+	 ( cd create-2.37-set-long-long-patch                 ; ./create.patch.sh ) ; \
+	 echo -e "\n"
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s) $(patches)
Index: toolchains-1.7.1/sources/GNU/binutils/create-2.37-CVE-2019-1010204-patch/binutils-2.37-new/gold/fileread.cc
===================================================================
--- toolchains-1.7.1/sources/GNU/binutils/create-2.37-CVE-2019-1010204-patch/binutils-2.37-new/gold/fileread.cc	(nonexistent)
+++ toolchains-1.7.1/sources/GNU/binutils/create-2.37-CVE-2019-1010204-patch/binutils-2.37-new/gold/fileread.cc	(revision 343)
@@ -0,0 +1,1178 @@
+// fileread.cc -- read files for gold
+
+// Copyright (C) 2006-2021 Free Software Foundation, Inc.
+// Written by Ian Lance Taylor <iant@google.com>.
+
+// This file is part of gold.
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+// MA 02110-1301, USA.
+
+#include "gold.h"
+
+#include <cstring>
+#include <cerrno>
+#include <climits>
+#include <fcntl.h>
+#include <unistd.h>
+
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+
+#ifdef HAVE_READV
+#include <sys/uio.h>
+#endif
+
+#include <sys/stat.h>
+#include "filenames.h"
+
+#include "debug.h"
+#include "parameters.h"
+#include "options.h"
+#include "dirsearch.h"
+#include "target.h"
+#include "binary.h"
+#include "descriptors.h"
+#include "gold-threads.h"
+#include "fileread.h"
+
+// For systems without mmap support.
+#ifndef HAVE_MMAP
+# define mmap gold_mmap
+# define munmap gold_munmap
+# ifndef MAP_FAILED
+#  define MAP_FAILED (reinterpret_cast<void*>(-1))
+# endif
+# ifndef PROT_READ
+#  define PROT_READ 0
+# endif
+# ifndef MAP_PRIVATE
+#  define MAP_PRIVATE 0
+# endif
+
+# ifndef ENOSYS
+#  define ENOSYS EINVAL
+# endif
+
+static void *
+gold_mmap(void *, size_t, int, int, int, off_t)
+{
+  errno = ENOSYS;
+  return MAP_FAILED;
+}
+
+static int
+gold_munmap(void *, size_t)
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+#endif
+
+#ifndef HAVE_READV
+struct iovec { void* iov_base; size_t iov_len; };
+ssize_t
+readv(int, const iovec*, int)
+{
+  gold_unreachable();
+}
+#endif
+
+namespace gold
+{
+
+// Get the last modified time of an unopened file.
+
+bool
+get_mtime(const char* filename, Timespec* mtime)
+{
+  struct stat file_stat;
+
+  if (stat(filename, &file_stat) < 0)
+    return false;
+#ifdef HAVE_STAT_ST_MTIM
+  mtime->seconds = file_stat.st_mtim.tv_sec;
+  mtime->nanoseconds = file_stat.st_mtim.tv_nsec;
+#else
+  mtime->seconds = file_stat.st_mtime;
+  mtime->nanoseconds = 0;
+#endif
+  return true;
+}
+
+// Class File_read.
+
+// A lock for the File_read static variables.
+static Lock* file_counts_lock = NULL;
+static Initialize_lock file_counts_initialize_lock(&file_counts_lock);
+
+// The File_read static variables.
+unsigned long long File_read::total_mapped_bytes;
+unsigned long long File_read::current_mapped_bytes;
+unsigned long long File_read::maximum_mapped_bytes;
+std::vector<std::string> File_read::files_read;
+
+// Class File_read::View.
+
+File_read::View::~View()
+{
+  gold_assert(!this->is_locked());
+  switch (this->data_ownership_)
+    {
+    case DATA_ALLOCATED_ARRAY:
+      free(const_cast<unsigned char*>(this->data_));
+      break;
+    case DATA_MMAPPED:
+      if (::munmap(const_cast<unsigned char*>(this->data_), this->size_) != 0)
+	gold_warning(_("munmap failed: %s"), strerror(errno));
+      if (!parameters->options_valid() || parameters->options().stats())
+	{
+	  file_counts_initialize_lock.initialize();
+	  Hold_optional_lock hl(file_counts_lock);
+	  File_read::current_mapped_bytes -= this->size_;
+	}
+      break;
+    case DATA_NOT_OWNED:
+      break;
+    default:
+      gold_unreachable();
+    }
+}
+
+void
+File_read::View::lock()
+{
+  ++this->lock_count_;
+}
+
+void
+File_read::View::unlock()
+{
+  gold_assert(this->lock_count_ > 0);
+  --this->lock_count_;
+}
+
+bool
+File_read::View::is_locked()
+{
+  return this->lock_count_ > 0;
+}
+
+// Class File_read.
+
+File_read::~File_read()
+{
+  gold_assert(this->token_.is_writable());
+  if (this->is_descriptor_opened_)
+    {
+      release_descriptor(this->descriptor_, true);
+      this->descriptor_ = -1;
+      this->is_descriptor_opened_ = false;
+    }
+  this->name_.clear();
+  this->clear_views(CLEAR_VIEWS_ALL);
+}
+
+// Open the file.
+
+bool
+File_read::open(const Task* task, const std::string& name)
+{
+  gold_assert(this->token_.is_writable()
+	      && this->descriptor_ < 0
+	      && !this->is_descriptor_opened_
+	      && this->name_.empty());
+  this->name_ = name;
+
+  this->descriptor_ = open_descriptor(-1, this->name_.c_str(),
+				      O_RDONLY);
+
+  if (this->descriptor_ >= 0)
+    {
+      this->is_descriptor_opened_ = true;
+      struct stat s;
+      if (::fstat(this->descriptor_, &s) < 0)
+	gold_error(_("%s: fstat failed: %s"),
+		   this->name_.c_str(), strerror(errno));
+      this->size_ = s.st_size;
+      gold_debug(DEBUG_FILES, "Attempt to open %s succeeded",
+		 this->name_.c_str());
+      this->token_.add_writer(task);
+      file_counts_initialize_lock.initialize();
+      Hold_optional_lock hl(file_counts_lock);
+      record_file_read(this->name_);
+    }
+
+  return this->descriptor_ >= 0;
+}
+
+// Open the file with the contents in memory.
+
+bool
+File_read::open(const Task* task, const std::string& name,
+		const unsigned char* contents, off_t size)
+{
+  gold_assert(this->token_.is_writable()
+	      && this->descriptor_ < 0
+	      && !this->is_descriptor_opened_
+	      && this->name_.empty());
+  this->name_ = name;
+  this->whole_file_view_ = new View(0, size, contents, 0, false,
+				    View::DATA_NOT_OWNED);
+  this->add_view(this->whole_file_view_);
+  this->size_ = size;
+  this->token_.add_writer(task);
+  return true;
+}
+
+// Reopen a descriptor if necessary.
+
+void
+File_read::reopen_descriptor()
+{
+  if (!this->is_descriptor_opened_)
+    {
+      this->descriptor_ = open_descriptor(this->descriptor_,
+					  this->name_.c_str(),
+					  O_RDONLY);
+      if (this->descriptor_ < 0)
+	gold_fatal(_("could not reopen file %s"), this->name_.c_str());
+      this->is_descriptor_opened_ = true;
+    }
+}
+
+// Release the file.  This is called when we are done with the file in
+// a Task.
+
+void
+File_read::release()
+{
+  gold_assert(this->is_locked());
+
+  if (!parameters->options_valid() || parameters->options().stats())
+    {
+      file_counts_initialize_lock.initialize();
+      Hold_optional_lock hl(file_counts_lock);
+      File_read::total_mapped_bytes += this->mapped_bytes_;
+      File_read::current_mapped_bytes += this->mapped_bytes_;
+      if (File_read::current_mapped_bytes > File_read::maximum_mapped_bytes)
+	File_read::maximum_mapped_bytes = File_read::current_mapped_bytes;
+    }
+
+  this->mapped_bytes_ = 0;
+
+  // Only clear views if there is only one attached object.  Otherwise
+  // we waste time trying to clear cached archive views.  Similarly
+  // for releasing the descriptor.
+  if (this->object_count_ <= 1)
+    {
+      this->clear_views(CLEAR_VIEWS_NORMAL);
+      if (this->is_descriptor_opened_)
+	{
+	  release_descriptor(this->descriptor_, false);
+	  this->is_descriptor_opened_ = false;
+	}
+    }
+
+  this->released_ = true;
+}
+
+// Lock the file.
+
+void
+File_read::lock(const Task* task)
+{
+  gold_assert(this->released_);
+  gold_debug(DEBUG_FILES, "Locking file \"%s\"", this->name_.c_str());
+  this->token_.add_writer(task);
+  this->released_ = false;
+}
+
+// Unlock the file.
+
+void
+File_read::unlock(const Task* task)
+{
+  gold_debug(DEBUG_FILES, "Unlocking file \"%s\"", this->name_.c_str());
+  this->release();
+  this->token_.remove_writer(task);
+}
+
+// Return whether the file is locked.
+
+bool
+File_read::is_locked() const
+{
+  if (!this->token_.is_writable())
+    return true;
+  // The file is not locked, so it should have been released.
+  gold_assert(this->released_);
+  return false;
+}
+
+// See if we have a view which covers the file starting at START for
+// SIZE bytes.  Return a pointer to the View if found, NULL if not.
+// If BYTESHIFT is not -1U, the returned View must have the specified
+// byte shift; otherwise, it may have any byte shift.  If VSHIFTED is
+// not NULL, this sets *VSHIFTED to a view which would have worked if
+// not for the requested BYTESHIFT.
+
+inline File_read::View*
+File_read::find_view(off_t start, section_size_type size,
+		     unsigned int byteshift, File_read::View** vshifted) const
+{
+  gold_assert(start <= this->size_
+	      && (static_cast<unsigned long long>(size)
+		  <= static_cast<unsigned long long>(this->size_ - start)));
+
+  if (vshifted != NULL)
+    *vshifted = NULL;
+
+  // If we have the whole file mmapped, and the alignment is right,
+  // we can return it.
+  if (this->whole_file_view_)
+    if (byteshift == -1U || byteshift == 0)
+      return this->whole_file_view_;
+
+  off_t page = File_read::page_offset(start);
+
+  unsigned int bszero = 0;
+  Views::const_iterator p = this->views_.upper_bound(std::make_pair(page - 1,
+								    bszero));
+
+  while (p != this->views_.end() && p->first.first <= page)
+    {
+      if (p->second->start() <= start
+	  && (p->second->start() + static_cast<off_t>(p->second->size())
+	      >= start + static_cast<off_t>(size)))
+	{
+	  if (byteshift == -1U || byteshift == p->second->byteshift())
+	    {
+	      p->second->set_accessed();
+	      return p->second;
+	    }
+
+	  if (vshifted != NULL && *vshifted == NULL)
+	    *vshifted = p->second;
+	}
+
+      ++p;
+    }
+
+  return NULL;
+}
+
+// Read SIZE bytes from the file starting at offset START.  Read into
+// the buffer at P.
+
+void
+File_read::do_read(off_t start, section_size_type size, void* p)
+{
+  ssize_t bytes;
+  if (this->whole_file_view_ != NULL)
+    {
+      // See PR 23765 for an example of a testcase that triggers this error.
+      if (((ssize_t) start) < 0)
+	gold_fatal(_("%s: read failed, starting offset (%#llx) less than zero"),
+		   this->filename().c_str(),
+		   static_cast<long long>(start));
+
+      bytes = this->size_ - start;
+      if (static_cast<section_size_type>(bytes) >= size)
+	{
+	  memcpy(p, this->whole_file_view_->data() + start, size);
+	  return;
+	}
+    }
+  else
+    {
+      this->reopen_descriptor();
+
+      char *read_ptr = static_cast<char *>(p);
+      off_t read_pos = start;
+      size_t to_read = size;
+      do
+	{
+	  bytes = ::pread(this->descriptor_, read_ptr, to_read, read_pos);
+	  if (bytes < 0)
+	    gold_fatal(_("%s: pread failed: %s"),
+		       this->filename().c_str(), strerror(errno));
+
+	  read_pos += bytes;
+	  read_ptr += bytes;
+	  to_read -= bytes;
+	  if (to_read == 0)
+	    return;
+	}
+      while (bytes > 0);
+
+      bytes = size - to_read;
+    }
+
+  gold_fatal(_("%s: file too short: read only %lld of %lld bytes at %lld"),
+	     this->filename().c_str(),
+	     static_cast<long long>(bytes),
+	     static_cast<long long>(size),
+	     static_cast<long long>(start));
+}
+
+// Read data from the file.
+
+void
+File_read::read(off_t start, section_size_type size, void* p)
+{
+  const File_read::View* pv = this->find_view(start, size, -1U, NULL);
+  if (pv != NULL)
+    {
+      memcpy(p, pv->data() + (start - pv->start() + pv->byteshift()), size);
+      return;
+    }
+
+  this->do_read(start, size, p);
+}
+
+// Add a new view.  There may already be an existing view at this
+// offset.  If there is, the new view will be larger, and should
+// replace the old view.
+
+void
+File_read::add_view(File_read::View* v)
+{
+  std::pair<Views::iterator, bool> ins =
+    this->views_.insert(std::make_pair(std::make_pair(v->start(),
+						      v->byteshift()),
+				       v));
+  if (ins.second)
+    return;
+
+  // There was an existing view at this offset.  It must not be large
+  // enough.  We can't delete it here, since something might be using
+  // it; we put it on a list to be deleted when the file is unlocked.
+  File_read::View* vold = ins.first->second;
+  gold_assert(vold->size() < v->size());
+  if (vold->should_cache())
+    {
+      v->set_cache();
+      vold->clear_cache();
+    }
+  this->saved_views_.push_back(vold);
+
+  ins.first->second = v;
+}
+
+// Make a new view with a specified byteshift, reading the data from
+// the file.
+
+File_read::View*
+File_read::make_view(off_t start, section_size_type size,
+		     unsigned int byteshift, bool cache)
+{
+  gold_assert(size > 0);
+  gold_assert(start <= this->size_
+	      && (static_cast<unsigned long long>(size)
+		  <= static_cast<unsigned long long>(this->size_ - start)));
+
+  off_t poff = File_read::page_offset(start);
+
+  section_size_type psize = File_read::pages(size + (start - poff));
+
+  if (poff + static_cast<off_t>(psize) >= this->size_)
+    {
+      psize = this->size_ - poff;
+      gold_assert(psize >= size);
+    }
+
+  void* p;
+  View::Data_ownership ownership;
+  if (byteshift != 0)
+    {
+      p = malloc(psize + byteshift);
+      if (p == NULL)
+	gold_nomem();
+      memset(p, 0, byteshift);
+      this->do_read(poff, psize, static_cast<unsigned char*>(p) + byteshift);
+      ownership = View::DATA_ALLOCATED_ARRAY;
+    }
+  else
+    {
+      this->reopen_descriptor();
+      p = ::mmap(NULL, psize, PROT_READ, MAP_PRIVATE, this->descriptor_, poff);
+      if (p != MAP_FAILED)
+	{
+	  ownership = View::DATA_MMAPPED;
+	  this->mapped_bytes_ += psize;
+	}
+      else
+	{
+	  p = malloc(psize);
+	  if (p == NULL)
+	    gold_nomem();
+	  this->do_read(poff, psize, p);
+	  ownership = View::DATA_ALLOCATED_ARRAY;
+	}
+    }
+
+  const unsigned char* pbytes = static_cast<const unsigned char*>(p);
+  File_read::View* v = new File_read::View(poff, psize, pbytes, byteshift,
+					   cache, ownership);
+
+  this->add_view(v);
+
+  return v;
+}
+
+// Find a View or make a new one, shifted as required by the file
+// offset OFFSET and ALIGNED.
+
+File_read::View*
+File_read::find_or_make_view(off_t offset, off_t start,
+			     section_size_type size, bool aligned, bool cache)
+{
+  // Check that start and end of the view are within the file.
+  if (start > this->size_
+      || (static_cast<unsigned long long>(size)
+	  > static_cast<unsigned long long>(this->size_ - start)))
+    gold_fatal(_("%s: attempt to map %lld bytes at offset %lld exceeds "
+		 "size of file; the file may be corrupt"),
+		   this->filename().c_str(),
+		   static_cast<long long>(size),
+		   static_cast<long long>(start));
+
+  unsigned int byteshift;
+  if (offset == 0)
+    byteshift = 0;
+  else
+    {
+      unsigned int target_size = (!parameters->target_valid()
+				  ? 64
+				  : parameters->target().get_size());
+      byteshift = offset & ((target_size / 8) - 1);
+
+      // Set BYTESHIFT to the number of dummy bytes which must be
+      // inserted before the data in order for this data to be
+      // aligned.
+      if (byteshift != 0)
+	byteshift = (target_size / 8) - byteshift;
+    }
+
+  // If --map-whole-files is set, make sure we have a
+  // whole file view.  Options may not yet be ready, e.g.,
+  // when reading a version script.  We then default to
+  // --no-map-whole-files.
+  if (this->whole_file_view_ == NULL
+      && parameters->options_valid()
+      && parameters->options().map_whole_files())
+    this->whole_file_view_ = this->make_view(0, this->size_, 0, cache);
+
+  // Try to find a View with the required BYTESHIFT.
+  File_read::View* vshifted;
+  File_read::View* v = this->find_view(offset + start, size,
+				       aligned ? byteshift : -1U,
+				       &vshifted);
+  if (v != NULL)
+    {
+      if (cache)
+	v->set_cache();
+      return v;
+    }
+
+  // If VSHIFTED is not NULL, then it has the data we need, but with
+  // the wrong byteshift.
+  v = vshifted;
+  if (v != NULL)
+    {
+      gold_assert(aligned);
+
+      unsigned char* pbytes;
+      pbytes = static_cast<unsigned char*>(malloc(v->size() + byteshift));
+      if (pbytes == NULL)
+	gold_nomem();
+      memset(pbytes, 0, byteshift);
+      memcpy(pbytes + byteshift, v->data() + v->byteshift(), v->size());
+
+      File_read::View* shifted_view =
+	  new File_read::View(v->start(), v->size(), pbytes, byteshift,
+			      cache, View::DATA_ALLOCATED_ARRAY);
+
+      this->add_view(shifted_view);
+      return shifted_view;
+    }
+
+  // Make a new view.  If we don't need an aligned view, use a
+  // byteshift of 0, so that we can use mmap.
+  return this->make_view(offset + start, size,
+			 aligned ? byteshift : 0,
+			 cache);
+}
+
+// Get a view into the file.
+
+const unsigned char*
+File_read::get_view(off_t offset, off_t start, section_size_type size,
+		    bool aligned, bool cache)
+{
+  File_read::View* pv = this->find_or_make_view(offset, start, size,
+						aligned, cache);
+  return pv->data() + (offset + start - pv->start() + pv->byteshift());
+}
+
+File_view*
+File_read::get_lasting_view(off_t offset, off_t start, section_size_type size,
+			    bool aligned, bool cache)
+{
+  File_read::View* pv = this->find_or_make_view(offset, start, size,
+						aligned, cache);
+  pv->lock();
+  return new File_view(*this, pv,
+		       (pv->data()
+			+ (offset + start - pv->start() + pv->byteshift())));
+}
+
+// Use readv to read COUNT entries from RM starting at START.  BASE
+// must be added to all file offsets in RM.
+
+void
+File_read::do_readv(off_t base, const Read_multiple& rm, size_t start,
+		    size_t count)
+{
+  unsigned char discard[File_read::page_size];
+  iovec iov[File_read::max_readv_entries * 2];
+  size_t iov_index = 0;
+
+  off_t first_offset = rm[start].file_offset;
+  off_t last_offset = first_offset;
+  ssize_t want = 0;
+  for (size_t i = 0; i < count; ++i)
+    {
+      const Read_multiple_entry& i_entry(rm[start + i]);
+
+      if (i_entry.file_offset > last_offset)
+	{
+	  size_t skip = i_entry.file_offset - last_offset;
+	  gold_assert(skip <= sizeof discard);
+
+	  iov[iov_index].iov_base = discard;
+	  iov[iov_index].iov_len = skip;
+	  ++iov_index;
+
+	  want += skip;
+	}
+
+      iov[iov_index].iov_base = i_entry.buffer;
+      iov[iov_index].iov_len = i_entry.size;
+      ++iov_index;
+
+      want += i_entry.size;
+
+      last_offset = i_entry.file_offset + i_entry.size;
+    }
+
+  this->reopen_descriptor();
+
+  gold_assert(iov_index < sizeof iov / sizeof iov[0]);
+
+  if (::lseek(this->descriptor_, base + first_offset, SEEK_SET) < 0)
+    gold_fatal(_("%s: lseek failed: %s"),
+	       this->filename().c_str(), strerror(errno));
+
+  ssize_t got = ::readv(this->descriptor_, iov, iov_index);
+
+  if (got < 0)
+    gold_fatal(_("%s: readv failed: %s"),
+	       this->filename().c_str(), strerror(errno));
+  if (got != want)
+    gold_fatal(_("%s: file too short: read only %zd of %zd bytes at %lld"),
+	       this->filename().c_str(),
+	       got, want, static_cast<long long>(base + first_offset));
+}
+
+// Portable IOV_MAX.
+
+#if !defined(HAVE_READV)
+#define GOLD_IOV_MAX 1
+#elif defined(IOV_MAX)
+#define GOLD_IOV_MAX IOV_MAX
+#else
+#define GOLD_IOV_MAX (File_read::max_readv_entries * 2)
+#endif
+
+// Read several pieces of data from the file.
+
+void
+File_read::read_multiple(off_t base, const Read_multiple& rm)
+{
+  static size_t iov_max = GOLD_IOV_MAX;
+  size_t count = rm.size();
+  size_t i = 0;
+  while (i < count)
+    {
+      // Find up to MAX_READV_ENTRIES consecutive entries which are
+      // less than one page apart.
+      const Read_multiple_entry& i_entry(rm[i]);
+      off_t i_off = i_entry.file_offset;
+      off_t end_off = i_off + i_entry.size;
+      size_t j;
+      for (j = i + 1; j < count; ++j)
+	{
+	  if (j - i >= File_read::max_readv_entries || j - i >= iov_max / 2)
+	    break;
+	  const Read_multiple_entry& j_entry(rm[j]);
+	  off_t j_off = j_entry.file_offset;
+	  gold_assert(j_off >= end_off);
+	  off_t j_end_off = j_off + j_entry.size;
+	  if (j_end_off - end_off >= File_read::page_size)
+	    break;
+	  end_off = j_end_off;
+	}
+
+      if (j == i + 1)
+	this->read(base + i_off, i_entry.size, i_entry.buffer);
+      else
+	{
+	  File_read::View* view = this->find_view(base + i_off,
+						  end_off - i_off,
+						  -1U, NULL);
+	  if (view == NULL)
+	    this->do_readv(base, rm, i, j - i);
+	  else
+	    {
+	      const unsigned char* v = (view->data()
+					+ (base + i_off - view->start()
+					   + view->byteshift()));
+	      for (size_t k = i; k < j; ++k)
+		{
+		  const Read_multiple_entry& k_entry(rm[k]);
+		  gold_assert((convert_to_section_size_type(k_entry.file_offset
+							   - i_off)
+			       + k_entry.size)
+			      <= convert_to_section_size_type(end_off
+							      - i_off));
+		  memcpy(k_entry.buffer,
+			 v + (k_entry.file_offset - i_off),
+			 k_entry.size);
+		}
+	    }
+	}
+
+      i = j;
+    }
+}
+
+// Mark all views as no longer cached.
+
+void
+File_read::clear_view_cache_marks()
+{
+  // Just ignore this if there are multiple objects associated with
+  // the file.  Otherwise we will wind up uncaching and freeing some
+  // views for other objects.
+  if (this->object_count_ > 1)
+    return;
+
+  for (Views::iterator p = this->views_.begin();
+       p != this->views_.end();
+       ++p)
+    p->second->clear_cache();
+  for (Saved_views::iterator p = this->saved_views_.begin();
+       p != this->saved_views_.end();
+       ++p)
+    (*p)->clear_cache();
+}
+
+// Remove all the file views.  For a file which has multiple
+// associated objects (i.e., an archive), we keep accessed views
+// around until next time, in the hopes that they will be useful for
+// the next object.
+
+void
+File_read::clear_views(Clear_views_mode mode)
+{
+  bool keep_files_mapped = (parameters->options_valid()
+			    && parameters->options().keep_files_mapped());
+  Views::iterator p = this->views_.begin();
+  while (p != this->views_.end())
+    {
+      bool should_delete;
+      if (p->second->is_locked() || p->second->is_permanent_view())
+	should_delete = false;
+      else if (mode == CLEAR_VIEWS_ALL)
+	should_delete = true;
+      else if ((p->second->should_cache()
+		|| p->second == this->whole_file_view_)
+	       && keep_files_mapped)
+	should_delete = false;
+      else if (this->object_count_ > 1
+	       && p->second->accessed()
+	       && mode != CLEAR_VIEWS_ARCHIVE)
+	should_delete = false;
+      else
+	should_delete = true;
+
+      if (should_delete)
+	{
+	  if (p->second == this->whole_file_view_)
+	    this->whole_file_view_ = NULL;
+	  delete p->second;
+
+	  // map::erase invalidates only the iterator to the deleted
+	  // element.
+	  Views::iterator pe = p;
+	  ++p;
+	  this->views_.erase(pe);
+	}
+      else
+	{
+	  p->second->clear_accessed();
+	  ++p;
+	}
+    }
+
+  Saved_views::iterator q = this->saved_views_.begin();
+  while (q != this->saved_views_.end())
+    {
+      if (!(*q)->is_locked())
+	{
+	  delete *q;
+	  q = this->saved_views_.erase(q);
+	}
+      else
+	{
+	  gold_assert(mode != CLEAR_VIEWS_ALL);
+	  ++q;
+	}
+    }
+}
+
+// Print statistical information to stderr.  This is used for --stats.
+
+void
+File_read::print_stats()
+{
+  fprintf(stderr, _("%s: total bytes mapped for read: %llu\n"),
+	  program_name, File_read::total_mapped_bytes);
+  fprintf(stderr, _("%s: maximum bytes mapped for read at one time: %llu\n"),
+	  program_name, File_read::maximum_mapped_bytes);
+}
+
+// Class File_view.
+
+File_view::~File_view()
+{
+  gold_assert(this->file_.is_locked());
+  this->view_->unlock();
+}
+
+// Class Input_file.
+
+// Create a file given just the filename.
+
+Input_file::Input_file(const char* name)
+  : found_name_(), file_(), is_in_sysroot_(false), format_(FORMAT_NONE)
+{
+  this->input_argument_ =
+    new Input_file_argument(name, Input_file_argument::INPUT_FILE_TYPE_FILE,
+			    "", false, Position_dependent_options());
+}
+
+// Create a file for testing.
+
+Input_file::Input_file(const Task* task, const char* name,
+		       const unsigned char* contents, off_t size)
+  : file_()
+{
+  this->input_argument_ =
+    new Input_file_argument(name, Input_file_argument::INPUT_FILE_TYPE_FILE,
+			    "", false, Position_dependent_options());
+  bool ok = this->file_.open(task, name, contents, size);
+  gold_assert(ok);
+}
+
+// Return the position dependent options in force for this file.
+
+const Position_dependent_options&
+Input_file::options() const
+{
+  return this->input_argument_->options();
+}
+
+// Return the name given by the user.  For -lc this will return "c".
+
+const char*
+Input_file::name() const
+{
+  return this->input_argument_->name();
+}
+
+// Return whether this file is in a system directory.
+
+bool
+Input_file::is_in_system_directory() const
+{
+  if (this->is_in_sysroot())
+    return true;
+  return parameters->options().is_in_system_directory(this->filename());
+}
+
+// Return whether we are only reading symbols.
+
+bool
+Input_file::just_symbols() const
+{
+  return this->input_argument_->just_symbols();
+}
+
+// Return whether this is a file that we will search for in the list
+// of directories.
+
+bool
+Input_file::will_search_for() const
+{
+  return (!IS_ABSOLUTE_PATH(this->input_argument_->name())
+	  && (this->input_argument_->is_lib()
+	      || this->input_argument_->is_searched_file()
+	      || this->input_argument_->extra_search_path() != NULL));
+}
+
+// Return the file last modification time.  Calls gold_fatal if the stat
+// system call failed.
+
+Timespec
+File_read::get_mtime()
+{
+  struct stat file_stat;
+  this->reopen_descriptor();
+
+  if (fstat(this->descriptor_, &file_stat) < 0)
+    gold_fatal(_("%s: stat failed: %s"), this->name_.c_str(),
+	       strerror(errno));
+#ifdef HAVE_STAT_ST_MTIM
+  return Timespec(file_stat.st_mtim.tv_sec, file_stat.st_mtim.tv_nsec);
+#else
+  return Timespec(file_stat.st_mtime, 0);
+#endif
+}
+
+// Try to find a file in the extra search dirs.  Returns true on success.
+
+bool
+Input_file::try_extra_search_path(int* pindex,
+				  const Input_file_argument* input_argument,
+				  std::string filename, std::string* found_name,
+				  std::string* namep)
+{
+  if (input_argument->extra_search_path() == NULL)
+    return false;
+
+  std::string name = input_argument->extra_search_path();
+  if (!IS_DIR_SEPARATOR(name[name.length() - 1]))
+    name += '/';
+  name += filename;
+
+  struct stat dummy_stat;
+  if (*pindex > 0 || ::stat(name.c_str(), &dummy_stat) < 0)
+    return false;
+
+  *found_name = filename;
+  *namep = name;
+  return true;
+}
+
+// Find the actual file.
+// If the filename is not absolute, we assume it is in the current
+// directory *except* when:
+//    A) input_argument_->is_lib() is true;
+//    B) input_argument_->is_searched_file() is true; or
+//    C) input_argument_->extra_search_path() is not empty.
+// In each, we look in extra_search_path + library_path to find
+// the file location, rather than the current directory.
+
+bool
+Input_file::find_file(const Dirsearch& dirpath, int* pindex,
+		      const Input_file_argument* input_argument,
+		      bool* is_in_sysroot,
+		      std::string* found_name, std::string* namep)
+{
+  std::string name;
+
+  // Case 1: name is an absolute file, just try to open it
+  // Case 2: name is relative but is_lib is false, is_searched_file is false,
+  //         and extra_search_path is empty
+  if (IS_ABSOLUTE_PATH(input_argument->name())
+      || (!input_argument->is_lib()
+	  && !input_argument->is_searched_file()
+	  && input_argument->extra_search_path() == NULL))
+    {
+      name = input_argument->name();
+      *found_name = name;
+      *namep = name;
+      return true;
+    }
+  // Case 3: is_lib is true or is_searched_file is true
+  else if (input_argument->is_lib()
+	   || input_argument->is_searched_file())
+    {
+      std::vector<std::string> names;
+      names.reserve(2);
+      if (input_argument->is_lib())
+	{
+	  std::string prefix = "lib";
+	  prefix += input_argument->name();
+	  if (parameters->options().is_static()
+	      || !input_argument->options().Bdynamic())
+	    names.push_back(prefix + ".a");
+	  else
+	    {
+	      names.push_back(prefix + ".so");
+	      names.push_back(prefix + ".a");
+	    }
+	}
+      else
+	names.push_back(input_argument->name());
+
+      for (std::vector<std::string>::const_iterator n = names.begin();
+	   n != names.end();
+	   ++n)
+	if (Input_file::try_extra_search_path(pindex, input_argument, *n,
+					      found_name, namep))
+	  return true;
+
+      // It is not in the extra_search_path.
+      name = dirpath.find(names, is_in_sysroot, pindex, found_name);
+      if (name.empty())
+	{
+	  gold_error(_("cannot find %s%s"),
+		     input_argument->is_lib() ? "-l" : "",
+		     input_argument->name());
+	  return false;
+	}
+      *namep = name;
+      return true;
+    }
+  // Case 4: extra_search_path is not empty
+  else
+    {
+      gold_assert(input_argument->extra_search_path() != NULL);
+
+      if (try_extra_search_path(pindex, input_argument, input_argument->name(),
+				found_name, namep))
+	return true;
+
+      // extra_search_path failed, so check the normal search-path.
+      int index = *pindex;
+      if (index > 0)
+	--index;
+      name = dirpath.find(std::vector<std::string>(1, input_argument->name()),
+			  is_in_sysroot, &index, found_name);
+      if (name.empty())
+	{
+	  gold_error(_("cannot find %s"),
+		     input_argument->name());
+	  return false;
+	}
+      *namep = name;
+      *pindex = index + 1;
+      return true;
+    }
+}
+
+// Open the file.
+
+bool
+Input_file::open(const Dirsearch& dirpath, const Task* task, int* pindex)
+{
+  std::string name;
+  if (!Input_file::find_file(dirpath, pindex, this->input_argument_,
+			     &this->is_in_sysroot_, &this->found_name_, &name))
+    return false;
+
+  // Now that we've figured out where the file lives, try to open it.
+
+  General_options::Object_format format =
+    this->input_argument_->options().format_enum();
+  bool ok;
+  if (format == General_options::OBJECT_FORMAT_ELF)
+    {
+      ok = this->file_.open(task, name);
+      this->format_ = FORMAT_ELF;
+    }
+  else
+    {
+      gold_assert(format == General_options::OBJECT_FORMAT_BINARY);
+      ok = this->open_binary(task, name);
+      this->format_ = FORMAT_BINARY;
+    }
+
+  if (!ok)
+    {
+      gold_error(_("cannot open %s: %s"),
+		 name.c_str(), strerror(errno));
+      this->format_ = FORMAT_NONE;
+      return false;
+    }
+
+  return true;
+}
+
+// Open a file for --format binary.
+
+bool
+Input_file::open_binary(const Task* task, const std::string& name)
+{
+  // In order to open a binary file, we need machine code, size, and
+  // endianness.  We may not have a valid target at this point, in
+  // which case we use the default target.
+  parameters_force_valid_target();
+  const Target& target(parameters->target());
+
+  Binary_to_elf binary_to_elf(target.machine_code(),
+			      target.get_size(),
+			      target.is_big_endian(),
+			      name);
+  if (!binary_to_elf.convert(task))
+    return false;
+  return this->file_.open(task, name, binary_to_elf.converted_data_leak(),
+			  binary_to_elf.converted_size());
+}
+
+void
+File_read::record_file_read(const std::string& name)
+{
+  File_read::files_read.push_back(name);
+}
+
+void
+File_read::write_dependency_file(const char* dependency_file_name,
+				 const char* output_file_name)
+{
+  FILE *depfile = fopen(dependency_file_name, "w");
+
+  fprintf(depfile, "%s:", output_file_name);
+  for (std::vector<std::string>::const_iterator it = files_read.begin();
+       it != files_read.end();
+       ++it)
+    fprintf(depfile, " \\\n  %s", it->c_str());
+  fprintf(depfile, "\n");
+
+  for (std::vector<std::string>::const_iterator it = files_read.begin();
+       it != files_read.end();
+       ++it)
+    fprintf(depfile, "\n%s:\n", it->c_str());
+
+  fclose(depfile);
+}
+
+} // End namespace gold.
Index: toolchains-1.7.1/sources/GNU/binutils/create-2.37-CVE-2019-1010204-patch/create.patch.sh
===================================================================
--- toolchains-1.7.1/sources/GNU/binutils/create-2.37-CVE-2019-1010204-patch/create.patch.sh	(nonexistent)
+++ toolchains-1.7.1/sources/GNU/binutils/create-2.37-CVE-2019-1010204-patch/create.patch.sh	(revision 343)
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+VERSION=2.37
+
+tar --files-from=file.list -xJvf ../binutils-$VERSION.tar.xz
+mv binutils-$VERSION binutils-$VERSION-orig
+
+cp -rf ./binutils-$VERSION-new ./binutils-$VERSION
+
+diff -b --unified -Nr  binutils-$VERSION-orig  binutils-$VERSION > binutils-$VERSION-CVE-2019-1010204.patch
+
+mv binutils-$VERSION-CVE-2019-1010204.patch ../patches
+
+rm -rf ./binutils-$VERSION
+rm -rf ./binutils-$VERSION-orig

Property changes on: toolchains-1.7.1/sources/GNU/binutils/create-2.37-CVE-2019-1010204-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: toolchains-1.7.1/sources/GNU/binutils/create-2.37-CVE-2019-1010204-patch/file.list
===================================================================
--- toolchains-1.7.1/sources/GNU/binutils/create-2.37-CVE-2019-1010204-patch/file.list	(nonexistent)
+++ toolchains-1.7.1/sources/GNU/binutils/create-2.37-CVE-2019-1010204-patch/file.list	(revision 343)
@@ -0,0 +1 @@
+binutils-2.37/gold/fileread.cc
Index: toolchains-1.7.1/sources/GNU/binutils/create-2.37-aarch64-ifunc-patch/binutils-2.37-new/bfd/elfnn-aarch64.c
===================================================================
--- toolchains-1.7.1/sources/GNU/binutils/create-2.37-aarch64-ifunc-patch/binutils-2.37-new/bfd/elfnn-aarch64.c	(nonexistent)
+++ toolchains-1.7.1/sources/GNU/binutils/create-2.37-aarch64-ifunc-patch/binutils-2.37-new/bfd/elfnn-aarch64.c	(revision 343)
@@ -0,0 +1,10115 @@
+/* AArch64-specific support for NN-bit ELF.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
+   Contributed by ARM Ltd.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+/* Notes on implementation:
+
+  Thread Local Store (TLS)
+
+  Overview:
+
+  The implementation currently supports both traditional TLS and TLS
+  descriptors, but only general dynamic (GD).
+
+  For traditional TLS the assembler will present us with code
+  fragments of the form:
+
+  adrp x0, :tlsgd:foo
+			   R_AARCH64_TLSGD_ADR_PAGE21(foo)
+  add  x0, :tlsgd_lo12:foo
+			   R_AARCH64_TLSGD_ADD_LO12_NC(foo)
+  bl   __tls_get_addr
+  nop
+
+  For TLS descriptors the assembler will present us with code
+  fragments of the form:
+
+  adrp	x0, :tlsdesc:foo		      R_AARCH64_TLSDESC_ADR_PAGE21(foo)
+  ldr	x1, [x0, #:tlsdesc_lo12:foo]	      R_AARCH64_TLSDESC_LD64_LO12(foo)
+  add	x0, x0, #:tlsdesc_lo12:foo	      R_AARCH64_TLSDESC_ADD_LO12(foo)
+  .tlsdesccall foo
+  blr	x1				      R_AARCH64_TLSDESC_CALL(foo)
+
+  The relocations R_AARCH64_TLSGD_{ADR_PREL21,ADD_LO12_NC} against foo
+  indicate that foo is thread local and should be accessed via the
+  traditional TLS mechanims.
+
+  The relocations R_AARCH64_TLSDESC_{ADR_PAGE21,LD64_LO12_NC,ADD_LO12_NC}
+  against foo indicate that 'foo' is thread local and should be accessed
+  via a TLS descriptor mechanism.
+
+  The precise instruction sequence is only relevant from the
+  perspective of linker relaxation which is currently not implemented.
+
+  The static linker must detect that 'foo' is a TLS object and
+  allocate a double GOT entry. The GOT entry must be created for both
+  global and local TLS symbols. Note that this is different to none
+  TLS local objects which do not need a GOT entry.
+
+  In the traditional TLS mechanism, the double GOT entry is used to
+  provide the tls_index structure, containing module and offset
+  entries. The static linker places the relocation R_AARCH64_TLS_DTPMOD
+  on the module entry. The loader will subsequently fixup this
+  relocation with the module identity.
+
+  For global traditional TLS symbols the static linker places an
+  R_AARCH64_TLS_DTPREL relocation on the offset entry. The loader
+  will subsequently fixup the offset. For local TLS symbols the static
+  linker fixes up offset.
+
+  In the TLS descriptor mechanism the double GOT entry is used to
+  provide the descriptor. The static linker places the relocation
+  R_AARCH64_TLSDESC on the first GOT slot. The loader will
+  subsequently fix this up.
+
+  Implementation:
+
+  The handling of TLS symbols is implemented across a number of
+  different backend functions. The following is a top level view of
+  what processing is performed where.
+
+  The TLS implementation maintains state information for each TLS
+  symbol. The state information for local and global symbols is kept
+  in different places. Global symbols use generic BFD structures while
+  local symbols use backend specific structures that are allocated and
+  maintained entirely by the backend.
+
+  The flow:
+
+  elfNN_aarch64_check_relocs()
+
+  This function is invoked for each relocation.
+
+  The TLS relocations R_AARCH64_TLSGD_{ADR_PREL21,ADD_LO12_NC} and
+  R_AARCH64_TLSDESC_{ADR_PAGE21,LD64_LO12_NC,ADD_LO12_NC} are
+  spotted. One time creation of local symbol data structures are
+  created when the first local symbol is seen.
+
+  The reference count for a symbol is incremented.  The GOT type for
+  each symbol is marked as general dynamic.
+
+  elfNN_aarch64_allocate_dynrelocs ()
+
+  For each global with positive reference count we allocate a double
+  GOT slot. For a traditional TLS symbol we allocate space for two
+  relocation entries on the GOT, for a TLS descriptor symbol we
+  allocate space for one relocation on the slot. Record the GOT offset
+  for this symbol.
+
+  elfNN_aarch64_size_dynamic_sections ()
+
+  Iterate all input BFDS, look for in the local symbol data structure
+  constructed earlier for local TLS symbols and allocate them double
+  GOT slots along with space for a single GOT relocation. Update the
+  local symbol structure to record the GOT offset allocated.
+
+  elfNN_aarch64_relocate_section ()
+
+  Calls elfNN_aarch64_final_link_relocate ()
+
+  Emit the relevant TLS relocations against the GOT for each TLS
+  symbol. For local TLS symbols emit the GOT offset directly. The GOT
+  relocations are emitted once the first time a TLS symbol is
+  encountered. The implementation uses the LSB of the GOT offset to
+  flag that the relevant GOT relocations for a symbol have been
+  emitted. All of the TLS code that uses the GOT offset needs to take
+  care to mask out this flag bit before using the offset.
+
+  elfNN_aarch64_final_link_relocate ()
+
+  Fixup the R_AARCH64_TLSGD_{ADR_PREL21, ADD_LO12_NC} relocations.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+#include "bfdlink.h"
+#include "objalloc.h"
+#include "elf/aarch64.h"
+#include "elfxx-aarch64.h"
+#include "cpu-aarch64.h"
+
+#define ARCH_SIZE	NN
+
+#if ARCH_SIZE == 64
+#define AARCH64_R(NAME)		R_AARCH64_ ## NAME
+#define AARCH64_R_STR(NAME)	"R_AARCH64_" #NAME
+#define HOWTO64(...)		HOWTO (__VA_ARGS__)
+#define HOWTO32(...)		EMPTY_HOWTO (0)
+#define LOG_FILE_ALIGN	3
+#define BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC BFD_RELOC_AARCH64_TLSDESC_LD64_LO12
+#endif
+
+#if ARCH_SIZE == 32
+#define AARCH64_R(NAME)		R_AARCH64_P32_ ## NAME
+#define AARCH64_R_STR(NAME)	"R_AARCH64_P32_" #NAME
+#define HOWTO64(...)		EMPTY_HOWTO (0)
+#define HOWTO32(...)		HOWTO (__VA_ARGS__)
+#define LOG_FILE_ALIGN	2
+#define BFD_RELOC_AARCH64_TLSDESC_LD32_LO12	BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC
+#define R_AARCH64_P32_TLSDESC_ADD_LO12		R_AARCH64_P32_TLSDESC_ADD_LO12_NC
+#endif
+
+#define IS_AARCH64_TLS_RELOC(R_TYPE)				\
+  ((R_TYPE) == BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSGD_ADR_PREL21		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSGD_MOVW_G1		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_ADR_PREL21		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLS_DTPMOD			\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLS_DTPREL			\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLS_TPREL			\
+   || IS_AARCH64_TLSDESC_RELOC ((R_TYPE)))
+
+#define IS_AARCH64_TLS_RELAX_RELOC(R_TYPE)			\
+  ((R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADD			\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADD_LO12		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_CALL		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_LD_PREL19		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_LDNN_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_LDR			\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_OFF_G1		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_LDR			\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSGD_ADR_PREL21		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSGD_MOVW_G1		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSIE_LDNN_GOTTPREL_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSLD_ADR_PREL21)
+
+#define IS_AARCH64_TLSDESC_RELOC(R_TYPE)			\
+  ((R_TYPE) == BFD_RELOC_AARCH64_TLSDESC			\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADD			\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADD_LO12		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_CALL		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC	\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_LD64_LO12		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_LDR			\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_LD_PREL19		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC		\
+   || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_OFF_G1)
+
+#define ELIMINATE_COPY_RELOCS 1
+
+/* Return size of a relocation entry.  HTAB is the bfd's
+   elf_aarch64_link_hash_entry.  */
+#define RELOC_SIZE(HTAB) (sizeof (ElfNN_External_Rela))
+
+/* GOT Entry size - 8 bytes in ELF64 and 4 bytes in ELF32.  */
+#define GOT_ENTRY_SIZE			(ARCH_SIZE / 8)
+#define PLT_ENTRY_SIZE			(32)
+#define PLT_SMALL_ENTRY_SIZE		(16)
+#define PLT_TLSDESC_ENTRY_SIZE		(32)
+/* PLT sizes with BTI insn.  */
+#define PLT_BTI_SMALL_ENTRY_SIZE	(24)
+/* PLT sizes with PAC insn.  */
+#define PLT_PAC_SMALL_ENTRY_SIZE	(24)
+/* PLT sizes with BTI and PAC insn.  */
+#define PLT_BTI_PAC_SMALL_ENTRY_SIZE	(24)
+
+/* Encoding of the nop instruction.  */
+#define INSN_NOP 0xd503201f
+
+#define aarch64_compute_jump_table_size(htab)		\
+  (((htab)->root.srelplt == NULL) ? 0			\
+   : (htab)->root.srelplt->reloc_count * GOT_ENTRY_SIZE)
+
+/* The first entry in a procedure linkage table looks like this
+   if the distance between the PLTGOT and the PLT is < 4GB use
+   these PLT entries. Note that the dynamic linker gets &PLTGOT[2]
+   in x16 and needs to work out PLTGOT[1] by using an address of
+   [x16,#-GOT_ENTRY_SIZE].  */
+static const bfd_byte elfNN_aarch64_small_plt0_entry[PLT_ENTRY_SIZE] =
+{
+  0xf0, 0x7b, 0xbf, 0xa9,	/* stp x16, x30, [sp, #-16]!  */
+  0x10, 0x00, 0x00, 0x90,	/* adrp x16, (GOT+16)  */
+#if ARCH_SIZE == 64
+  0x11, 0x0A, 0x40, 0xf9,	/* ldr x17, [x16, #PLT_GOT+0x10]  */
+  0x10, 0x42, 0x00, 0x91,	/* add x16, x16,#PLT_GOT+0x10   */
+#else
+  0x11, 0x0A, 0x40, 0xb9,	/* ldr w17, [x16, #PLT_GOT+0x8]  */
+  0x10, 0x22, 0x00, 0x11,	/* add w16, w16,#PLT_GOT+0x8   */
+#endif
+  0x20, 0x02, 0x1f, 0xd6,	/* br x17  */
+  0x1f, 0x20, 0x03, 0xd5,	/* nop */
+  0x1f, 0x20, 0x03, 0xd5,	/* nop */
+  0x1f, 0x20, 0x03, 0xd5,	/* nop */
+};
+
+static const bfd_byte elfNN_aarch64_small_plt0_bti_entry[PLT_ENTRY_SIZE] =
+{
+  0x5f, 0x24, 0x03, 0xd5,	/* bti c.  */
+  0xf0, 0x7b, 0xbf, 0xa9,	/* stp x16, x30, [sp, #-16]!  */
+  0x10, 0x00, 0x00, 0x90,	/* adrp x16, (GOT+16)  */
+#if ARCH_SIZE == 64
+  0x11, 0x0A, 0x40, 0xf9,	/* ldr x17, [x16, #PLT_GOT+0x10]  */
+  0x10, 0x42, 0x00, 0x91,	/* add x16, x16,#PLT_GOT+0x10   */
+#else
+  0x11, 0x0A, 0x40, 0xb9,	/* ldr w17, [x16, #PLT_GOT+0x8]  */
+  0x10, 0x22, 0x00, 0x11,	/* add w16, w16,#PLT_GOT+0x8   */
+#endif
+  0x20, 0x02, 0x1f, 0xd6,	/* br x17  */
+  0x1f, 0x20, 0x03, 0xd5,	/* nop */
+  0x1f, 0x20, 0x03, 0xd5,	/* nop */
+};
+
+/* Per function entry in a procedure linkage table looks like this
+   if the distance between the PLTGOT and the PLT is < 4GB use
+   these PLT entries.  Use BTI versions of the PLTs when enabled.  */
+static const bfd_byte elfNN_aarch64_small_plt_entry[PLT_SMALL_ENTRY_SIZE] =
+{
+  0x10, 0x00, 0x00, 0x90,	/* adrp x16, PLTGOT + n * 8  */
+#if ARCH_SIZE == 64
+  0x11, 0x02, 0x40, 0xf9,	/* ldr x17, [x16, PLTGOT + n * 8] */
+  0x10, 0x02, 0x00, 0x91,	/* add x16, x16, :lo12:PLTGOT + n * 8  */
+#else
+  0x11, 0x02, 0x40, 0xb9,	/* ldr w17, [x16, PLTGOT + n * 4] */
+  0x10, 0x02, 0x00, 0x11,	/* add w16, w16, :lo12:PLTGOT + n * 4  */
+#endif
+  0x20, 0x02, 0x1f, 0xd6,	/* br x17.  */
+};
+
+static const bfd_byte
+elfNN_aarch64_small_plt_bti_entry[PLT_BTI_SMALL_ENTRY_SIZE] =
+{
+  0x5f, 0x24, 0x03, 0xd5,	/* bti c.  */
+  0x10, 0x00, 0x00, 0x90,	/* adrp x16, PLTGOT + n * 8  */
+#if ARCH_SIZE == 64
+  0x11, 0x02, 0x40, 0xf9,	/* ldr x17, [x16, PLTGOT + n * 8] */
+  0x10, 0x02, 0x00, 0x91,	/* add x16, x16, :lo12:PLTGOT + n * 8  */
+#else
+  0x11, 0x02, 0x40, 0xb9,	/* ldr w17, [x16, PLTGOT + n * 4] */
+  0x10, 0x02, 0x00, 0x11,	/* add w16, w16, :lo12:PLTGOT + n * 4  */
+#endif
+  0x20, 0x02, 0x1f, 0xd6,	/* br x17.  */
+  0x1f, 0x20, 0x03, 0xd5,	/* nop */
+};
+
+static const bfd_byte
+elfNN_aarch64_small_plt_pac_entry[PLT_PAC_SMALL_ENTRY_SIZE] =
+{
+  0x10, 0x00, 0x00, 0x90,	/* adrp x16, PLTGOT + n * 8  */
+#if ARCH_SIZE == 64
+  0x11, 0x02, 0x40, 0xf9,	/* ldr x17, [x16, PLTGOT + n * 8] */
+  0x10, 0x02, 0x00, 0x91,	/* add x16, x16, :lo12:PLTGOT + n * 8  */
+#else
+  0x11, 0x02, 0x40, 0xb9,	/* ldr w17, [x16, PLTGOT + n * 4] */
+  0x10, 0x02, 0x00, 0x11,	/* add w16, w16, :lo12:PLTGOT + n * 4  */
+#endif
+  0x9f, 0x21, 0x03, 0xd5,	/* autia1716 */
+  0x20, 0x02, 0x1f, 0xd6,	/* br x17.  */
+  0x1f, 0x20, 0x03, 0xd5,	/* nop */
+};
+
+static const bfd_byte
+elfNN_aarch64_small_plt_bti_pac_entry[PLT_BTI_PAC_SMALL_ENTRY_SIZE] =
+{
+  0x5f, 0x24, 0x03, 0xd5,	/* bti c.  */
+  0x10, 0x00, 0x00, 0x90,	/* adrp x16, PLTGOT + n * 8  */
+#if ARCH_SIZE == 64
+  0x11, 0x02, 0x40, 0xf9,	/* ldr x17, [x16, PLTGOT + n * 8] */
+  0x10, 0x02, 0x00, 0x91,	/* add x16, x16, :lo12:PLTGOT + n * 8  */
+#else
+  0x11, 0x02, 0x40, 0xb9,	/* ldr w17, [x16, PLTGOT + n * 4] */
+  0x10, 0x02, 0x00, 0x11,	/* add w16, w16, :lo12:PLTGOT + n * 4  */
+#endif
+  0x9f, 0x21, 0x03, 0xd5,	/* autia1716 */
+  0x20, 0x02, 0x1f, 0xd6,	/* br x17.  */
+};
+
+static const bfd_byte
+elfNN_aarch64_tlsdesc_small_plt_entry[PLT_TLSDESC_ENTRY_SIZE] =
+{
+  0xe2, 0x0f, 0xbf, 0xa9,	/* stp x2, x3, [sp, #-16]! */
+  0x02, 0x00, 0x00, 0x90,	/* adrp x2, 0 */
+  0x03, 0x00, 0x00, 0x90,	/* adrp x3, 0 */
+#if ARCH_SIZE == 64
+  0x42, 0x00, 0x40, 0xf9,	/* ldr x2, [x2, #0] */
+  0x63, 0x00, 0x00, 0x91,	/* add x3, x3, 0 */
+#else
+  0x42, 0x00, 0x40, 0xb9,	/* ldr w2, [x2, #0] */
+  0x63, 0x00, 0x00, 0x11,	/* add w3, w3, 0 */
+#endif
+  0x40, 0x00, 0x1f, 0xd6,	/* br x2 */
+  0x1f, 0x20, 0x03, 0xd5,	/* nop */
+  0x1f, 0x20, 0x03, 0xd5,	/* nop */
+};
+
+static const bfd_byte
+elfNN_aarch64_tlsdesc_small_plt_bti_entry[PLT_TLSDESC_ENTRY_SIZE] =
+{
+  0x5f, 0x24, 0x03, 0xd5,	/* bti c.  */
+  0xe2, 0x0f, 0xbf, 0xa9,	/* stp x2, x3, [sp, #-16]! */
+  0x02, 0x00, 0x00, 0x90,	/* adrp x2, 0 */
+  0x03, 0x00, 0x00, 0x90,	/* adrp x3, 0 */
+#if ARCH_SIZE == 64
+  0x42, 0x00, 0x40, 0xf9,	/* ldr x2, [x2, #0] */
+  0x63, 0x00, 0x00, 0x91,	/* add x3, x3, 0 */
+#else
+  0x42, 0x00, 0x40, 0xb9,	/* ldr w2, [x2, #0] */
+  0x63, 0x00, 0x00, 0x11,	/* add w3, w3, 0 */
+#endif
+  0x40, 0x00, 0x1f, 0xd6,	/* br x2 */
+  0x1f, 0x20, 0x03, 0xd5,	/* nop */
+};
+
+#define elf_info_to_howto		elfNN_aarch64_info_to_howto
+#define elf_info_to_howto_rel		elfNN_aarch64_info_to_howto
+
+#define AARCH64_ELF_ABI_VERSION		0
+
+/* In case we're on a 32-bit machine, construct a 64-bit "-1" value.  */
+#define ALL_ONES (~ (bfd_vma) 0)
+
+/* Indexed by the bfd interal reloc enumerators.
+   Therefore, the table needs to be synced with BFD_RELOC_AARCH64_*
+   in reloc.c.   */
+
+static reloc_howto_type elfNN_aarch64_howto_table[] =
+{
+  EMPTY_HOWTO (0),
+
+  /* Basic data relocations.  */
+
+  /* Deprecated, but retained for backwards compatibility.  */
+  HOWTO64 (R_AARCH64_NULL,	/* type */
+	 0,			/* rightshift */
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "R_AARCH64_NULL",	/* name */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0,			/* dst_mask */
+	 false),		/* pcrel_offset */
+  HOWTO (R_AARCH64_NONE,	/* type */
+	 0,			/* rightshift */
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "R_AARCH64_NONE",	/* name */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* .xword: (S+A) */
+  HOWTO64 (AARCH64_R (ABS64),	/* type */
+	 0,			/* rightshift */
+	 4,			/* size (4 = long long) */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (ABS64),	/* name */
+	 false,			/* partial_inplace */
+	 ALL_ONES,		/* src_mask */
+	 ALL_ONES,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* .word: (S+A) */
+  HOWTO (AARCH64_R (ABS32),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (ABS32),	/* name */
+	 false,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* .half:  (S+A) */
+  HOWTO (AARCH64_R (ABS16),	/* type */
+	 0,			/* rightshift */
+	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (ABS16),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* .xword: (S+A-P) */
+  HOWTO64 (AARCH64_R (PREL64),	/* type */
+	 0,			/* rightshift */
+	 4,			/* size (4 = long long) */
+	 64,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (PREL64),	/* name */
+	 false,			/* partial_inplace */
+	 ALL_ONES,		/* src_mask */
+	 ALL_ONES,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* .word: (S+A-P) */
+  HOWTO (AARCH64_R (PREL32),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (PREL32),	/* name */
+	 false,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* .half: (S+A-P) */
+  HOWTO (AARCH64_R (PREL16),	/* type */
+	 0,			/* rightshift */
+	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (PREL16),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* Group relocations to create a 16, 32, 48 or 64 bit
+     unsigned data or abs address inline.  */
+
+  /* MOVZ:   ((S+A) >>  0) & 0xffff */
+  HOWTO (AARCH64_R (MOVW_UABS_G0),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_UABS_G0),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* MOVK:   ((S+A) >>  0) & 0xffff [no overflow check] */
+  HOWTO (AARCH64_R (MOVW_UABS_G0_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_UABS_G0_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* MOVZ:   ((S+A) >> 16) & 0xffff */
+  HOWTO (AARCH64_R (MOVW_UABS_G1),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_UABS_G1),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* MOVK:   ((S+A) >> 16) & 0xffff [no overflow check] */
+  HOWTO64 (AARCH64_R (MOVW_UABS_G1_NC),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_UABS_G1_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* MOVZ:   ((S+A) >> 32) & 0xffff */
+  HOWTO64 (AARCH64_R (MOVW_UABS_G2),	/* type */
+	 32,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_UABS_G2),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* MOVK:   ((S+A) >> 32) & 0xffff [no overflow check] */
+  HOWTO64 (AARCH64_R (MOVW_UABS_G2_NC),	/* type */
+	 32,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_UABS_G2_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* MOVZ:   ((S+A) >> 48) & 0xffff */
+  HOWTO64 (AARCH64_R (MOVW_UABS_G3),	/* type */
+	 48,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_UABS_G3),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Group relocations to create high part of a 16, 32, 48 or 64 bit
+     signed data or abs address inline. Will change instruction
+     to MOVN or MOVZ depending on sign of calculated value.  */
+
+  /* MOV[ZN]:   ((S+A) >>  0) & 0xffff */
+  HOWTO (AARCH64_R (MOVW_SABS_G0),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 17,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_SABS_G0),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* MOV[ZN]:   ((S+A) >> 16) & 0xffff */
+  HOWTO64 (AARCH64_R (MOVW_SABS_G1),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 17,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_SABS_G1),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* MOV[ZN]:   ((S+A) >> 32) & 0xffff */
+  HOWTO64 (AARCH64_R (MOVW_SABS_G2),	/* type */
+	 32,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 17,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_SABS_G2),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Group relocations to create a 16, 32, 48 or 64 bit
+     PC relative address inline.  */
+
+  /* MOV[NZ]:   ((S+A-P) >>  0) & 0xffff */
+  HOWTO (AARCH64_R (MOVW_PREL_G0),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 17,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_PREL_G0),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 true),		/* pcrel_offset */
+
+  /* MOVK:   ((S+A-P) >>  0) & 0xffff [no overflow check] */
+  HOWTO (AARCH64_R (MOVW_PREL_G0_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_PREL_G0_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 true),		/* pcrel_offset */
+
+  /* MOV[NZ]:   ((S+A-P) >> 16) & 0xffff */
+  HOWTO (AARCH64_R (MOVW_PREL_G1),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 17,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_PREL_G1),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 true),		/* pcrel_offset */
+
+  /* MOVK:   ((S+A-P) >> 16) & 0xffff [no overflow check] */
+  HOWTO64 (AARCH64_R (MOVW_PREL_G1_NC),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_PREL_G1_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 true),		/* pcrel_offset */
+
+  /* MOV[NZ]:   ((S+A-P) >> 32) & 0xffff */
+  HOWTO64 (AARCH64_R (MOVW_PREL_G2),	/* type */
+	 32,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 17,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_PREL_G2),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 true),		/* pcrel_offset */
+
+  /* MOVK:   ((S+A-P) >> 32) & 0xffff [no overflow check] */
+  HOWTO64 (AARCH64_R (MOVW_PREL_G2_NC),	/* type */
+	 32,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_PREL_G2_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 true),		/* pcrel_offset */
+
+  /* MOV[NZ]:   ((S+A-P) >> 48) & 0xffff */
+  HOWTO64 (AARCH64_R (MOVW_PREL_G3),	/* type */
+	 48,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_PREL_G3),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 true),		/* pcrel_offset */
+
+/* Relocations to generate 19, 21 and 33 bit PC-relative load/store
+   addresses: PG(x) is (x & ~0xfff).  */
+
+  /* LD-lit: ((S+A-P) >> 2) & 0x7ffff */
+  HOWTO (AARCH64_R (LD_PREL_LO19),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 19,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (LD_PREL_LO19),	/* name */
+	 false,			/* partial_inplace */
+	 0x7ffff,		/* src_mask */
+	 0x7ffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* ADR:    (S+A-P) & 0x1fffff */
+  HOWTO (AARCH64_R (ADR_PREL_LO21),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 21,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (ADR_PREL_LO21),	/* name */
+	 false,			/* partial_inplace */
+	 0x1fffff,		/* src_mask */
+	 0x1fffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* ADRP:   ((PG(S+A)-PG(P)) >> 12) & 0x1fffff */
+  HOWTO (AARCH64_R (ADR_PREL_PG_HI21),	/* type */
+	 12,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 21,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (ADR_PREL_PG_HI21),	/* name */
+	 false,			/* partial_inplace */
+	 0x1fffff,		/* src_mask */
+	 0x1fffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* ADRP:   ((PG(S+A)-PG(P)) >> 12) & 0x1fffff [no overflow check] */
+  HOWTO64 (AARCH64_R (ADR_PREL_PG_HI21_NC),	/* type */
+	 12,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 21,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (ADR_PREL_PG_HI21_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0x1fffff,		/* src_mask */
+	 0x1fffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* ADD:    (S+A) & 0xfff [no overflow check] */
+  HOWTO (AARCH64_R (ADD_ABS_LO12_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (ADD_ABS_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0x3ffc00,		/* src_mask */
+	 0x3ffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD/ST8:  (S+A) & 0xfff */
+  HOWTO (AARCH64_R (LDST8_ABS_LO12_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (LDST8_ABS_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xfff,			/* src_mask */
+	 0xfff,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Relocations for control-flow instructions.  */
+
+  /* TBZ/NZ: ((S+A-P) >> 2) & 0x3fff */
+  HOWTO (AARCH64_R (TSTBR14),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 14,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TSTBR14),	/* name */
+	 false,			/* partial_inplace */
+	 0x3fff,		/* src_mask */
+	 0x3fff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* B.cond: ((S+A-P) >> 2) & 0x7ffff */
+  HOWTO (AARCH64_R (CONDBR19),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 19,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (CONDBR19),	/* name */
+	 false,			/* partial_inplace */
+	 0x7ffff,		/* src_mask */
+	 0x7ffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* B:      ((S+A-P) >> 2) & 0x3ffffff */
+  HOWTO (AARCH64_R (JUMP26),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 26,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (JUMP26),	/* name */
+	 false,			/* partial_inplace */
+	 0x3ffffff,		/* src_mask */
+	 0x3ffffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* BL:     ((S+A-P) >> 2) & 0x3ffffff */
+  HOWTO (AARCH64_R (CALL26),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 26,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (CALL26),	/* name */
+	 false,			/* partial_inplace */
+	 0x3ffffff,		/* src_mask */
+	 0x3ffffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* LD/ST16:  (S+A) & 0xffe */
+  HOWTO (AARCH64_R (LDST16_ABS_LO12_NC),	/* type */
+	 1,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (LDST16_ABS_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffe,			/* src_mask */
+	 0xffe,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD/ST32:  (S+A) & 0xffc */
+  HOWTO (AARCH64_R (LDST32_ABS_LO12_NC),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (LDST32_ABS_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffc,			/* src_mask */
+	 0xffc,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD/ST64:  (S+A) & 0xff8 */
+  HOWTO (AARCH64_R (LDST64_ABS_LO12_NC),	/* type */
+	 3,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (LDST64_ABS_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xff8,			/* src_mask */
+	 0xff8,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD/ST128:  (S+A) & 0xff0 */
+  HOWTO (AARCH64_R (LDST128_ABS_LO12_NC),	/* type */
+	 4,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (LDST128_ABS_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xff0,			/* src_mask */
+	 0xff0,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Set a load-literal immediate field to bits
+     0x1FFFFC of G(S)-P */
+  HOWTO (AARCH64_R (GOT_LD_PREL19),	/* type */
+	 2,				/* rightshift */
+	 2,				/* size (0 = byte,1 = short,2 = long) */
+	 19,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 AARCH64_R_STR (GOT_LD_PREL19),	/* name */
+	 false,				/* partial_inplace */
+	 0xffffe0,			/* src_mask */
+	 0xffffe0,			/* dst_mask */
+	 true),				/* pcrel_offset */
+
+  /* Get to the page for the GOT entry for the symbol
+     (G(S) - P) using an ADRP instruction.  */
+  HOWTO (AARCH64_R (ADR_GOT_PAGE),	/* type */
+	 12,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 21,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (ADR_GOT_PAGE),	/* name */
+	 false,			/* partial_inplace */
+	 0x1fffff,		/* src_mask */
+	 0x1fffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* LD64: GOT offset G(S) & 0xff8  */
+  HOWTO64 (AARCH64_R (LD64_GOT_LO12_NC),	/* type */
+	 3,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (LD64_GOT_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xff8,			/* src_mask */
+	 0xff8,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD32: GOT offset G(S) & 0xffc  */
+  HOWTO32 (AARCH64_R (LD32_GOT_LO12_NC),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (LD32_GOT_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffc,			/* src_mask */
+	 0xffc,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Lower 16 bits of GOT offset for the symbol.  */
+  HOWTO64 (AARCH64_R (MOVW_GOTOFF_G0_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_GOTOFF_G0_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Higher 16 bits of GOT offset for the symbol.  */
+  HOWTO64 (AARCH64_R (MOVW_GOTOFF_G1),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (MOVW_GOTOFF_G1),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD64: GOT offset for the symbol.  */
+  HOWTO64 (AARCH64_R (LD64_GOTOFF_LO15),	/* type */
+	 3,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (LD64_GOTOFF_LO15),	/* name */
+	 false,			/* partial_inplace */
+	 0x7ff8,			/* src_mask */
+	 0x7ff8,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD32: GOT offset to the page address of GOT table.
+     (G(S) - PAGE (_GLOBAL_OFFSET_TABLE_)) & 0x5ffc.  */
+  HOWTO32 (AARCH64_R (LD32_GOTPAGE_LO14),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (LD32_GOTPAGE_LO14),	/* name */
+	 false,			/* partial_inplace */
+	 0x5ffc,		/* src_mask */
+	 0x5ffc,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD64: GOT offset to the page address of GOT table.
+     (G(S) - PAGE (_GLOBAL_OFFSET_TABLE_)) & 0x7ff8.  */
+  HOWTO64 (AARCH64_R (LD64_GOTPAGE_LO15),	/* type */
+	 3,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (LD64_GOTPAGE_LO15),	/* name */
+	 false,			/* partial_inplace */
+	 0x7ff8,		/* src_mask */
+	 0x7ff8,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Get to the page for the GOT entry for the symbol
+     (G(S) - P) using an ADRP instruction.  */
+  HOWTO (AARCH64_R (TLSGD_ADR_PAGE21),	/* type */
+	 12,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 21,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSGD_ADR_PAGE21),	/* name */
+	 false,			/* partial_inplace */
+	 0x1fffff,		/* src_mask */
+	 0x1fffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSGD_ADR_PREL21),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 21,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSGD_ADR_PREL21),	/* name */
+	 false,			/* partial_inplace */
+	 0x1fffff,		/* src_mask */
+	 0x1fffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* ADD: GOT offset G(S) & 0xff8 [no overflow check] */
+  HOWTO (AARCH64_R (TLSGD_ADD_LO12_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSGD_ADD_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xfff,			/* src_mask */
+	 0xfff,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Lower 16 bits of GOT offset to tls_index.  */
+  HOWTO64 (AARCH64_R (TLSGD_MOVW_G0_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSGD_MOVW_G0_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Higher 16 bits of GOT offset to tls_index.  */
+  HOWTO64 (AARCH64_R (TLSGD_MOVW_G1),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSGD_MOVW_G1),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSIE_ADR_GOTTPREL_PAGE21),	/* type */
+	 12,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 21,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSIE_ADR_GOTTPREL_PAGE21),	/* name */
+	 false,			/* partial_inplace */
+	 0x1fffff,		/* src_mask */
+	 0x1fffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO64 (AARCH64_R (TLSIE_LD64_GOTTPREL_LO12_NC),	/* type */
+	 3,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSIE_LD64_GOTTPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xff8,			/* src_mask */
+	 0xff8,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO32 (AARCH64_R (TLSIE_LD32_GOTTPREL_LO12_NC),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSIE_LD32_GOTTPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffc,			/* src_mask */
+	 0xffc,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSIE_LD_GOTTPREL_PREL19),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 19,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSIE_LD_GOTTPREL_PREL19),	/* name */
+	 false,			/* partial_inplace */
+	 0x1ffffc,		/* src_mask */
+	 0x1ffffc,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO64 (AARCH64_R (TLSIE_MOVW_GOTTPREL_G0_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSIE_MOVW_GOTTPREL_G0_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO64 (AARCH64_R (TLSIE_MOVW_GOTTPREL_G1),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSIE_MOVW_GOTTPREL_G1),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* ADD: bit[23:12] of byte offset to module TLS base address.  */
+  HOWTO (AARCH64_R (TLSLD_ADD_DTPREL_HI12),	/* type */
+	 12,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_ADD_DTPREL_HI12),	/* name */
+	 false,			/* partial_inplace */
+	 0xfff,			/* src_mask */
+	 0xfff,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Unsigned 12 bit byte offset to module TLS base address.  */
+  HOWTO (AARCH64_R (TLSLD_ADD_DTPREL_LO12),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_ADD_DTPREL_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0xfff,			/* src_mask */
+	 0xfff,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.  */
+  HOWTO (AARCH64_R (TLSLD_ADD_DTPREL_LO12_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_ADD_DTPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xfff,			/* src_mask */
+	 0xfff,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* ADD: GOT offset G(S) & 0xff8 [no overflow check] */
+  HOWTO (AARCH64_R (TLSLD_ADD_LO12_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_ADD_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xfff,			/* src_mask */
+	 0xfff,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Get to the page for the GOT entry for the symbol
+     (G(S) - P) using an ADRP instruction.  */
+  HOWTO (AARCH64_R (TLSLD_ADR_PAGE21),	/* type */
+	 12,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 21,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_ADR_PAGE21),	/* name */
+	 false,			/* partial_inplace */
+	 0x1fffff,		/* src_mask */
+	 0x1fffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSLD_ADR_PREL21),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 21,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_ADR_PREL21),	/* name */
+	 false,			/* partial_inplace */
+	 0x1fffff,		/* src_mask */
+	 0x1fffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* LD/ST16: bit[11:1] of byte offset to module TLS base address.  */
+  HOWTO64 (AARCH64_R (TLSLD_LDST16_DTPREL_LO12),	/* type */
+	 1,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 11,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_LDST16_DTPREL_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0x1ffc00,		/* src_mask */
+	 0x1ffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Same as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check.  */
+  HOWTO64 (AARCH64_R (TLSLD_LDST16_DTPREL_LO12_NC),	/* type */
+	 1,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 11,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_LDST16_DTPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0x1ffc00,		/* src_mask */
+	 0x1ffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD/ST32: bit[11:2] of byte offset to module TLS base address.  */
+  HOWTO64 (AARCH64_R (TLSLD_LDST32_DTPREL_LO12),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 10,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_LDST32_DTPREL_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0x3ffc00,		/* src_mask */
+	 0x3ffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Same as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check.  */
+  HOWTO64 (AARCH64_R (TLSLD_LDST32_DTPREL_LO12_NC),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 10,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_LDST32_DTPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffc00,		/* src_mask */
+	 0xffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD/ST64: bit[11:3] of byte offset to module TLS base address.  */
+  HOWTO64 (AARCH64_R (TLSLD_LDST64_DTPREL_LO12),	/* type */
+	 3,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 9,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_LDST64_DTPREL_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0x3ffc00,		/* src_mask */
+	 0x3ffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Same as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check.  */
+  HOWTO64 (AARCH64_R (TLSLD_LDST64_DTPREL_LO12_NC),	/* type */
+	 3,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 9,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_LDST64_DTPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0x7fc00,		/* src_mask */
+	 0x7fc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD/ST8: bit[11:0] of byte offset to module TLS base address.  */
+  HOWTO64 (AARCH64_R (TLSLD_LDST8_DTPREL_LO12),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_LDST8_DTPREL_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0x3ffc00,		/* src_mask */
+	 0x3ffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Same as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check.  */
+  HOWTO64 (AARCH64_R (TLSLD_LDST8_DTPREL_LO12_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_LDST8_DTPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0x3ffc00,		/* src_mask */
+	 0x3ffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* MOVZ: bit[15:0] of byte offset to module TLS base address.  */
+  HOWTO (AARCH64_R (TLSLD_MOVW_DTPREL_G0),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G0),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0.  */
+  HOWTO (AARCH64_R (TLSLD_MOVW_DTPREL_G0_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G0_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* MOVZ: bit[31:16] of byte offset to module TLS base address.  */
+  HOWTO (AARCH64_R (TLSLD_MOVW_DTPREL_G1),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G1),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1.  */
+  HOWTO64 (AARCH64_R (TLSLD_MOVW_DTPREL_G1_NC),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G1_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* MOVZ: bit[47:32] of byte offset to module TLS base address.  */
+  HOWTO64 (AARCH64_R (TLSLD_MOVW_DTPREL_G2),	/* type */
+	 32,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G2),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO64 (AARCH64_R (TLSLE_MOVW_TPREL_G2),	/* type */
+	 32,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G2),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSLE_MOVW_TPREL_G1),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G1),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO64 (AARCH64_R (TLSLE_MOVW_TPREL_G1_NC),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G1_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSLE_MOVW_TPREL_G0),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G0),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSLE_MOVW_TPREL_G0_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G0_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSLE_ADD_TPREL_HI12),	/* type */
+	 12,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_ADD_TPREL_HI12),	/* name */
+	 false,			/* partial_inplace */
+	 0xfff,			/* src_mask */
+	 0xfff,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSLE_ADD_TPREL_LO12),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_ADD_TPREL_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0xfff,			/* src_mask */
+	 0xfff,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSLE_ADD_TPREL_LO12_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_ADD_TPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xfff,			/* src_mask */
+	 0xfff,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD/ST16: bit[11:1] of byte offset to module TLS base address.  */
+  HOWTO (AARCH64_R (TLSLE_LDST16_TPREL_LO12),	/* type */
+	 1,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 11,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_LDST16_TPREL_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0x1ffc00,		/* src_mask */
+	 0x1ffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Same as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no overflow check.  */
+  HOWTO (AARCH64_R (TLSLE_LDST16_TPREL_LO12_NC),	/* type */
+	 1,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 11,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_LDST16_TPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0x1ffc00,		/* src_mask */
+	 0x1ffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD/ST32: bit[11:2] of byte offset to module TLS base address.  */
+  HOWTO (AARCH64_R (TLSLE_LDST32_TPREL_LO12),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 10,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_LDST32_TPREL_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0xffc00,		/* src_mask */
+	 0xffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Same as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no overflow check.  */
+  HOWTO (AARCH64_R (TLSLE_LDST32_TPREL_LO12_NC),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 10,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_LDST32_TPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffc00,		/* src_mask */
+	 0xffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD/ST64: bit[11:3] of byte offset to module TLS base address.  */
+  HOWTO (AARCH64_R (TLSLE_LDST64_TPREL_LO12),	/* type */
+	 3,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 9,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_LDST64_TPREL_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0x7fc00,		/* src_mask */
+	 0x7fc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Same as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no overflow check.  */
+  HOWTO (AARCH64_R (TLSLE_LDST64_TPREL_LO12_NC),	/* type */
+	 3,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 9,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_LDST64_TPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0x7fc00,		/* src_mask */
+	 0x7fc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD/ST8: bit[11:0] of byte offset to module TLS base address.  */
+  HOWTO (AARCH64_R (TLSLE_LDST8_TPREL_LO12),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_LDST8_TPREL_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0x3ffc00,		/* src_mask */
+	 0x3ffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* Same as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow check.  */
+  HOWTO (AARCH64_R (TLSLE_LDST8_TPREL_LO12_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 10,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSLE_LDST8_TPREL_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0x3ffc00,		/* src_mask */
+	 0x3ffc00,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSDESC_LD_PREL19),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 19,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC_LD_PREL19),	/* name */
+	 false,			/* partial_inplace */
+	 0x0ffffe0,		/* src_mask */
+	 0x0ffffe0,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSDESC_ADR_PREL21),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 21,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC_ADR_PREL21),	/* name */
+	 false,			/* partial_inplace */
+	 0x1fffff,		/* src_mask */
+	 0x1fffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* Get to the page for the GOT entry for the symbol
+     (G(S) - P) using an ADRP instruction.  */
+  HOWTO (AARCH64_R (TLSDESC_ADR_PAGE21),	/* type */
+	 12,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 21,			/* bitsize */
+	 true,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC_ADR_PAGE21),	/* name */
+	 false,			/* partial_inplace */
+	 0x1fffff,		/* src_mask */
+	 0x1fffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
+
+  /* LD64: GOT offset G(S) & 0xff8.  */
+  HOWTO64 (AARCH64_R (TLSDESC_LD64_LO12),	/* type */
+	 3,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC_LD64_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0xff8,			/* src_mask */
+	 0xff8,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* LD32: GOT offset G(S) & 0xffc.  */
+  HOWTO32 (AARCH64_R (TLSDESC_LD32_LO12_NC),	/* type */
+	 2,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC_LD32_LO12_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffc,			/* src_mask */
+	 0xffc,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* ADD: GOT offset G(S) & 0xfff.  */
+  HOWTO (AARCH64_R (TLSDESC_ADD_LO12),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC_ADD_LO12),	/* name */
+	 false,			/* partial_inplace */
+	 0xfff,			/* src_mask */
+	 0xfff,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO64 (AARCH64_R (TLSDESC_OFF_G1),	/* type */
+	 16,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC_OFF_G1),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO64 (AARCH64_R (TLSDESC_OFF_G0_NC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC_OFF_G0_NC),	/* name */
+	 false,			/* partial_inplace */
+	 0xffff,		/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO64 (AARCH64_R (TLSDESC_LDR),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC_LDR),	/* name */
+	 false,			/* partial_inplace */
+	 0x0,			/* src_mask */
+	 0x0,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO64 (AARCH64_R (TLSDESC_ADD),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 12,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC_ADD),	/* name */
+	 false,			/* partial_inplace */
+	 0x0,			/* src_mask */
+	 0x0,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSDESC_CALL),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC_CALL),	/* name */
+	 false,			/* partial_inplace */
+	 0x0,			/* src_mask */
+	 0x0,			/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (COPY),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (COPY),	/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (GLOB_DAT),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (GLOB_DAT),	/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (JUMP_SLOT),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (JUMP_SLOT),	/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (RELATIVE),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (RELATIVE),	/* name */
+	 true,			/* partial_inplace */
+	 ALL_ONES,		/* src_mask */
+	 ALL_ONES,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLS_DTPMOD),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+#if ARCH_SIZE == 64
+	 AARCH64_R_STR (TLS_DTPMOD64),	/* name */
+#else
+	 AARCH64_R_STR (TLS_DTPMOD),	/* name */
+#endif
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
+	 ALL_ONES,		/* dst_mask */
+	 false),		/* pc_reloffset */
+
+  HOWTO (AARCH64_R (TLS_DTPREL),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+#if ARCH_SIZE == 64
+	 AARCH64_R_STR (TLS_DTPREL64),	/* name */
+#else
+	 AARCH64_R_STR (TLS_DTPREL),	/* name */
+#endif
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
+	 ALL_ONES,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLS_TPREL),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+#if ARCH_SIZE == 64
+	 AARCH64_R_STR (TLS_TPREL64),	/* name */
+#else
+	 AARCH64_R_STR (TLS_TPREL),	/* name */
+#endif
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
+	 ALL_ONES,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (TLSDESC),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (TLSDESC),	/* name */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
+	 ALL_ONES,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  HOWTO (AARCH64_R (IRELATIVE),	/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 AARCH64_R_STR (IRELATIVE),	/* name */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
+	 ALL_ONES,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  EMPTY_HOWTO (0),
+};
+
+static reloc_howto_type elfNN_aarch64_howto_none =
+  HOWTO (R_AARCH64_NONE,	/* type */
+	 0,			/* rightshift */
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "R_AARCH64_NONE",	/* name */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0,			/* dst_mask */
+	 false);		/* pcrel_offset */
+
+/* Given HOWTO, return the bfd internal relocation enumerator.  */
+
+static bfd_reloc_code_real_type
+elfNN_aarch64_bfd_reloc_from_howto (reloc_howto_type *howto)
+{
+  const int size
+    = (int) ARRAY_SIZE (elfNN_aarch64_howto_table);
+  const ptrdiff_t offset
+    = howto - elfNN_aarch64_howto_table;
+
+  if (offset > 0 && offset < size - 1)
+    return BFD_RELOC_AARCH64_RELOC_START + offset;
+
+  if (howto == &elfNN_aarch64_howto_none)
+    return BFD_RELOC_AARCH64_NONE;
+
+  return BFD_RELOC_AARCH64_RELOC_START;
+}
+
+/* Given R_TYPE, return the bfd internal relocation enumerator.  */
+
+static bfd_reloc_code_real_type
+elfNN_aarch64_bfd_reloc_from_type (bfd *abfd, unsigned int r_type)
+{
+  static bool initialized_p = false;
+  /* Indexed by R_TYPE, values are offsets in the howto_table.  */
+  static unsigned int offsets[R_AARCH64_end];
+
+  if (!initialized_p)
+    {
+      unsigned int i;
+
+      for (i = 1; i < ARRAY_SIZE (elfNN_aarch64_howto_table) - 1; ++i)
+	if (elfNN_aarch64_howto_table[i].type != 0)
+	  offsets[elfNN_aarch64_howto_table[i].type] = i;
+
+      initialized_p = true;
+    }
+
+  if (r_type == R_AARCH64_NONE || r_type == R_AARCH64_NULL)
+    return BFD_RELOC_AARCH64_NONE;
+
+  /* PR 17512: file: b371e70a.  */
+  if (r_type >= R_AARCH64_end)
+    {
+      _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+			  abfd, r_type);
+      bfd_set_error (bfd_error_bad_value);
+      return BFD_RELOC_AARCH64_NONE;
+    }
+
+  return BFD_RELOC_AARCH64_RELOC_START + offsets[r_type];
+}
+
+struct elf_aarch64_reloc_map
+{
+  bfd_reloc_code_real_type from;
+  bfd_reloc_code_real_type to;
+};
+
+/* Map bfd generic reloc to AArch64-specific reloc.  */
+static const struct elf_aarch64_reloc_map elf_aarch64_reloc_map[] =
+{
+  {BFD_RELOC_NONE, BFD_RELOC_AARCH64_NONE},
+
+  /* Basic data relocations.  */
+  {BFD_RELOC_CTOR, BFD_RELOC_AARCH64_NN},
+  {BFD_RELOC_64, BFD_RELOC_AARCH64_64},
+  {BFD_RELOC_32, BFD_RELOC_AARCH64_32},
+  {BFD_RELOC_16, BFD_RELOC_AARCH64_16},
+  {BFD_RELOC_64_PCREL, BFD_RELOC_AARCH64_64_PCREL},
+  {BFD_RELOC_32_PCREL, BFD_RELOC_AARCH64_32_PCREL},
+  {BFD_RELOC_16_PCREL, BFD_RELOC_AARCH64_16_PCREL},
+};
+
+/* Given the bfd internal relocation enumerator in CODE, return the
+   corresponding howto entry.  */
+
+static reloc_howto_type *
+elfNN_aarch64_howto_from_bfd_reloc (bfd_reloc_code_real_type code)
+{
+  unsigned int i;
+
+  /* Convert bfd generic reloc to AArch64-specific reloc.  */
+  if (code < BFD_RELOC_AARCH64_RELOC_START
+      || code > BFD_RELOC_AARCH64_RELOC_END)
+    for (i = 0; i < ARRAY_SIZE (elf_aarch64_reloc_map); i++)
+      if (elf_aarch64_reloc_map[i].from == code)
+	{
+	  code = elf_aarch64_reloc_map[i].to;
+	  break;
+	}
+
+  if (code > BFD_RELOC_AARCH64_RELOC_START
+      && code < BFD_RELOC_AARCH64_RELOC_END)
+    if (elfNN_aarch64_howto_table[code - BFD_RELOC_AARCH64_RELOC_START].type)
+      return &elfNN_aarch64_howto_table[code - BFD_RELOC_AARCH64_RELOC_START];
+
+  if (code == BFD_RELOC_AARCH64_NONE)
+    return &elfNN_aarch64_howto_none;
+
+  return NULL;
+}
+
+static reloc_howto_type *
+elfNN_aarch64_howto_from_type (bfd *abfd, unsigned int r_type)
+{
+  bfd_reloc_code_real_type val;
+  reloc_howto_type *howto;
+
+#if ARCH_SIZE == 32
+  if (r_type > 256)
+    {
+      bfd_set_error (bfd_error_bad_value);
+      return NULL;
+    }
+#endif
+
+  if (r_type == R_AARCH64_NONE)
+    return &elfNN_aarch64_howto_none;
+
+  val = elfNN_aarch64_bfd_reloc_from_type (abfd, r_type);
+  howto = elfNN_aarch64_howto_from_bfd_reloc (val);
+
+  if (howto != NULL)
+    return howto;
+
+  bfd_set_error (bfd_error_bad_value);
+  return NULL;
+}
+
+static bool
+elfNN_aarch64_info_to_howto (bfd *abfd, arelent *bfd_reloc,
+			     Elf_Internal_Rela *elf_reloc)
+{
+  unsigned int r_type;
+
+  r_type = ELFNN_R_TYPE (elf_reloc->r_info);
+  bfd_reloc->howto = elfNN_aarch64_howto_from_type (abfd, r_type);
+
+  if (bfd_reloc->howto == NULL)
+    {
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%pB: unsupported relocation type %#x"), abfd, r_type);
+      return false;
+    }
+  return true;
+}
+
+static reloc_howto_type *
+elfNN_aarch64_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+				 bfd_reloc_code_real_type code)
+{
+  reloc_howto_type *howto = elfNN_aarch64_howto_from_bfd_reloc (code);
+
+  if (howto != NULL)
+    return howto;
+
+  bfd_set_error (bfd_error_bad_value);
+  return NULL;
+}
+
+static reloc_howto_type *
+elfNN_aarch64_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+				 const char *r_name)
+{
+  unsigned int i;
+
+  for (i = 1; i < ARRAY_SIZE (elfNN_aarch64_howto_table) - 1; ++i)
+    if (elfNN_aarch64_howto_table[i].name != NULL
+	&& strcasecmp (elfNN_aarch64_howto_table[i].name, r_name) == 0)
+      return &elfNN_aarch64_howto_table[i];
+
+  return NULL;
+}
+
+#define TARGET_LITTLE_SYM		aarch64_elfNN_le_vec
+#define TARGET_LITTLE_NAME		"elfNN-littleaarch64"
+#define TARGET_BIG_SYM			aarch64_elfNN_be_vec
+#define TARGET_BIG_NAME			"elfNN-bigaarch64"
+
+/* The linker script knows the section names for placement.
+   The entry_names are used to do simple name mangling on the stubs.
+   Given a function name, and its type, the stub can be found. The
+   name can be changed. The only requirement is the %s be present.  */
+#define STUB_ENTRY_NAME   "__%s_veneer"
+
+/* The name of the dynamic interpreter.  This is put in the .interp
+   section.  */
+#define ELF_DYNAMIC_INTERPRETER     "/lib/ld.so.1"
+
+#define AARCH64_MAX_FWD_BRANCH_OFFSET \
+  (((1 << 25) - 1) << 2)
+#define AARCH64_MAX_BWD_BRANCH_OFFSET \
+  (-((1 << 25) << 2))
+
+#define AARCH64_MAX_ADRP_IMM ((1 << 20) - 1)
+#define AARCH64_MIN_ADRP_IMM (-(1 << 20))
+
+static int
+aarch64_valid_for_adrp_p (bfd_vma value, bfd_vma place)
+{
+  bfd_signed_vma offset = (bfd_signed_vma) (PG (value) - PG (place)) >> 12;
+  return offset <= AARCH64_MAX_ADRP_IMM && offset >= AARCH64_MIN_ADRP_IMM;
+}
+
+static int
+aarch64_valid_branch_p (bfd_vma value, bfd_vma place)
+{
+  bfd_signed_vma offset = (bfd_signed_vma) (value - place);
+  return (offset <= AARCH64_MAX_FWD_BRANCH_OFFSET
+	  && offset >= AARCH64_MAX_BWD_BRANCH_OFFSET);
+}
+
+static const uint32_t aarch64_adrp_branch_stub [] =
+{
+  0x90000010,			/*	adrp	ip0, X */
+				/*		R_AARCH64_ADR_HI21_PCREL(X) */
+  0x91000210,			/*	add	ip0, ip0, :lo12:X */
+				/*		R_AARCH64_ADD_ABS_LO12_NC(X) */
+  0xd61f0200,			/*	br	ip0 */
+};
+
+static const uint32_t aarch64_long_branch_stub[] =
+{
+#if ARCH_SIZE == 64
+  0x58000090,			/*	ldr   ip0, 1f */
+#else
+  0x18000090,			/*	ldr   wip0, 1f */
+#endif
+  0x10000011,			/*	adr   ip1, #0 */
+  0x8b110210,			/*	add   ip0, ip0, ip1 */
+  0xd61f0200,			/*	br	ip0 */
+  0x00000000,			/* 1:	.xword or .word
+				   R_AARCH64_PRELNN(X) + 12
+				 */
+  0x00000000,
+};
+
+static const uint32_t aarch64_erratum_835769_stub[] =
+{
+  0x00000000,    /* Placeholder for multiply accumulate.  */
+  0x14000000,    /* b <label> */
+};
+
+static const uint32_t aarch64_erratum_843419_stub[] =
+{
+  0x00000000,    /* Placeholder for LDR instruction.  */
+  0x14000000,    /* b <label> */
+};
+
+/* Section name for stubs is the associated section name plus this
+   string.  */
+#define STUB_SUFFIX ".stub"
+
+enum elf_aarch64_stub_type
+{
+  aarch64_stub_none,
+  aarch64_stub_adrp_branch,
+  aarch64_stub_long_branch,
+  aarch64_stub_erratum_835769_veneer,
+  aarch64_stub_erratum_843419_veneer,
+};
+
+struct elf_aarch64_stub_hash_entry
+{
+  /* Base hash table entry structure.  */
+  struct bfd_hash_entry root;
+
+  /* The stub section.  */
+  asection *stub_sec;
+
+  /* Offset within stub_sec of the beginning of this stub.  */
+  bfd_vma stub_offset;
+
+  /* Given the symbol's value and its section we can determine its final
+     value when building the stubs (so the stub knows where to jump).  */
+  bfd_vma target_value;
+  asection *target_section;
+
+  enum elf_aarch64_stub_type stub_type;
+
+  /* The symbol table entry, if any, that this was derived from.  */
+  struct elf_aarch64_link_hash_entry *h;
+
+  /* Destination symbol type */
+  unsigned char st_type;
+
+  /* Where this stub is being called from, or, in the case of combined
+     stub sections, the first input section in the group.  */
+  asection *id_sec;
+
+  /* The name for the local symbol at the start of this stub.  The
+     stub name in the hash table has to be unique; this does not, so
+     it can be friendlier.  */
+  char *output_name;
+
+  /* The instruction which caused this stub to be generated (only valid for
+     erratum 835769 workaround stubs at present).  */
+  uint32_t veneered_insn;
+
+  /* In an erratum 843419 workaround stub, the ADRP instruction offset.  */
+  bfd_vma adrp_offset;
+};
+
+/* Used to build a map of a section.  This is required for mixed-endian
+   code/data.  */
+
+typedef struct elf_elf_section_map
+{
+  bfd_vma vma;
+  char type;
+}
+elf_aarch64_section_map;
+
+
+typedef struct _aarch64_elf_section_data
+{
+  struct bfd_elf_section_data elf;
+  unsigned int mapcount;
+  unsigned int mapsize;
+  elf_aarch64_section_map *map;
+}
+_aarch64_elf_section_data;
+
+#define elf_aarch64_section_data(sec) \
+  ((_aarch64_elf_section_data *) elf_section_data (sec))
+
+/* The size of the thread control block which is defined to be two pointers.  */
+#define TCB_SIZE	(ARCH_SIZE/8)*2
+
+struct elf_aarch64_local_symbol
+{
+  unsigned int got_type;
+  bfd_signed_vma got_refcount;
+  bfd_vma got_offset;
+
+  /* Offset of the GOTPLT entry reserved for the TLS descriptor. The
+     offset is from the end of the jump table and reserved entries
+     within the PLTGOT.
+
+     The magic value (bfd_vma) -1 indicates that an offset has not be
+     allocated.  */
+  bfd_vma tlsdesc_got_jump_table_offset;
+};
+
+struct elf_aarch64_obj_tdata
+{
+  struct elf_obj_tdata root;
+
+  /* local symbol descriptors */
+  struct elf_aarch64_local_symbol *locals;
+
+  /* Zero to warn when linking objects with incompatible enum sizes.  */
+  int no_enum_size_warning;
+
+  /* Zero to warn when linking objects with incompatible wchar_t sizes.  */
+  int no_wchar_size_warning;
+
+  /* All GNU_PROPERTY_AARCH64_FEATURE_1_AND properties.  */
+  uint32_t gnu_and_prop;
+
+  /* Zero to warn when linking objects with incompatible
+     GNU_PROPERTY_AARCH64_FEATURE_1_BTI.  */
+  int no_bti_warn;
+
+  /* PLT type based on security.  */
+  aarch64_plt_type plt_type;
+};
+
+#define elf_aarch64_tdata(bfd)				\
+  ((struct elf_aarch64_obj_tdata *) (bfd)->tdata.any)
+
+#define elf_aarch64_locals(bfd) (elf_aarch64_tdata (bfd)->locals)
+
+#define is_aarch64_elf(bfd)				\
+  (bfd_get_flavour (bfd) == bfd_target_elf_flavour	\
+   && elf_tdata (bfd) != NULL				\
+   && elf_object_id (bfd) == AARCH64_ELF_DATA)
+
+static bool
+elfNN_aarch64_mkobject (bfd *abfd)
+{
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_aarch64_obj_tdata),
+				  AARCH64_ELF_DATA);
+}
+
+#define elf_aarch64_hash_entry(ent) \
+  ((struct elf_aarch64_link_hash_entry *)(ent))
+
+#define GOT_UNKNOWN    0
+#define GOT_NORMAL     1
+#define GOT_TLS_GD     2
+#define GOT_TLS_IE     4
+#define GOT_TLSDESC_GD 8
+
+#define GOT_TLS_GD_ANY_P(type)	((type & GOT_TLS_GD) || (type & GOT_TLSDESC_GD))
+
+/* AArch64 ELF linker hash entry.  */
+struct elf_aarch64_link_hash_entry
+{
+  struct elf_link_hash_entry root;
+
+  /* Since PLT entries have variable size, we need to record the
+     index into .got.plt instead of recomputing it from the PLT
+     offset.  */
+  bfd_signed_vma plt_got_offset;
+
+  /* Bit mask representing the type of GOT entry(s) if any required by
+     this symbol.  */
+  unsigned int got_type;
+
+  /* A pointer to the most recently used stub hash entry against this
+     symbol.  */
+  struct elf_aarch64_stub_hash_entry *stub_cache;
+
+  /* Offset of the GOTPLT entry reserved for the TLS descriptor.  The offset
+     is from the end of the jump table and reserved entries within the PLTGOT.
+
+     The magic value (bfd_vma) -1 indicates that an offset has not
+     be allocated.  */
+  bfd_vma tlsdesc_got_jump_table_offset;
+};
+
+static unsigned int
+elfNN_aarch64_symbol_got_type (struct elf_link_hash_entry *h,
+			       bfd *abfd,
+			       unsigned long r_symndx)
+{
+  if (h)
+    return elf_aarch64_hash_entry (h)->got_type;
+
+  if (! elf_aarch64_locals (abfd))
+    return GOT_UNKNOWN;
+
+  return elf_aarch64_locals (abfd)[r_symndx].got_type;
+}
+
+/* Get the AArch64 elf linker hash table from a link_info structure.  */
+#define elf_aarch64_hash_table(info)					\
+  ((struct elf_aarch64_link_hash_table *) ((info)->hash))
+
+#define aarch64_stub_hash_lookup(table, string, create, copy)		\
+  ((struct elf_aarch64_stub_hash_entry *)				\
+   bfd_hash_lookup ((table), (string), (create), (copy)))
+
+/* AArch64 ELF linker hash table.  */
+struct elf_aarch64_link_hash_table
+{
+  /* The main hash table.  */
+  struct elf_link_hash_table root;
+
+  /* Nonzero to force PIC branch veneers.  */
+  int pic_veneer;
+
+  /* Fix erratum 835769.  */
+  int fix_erratum_835769;
+
+  /* Fix erratum 843419.  */
+  erratum_84319_opts fix_erratum_843419;
+
+  /* Don't apply link-time values for dynamic relocations.  */
+  int no_apply_dynamic_relocs;
+
+  /* The number of bytes in the initial entry in the PLT.  */
+  bfd_size_type plt_header_size;
+
+  /* The bytes of the initial PLT entry.  */
+  const bfd_byte *plt0_entry;
+
+  /* The number of bytes in the subsequent PLT entries.  */
+  bfd_size_type plt_entry_size;
+
+  /* The bytes of the subsequent PLT entry.  */
+  const bfd_byte *plt_entry;
+
+  /* For convenience in allocate_dynrelocs.  */
+  bfd *obfd;
+
+  /* The amount of space used by the reserved portion of the sgotplt
+     section, plus whatever space is used by the jump slots.  */
+  bfd_vma sgotplt_jump_table_size;
+
+  /* The stub hash table.  */
+  struct bfd_hash_table stub_hash_table;
+
+  /* Linker stub bfd.  */
+  bfd *stub_bfd;
+
+  /* Linker call-backs.  */
+  asection *(*add_stub_section) (const char *, asection *);
+  void (*layout_sections_again) (void);
+
+  /* Array to keep track of which stub sections have been created, and
+     information on stub grouping.  */
+  struct map_stub
+  {
+    /* This is the section to which stubs in the group will be
+       attached.  */
+    asection *link_sec;
+    /* The stub section.  */
+    asection *stub_sec;
+  } *stub_group;
+
+  /* Assorted information used by elfNN_aarch64_size_stubs.  */
+  unsigned int bfd_count;
+  unsigned int top_index;
+  asection **input_list;
+
+  /* JUMP_SLOT relocs for variant PCS symbols may be present.  */
+  int variant_pcs;
+
+  /* The number of bytes in the PLT enty for the TLS descriptor.  */
+  bfd_size_type tlsdesc_plt_entry_size;
+
+  /* Used by local STT_GNU_IFUNC symbols.  */
+  htab_t loc_hash_table;
+  void * loc_hash_memory;
+};
+
+/* Create an entry in an AArch64 ELF linker hash table.  */
+
+static struct bfd_hash_entry *
+elfNN_aarch64_link_hash_newfunc (struct bfd_hash_entry *entry,
+				 struct bfd_hash_table *table,
+				 const char *string)
+{
+  struct elf_aarch64_link_hash_entry *ret =
+    (struct elf_aarch64_link_hash_entry *) entry;
+
+  /* Allocate the structure if it has not already been allocated by a
+     subclass.  */
+  if (ret == NULL)
+    ret = bfd_hash_allocate (table,
+			     sizeof (struct elf_aarch64_link_hash_entry));
+  if (ret == NULL)
+    return (struct bfd_hash_entry *) ret;
+
+  /* Call the allocation method of the superclass.  */
+  ret = ((struct elf_aarch64_link_hash_entry *)
+	 _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
+				     table, string));
+  if (ret != NULL)
+    {
+      ret->got_type = GOT_UNKNOWN;
+      ret->plt_got_offset = (bfd_vma) - 1;
+      ret->stub_cache = NULL;
+      ret->tlsdesc_got_jump_table_offset = (bfd_vma) - 1;
+    }
+
+  return (struct bfd_hash_entry *) ret;
+}
+
+/* Initialize an entry in the stub hash table.  */
+
+static struct bfd_hash_entry *
+stub_hash_newfunc (struct bfd_hash_entry *entry,
+		   struct bfd_hash_table *table, const char *string)
+{
+  /* Allocate the structure if it has not already been allocated by a
+     subclass.  */
+  if (entry == NULL)
+    {
+      entry = bfd_hash_allocate (table,
+				 sizeof (struct
+					 elf_aarch64_stub_hash_entry));
+      if (entry == NULL)
+	return entry;
+    }
+
+  /* Call the allocation method of the superclass.  */
+  entry = bfd_hash_newfunc (entry, table, string);
+  if (entry != NULL)
+    {
+      struct elf_aarch64_stub_hash_entry *eh;
+
+      /* Initialize the local fields.  */
+      eh = (struct elf_aarch64_stub_hash_entry *) entry;
+      eh->adrp_offset = 0;
+      eh->stub_sec = NULL;
+      eh->stub_offset = 0;
+      eh->target_value = 0;
+      eh->target_section = NULL;
+      eh->stub_type = aarch64_stub_none;
+      eh->h = NULL;
+      eh->id_sec = NULL;
+    }
+
+  return entry;
+}
+
+/* Compute a hash of a local hash entry.  We use elf_link_hash_entry
+  for local symbol so that we can handle local STT_GNU_IFUNC symbols
+  as global symbol.  We reuse indx and dynstr_index for local symbol
+  hash since they aren't used by global symbols in this backend.  */
+
+static hashval_t
+elfNN_aarch64_local_htab_hash (const void *ptr)
+{
+  struct elf_link_hash_entry *h
+    = (struct elf_link_hash_entry *) ptr;
+  return ELF_LOCAL_SYMBOL_HASH (h->indx, h->dynstr_index);
+}
+
+/* Compare local hash entries.  */
+
+static int
+elfNN_aarch64_local_htab_eq (const void *ptr1, const void *ptr2)
+{
+  struct elf_link_hash_entry *h1
+     = (struct elf_link_hash_entry *) ptr1;
+  struct elf_link_hash_entry *h2
+    = (struct elf_link_hash_entry *) ptr2;
+
+  return h1->indx == h2->indx && h1->dynstr_index == h2->dynstr_index;
+}
+
+/* Find and/or create a hash entry for local symbol.  */
+
+static struct elf_link_hash_entry *
+elfNN_aarch64_get_local_sym_hash (struct elf_aarch64_link_hash_table *htab,
+				  bfd *abfd, const Elf_Internal_Rela *rel,
+				  bool create)
+{
+  struct elf_aarch64_link_hash_entry e, *ret;
+  asection *sec = abfd->sections;
+  hashval_t h = ELF_LOCAL_SYMBOL_HASH (sec->id,
+				       ELFNN_R_SYM (rel->r_info));
+  void **slot;
+
+  e.root.indx = sec->id;
+  e.root.dynstr_index = ELFNN_R_SYM (rel->r_info);
+  slot = htab_find_slot_with_hash (htab->loc_hash_table, &e, h,
+				   create ? INSERT : NO_INSERT);
+
+  if (!slot)
+    return NULL;
+
+  if (*slot)
+    {
+      ret = (struct elf_aarch64_link_hash_entry *) *slot;
+      return &ret->root;
+    }
+
+  ret = (struct elf_aarch64_link_hash_entry *)
+	objalloc_alloc ((struct objalloc *) htab->loc_hash_memory,
+			sizeof (struct elf_aarch64_link_hash_entry));
+  if (ret)
+    {
+      memset (ret, 0, sizeof (*ret));
+      ret->root.indx = sec->id;
+      ret->root.dynstr_index = ELFNN_R_SYM (rel->r_info);
+      ret->root.dynindx = -1;
+      *slot = ret;
+    }
+  return &ret->root;
+}
+
+/* Copy the extra info we tack onto an elf_link_hash_entry.  */
+
+static void
+elfNN_aarch64_copy_indirect_symbol (struct bfd_link_info *info,
+				    struct elf_link_hash_entry *dir,
+				    struct elf_link_hash_entry *ind)
+{
+  struct elf_aarch64_link_hash_entry *edir, *eind;
+
+  edir = (struct elf_aarch64_link_hash_entry *) dir;
+  eind = (struct elf_aarch64_link_hash_entry *) ind;
+
+  if (ind->root.type == bfd_link_hash_indirect)
+    {
+      /* Copy over PLT info.  */
+      if (dir->got.refcount <= 0)
+	{
+	  edir->got_type = eind->got_type;
+	  eind->got_type = GOT_UNKNOWN;
+	}
+    }
+
+  _bfd_elf_link_hash_copy_indirect (info, dir, ind);
+}
+
+/* Merge non-visibility st_other attributes.  */
+
+static void
+elfNN_aarch64_merge_symbol_attribute (struct elf_link_hash_entry *h,
+				      unsigned int st_other,
+				      bool definition ATTRIBUTE_UNUSED,
+				      bool dynamic ATTRIBUTE_UNUSED)
+{
+  unsigned int isym_sto = st_other & ~ELF_ST_VISIBILITY (-1);
+  unsigned int h_sto = h->other & ~ELF_ST_VISIBILITY (-1);
+
+  if (isym_sto == h_sto)
+    return;
+
+  if (isym_sto & ~STO_AARCH64_VARIANT_PCS)
+    /* Not fatal, this callback cannot fail.  */
+    _bfd_error_handler (_("unknown attribute for symbol `%s': 0x%02x"),
+			h->root.root.string, isym_sto);
+
+  /* Note: Ideally we would warn about any attribute mismatch, but
+     this api does not allow that without substantial changes.  */
+  if (isym_sto & STO_AARCH64_VARIANT_PCS)
+    h->other |= STO_AARCH64_VARIANT_PCS;
+}
+
+/* Destroy an AArch64 elf linker hash table.  */
+
+static void
+elfNN_aarch64_link_hash_table_free (bfd *obfd)
+{
+  struct elf_aarch64_link_hash_table *ret
+    = (struct elf_aarch64_link_hash_table *) obfd->link.hash;
+
+  if (ret->loc_hash_table)
+    htab_delete (ret->loc_hash_table);
+  if (ret->loc_hash_memory)
+    objalloc_free ((struct objalloc *) ret->loc_hash_memory);
+
+  bfd_hash_table_free (&ret->stub_hash_table);
+  _bfd_elf_link_hash_table_free (obfd);
+}
+
+/* Create an AArch64 elf linker hash table.  */
+
+static struct bfd_link_hash_table *
+elfNN_aarch64_link_hash_table_create (bfd *abfd)
+{
+  struct elf_aarch64_link_hash_table *ret;
+  size_t amt = sizeof (struct elf_aarch64_link_hash_table);
+
+  ret = bfd_zmalloc (amt);
+  if (ret == NULL)
+    return NULL;
+
+  if (!_bfd_elf_link_hash_table_init
+      (&ret->root, abfd, elfNN_aarch64_link_hash_newfunc,
+       sizeof (struct elf_aarch64_link_hash_entry), AARCH64_ELF_DATA))
+    {
+      free (ret);
+      return NULL;
+    }
+
+  ret->plt_header_size = PLT_ENTRY_SIZE;
+  ret->plt0_entry = elfNN_aarch64_small_plt0_entry;
+  ret->plt_entry_size = PLT_SMALL_ENTRY_SIZE;
+  ret->plt_entry = elfNN_aarch64_small_plt_entry;
+  ret->tlsdesc_plt_entry_size = PLT_TLSDESC_ENTRY_SIZE;
+  ret->obfd = abfd;
+  ret->root.tlsdesc_got = (bfd_vma) - 1;
+
+  if (!bfd_hash_table_init (&ret->stub_hash_table, stub_hash_newfunc,
+			    sizeof (struct elf_aarch64_stub_hash_entry)))
+    {
+      _bfd_elf_link_hash_table_free (abfd);
+      return NULL;
+    }
+
+  ret->loc_hash_table = htab_try_create (1024,
+					 elfNN_aarch64_local_htab_hash,
+					 elfNN_aarch64_local_htab_eq,
+					 NULL);
+  ret->loc_hash_memory = objalloc_create ();
+  if (!ret->loc_hash_table || !ret->loc_hash_memory)
+    {
+      elfNN_aarch64_link_hash_table_free (abfd);
+      return NULL;
+    }
+  ret->root.root.hash_table_free = elfNN_aarch64_link_hash_table_free;
+
+  return &ret->root.root;
+}
+
+/* Perform relocation R_TYPE.  Returns TRUE upon success, FALSE otherwise.  */
+
+static bool
+aarch64_relocate (unsigned int r_type, bfd *input_bfd, asection *input_section,
+		  bfd_vma offset, bfd_vma value)
+{
+  reloc_howto_type *howto;
+  bfd_vma place;
+
+  howto = elfNN_aarch64_howto_from_type (input_bfd, r_type);
+  place = (input_section->output_section->vma + input_section->output_offset
+	   + offset);
+
+  r_type = elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type);
+  value = _bfd_aarch64_elf_resolve_relocation (input_bfd, r_type, place,
+					       value, 0, false);
+  return _bfd_aarch64_elf_put_addend (input_bfd,
+				      input_section->contents + offset, r_type,
+				      howto, value) == bfd_reloc_ok;
+}
+
+static enum elf_aarch64_stub_type
+aarch64_select_branch_stub (bfd_vma value, bfd_vma place)
+{
+  if (aarch64_valid_for_adrp_p (value, place))
+    return aarch64_stub_adrp_branch;
+  return aarch64_stub_long_branch;
+}
+
+/* Determine the type of stub needed, if any, for a call.  */
+
+static enum elf_aarch64_stub_type
+aarch64_type_of_stub (asection *input_sec,
+		      const Elf_Internal_Rela *rel,
+		      asection *sym_sec,
+		      unsigned char st_type,
+		      bfd_vma destination)
+{
+  bfd_vma location;
+  bfd_signed_vma branch_offset;
+  unsigned int r_type;
+  enum elf_aarch64_stub_type stub_type = aarch64_stub_none;
+
+  if (st_type != STT_FUNC
+      && (sym_sec == input_sec))
+    return stub_type;
+
+  /* Determine where the call point is.  */
+  location = (input_sec->output_offset
+	      + input_sec->output_section->vma + rel->r_offset);
+
+  branch_offset = (bfd_signed_vma) (destination - location);
+
+  r_type = ELFNN_R_TYPE (rel->r_info);
+
+  /* We don't want to redirect any old unconditional jump in this way,
+     only one which is being used for a sibcall, where it is
+     acceptable for the IP0 and IP1 registers to be clobbered.  */
+  if ((r_type == AARCH64_R (CALL26) || r_type == AARCH64_R (JUMP26))
+      && (branch_offset > AARCH64_MAX_FWD_BRANCH_OFFSET
+	  || branch_offset < AARCH64_MAX_BWD_BRANCH_OFFSET))
+    {
+      stub_type = aarch64_stub_long_branch;
+    }
+
+  return stub_type;
+}
+
+/* Build a name for an entry in the stub hash table.  */
+
+static char *
+elfNN_aarch64_stub_name (const asection *input_section,
+			 const asection *sym_sec,
+			 const struct elf_aarch64_link_hash_entry *hash,
+			 const Elf_Internal_Rela *rel)
+{
+  char *stub_name;
+  bfd_size_type len;
+
+  if (hash)
+    {
+      len = 8 + 1 + strlen (hash->root.root.root.string) + 1 + 16 + 1;
+      stub_name = bfd_malloc (len);
+      if (stub_name != NULL)
+	snprintf (stub_name, len, "%08x_%s+%" BFD_VMA_FMT "x",
+		  (unsigned int) input_section->id,
+		  hash->root.root.root.string,
+		  rel->r_addend);
+    }
+  else
+    {
+      len = 8 + 1 + 8 + 1 + 8 + 1 + 16 + 1;
+      stub_name = bfd_malloc (len);
+      if (stub_name != NULL)
+	snprintf (stub_name, len, "%08x_%x:%x+%" BFD_VMA_FMT "x",
+		  (unsigned int) input_section->id,
+		  (unsigned int) sym_sec->id,
+		  (unsigned int) ELFNN_R_SYM (rel->r_info),
+		  rel->r_addend);
+    }
+
+  return stub_name;
+}
+
+/* Return TRUE if symbol H should be hashed in the `.gnu.hash' section.  For
+   executable PLT slots where the executable never takes the address of those
+   functions, the function symbols are not added to the hash table.  */
+
+static bool
+elf_aarch64_hash_symbol (struct elf_link_hash_entry *h)
+{
+  if (h->plt.offset != (bfd_vma) -1
+      && !h->def_regular
+      && !h->pointer_equality_needed)
+    return false;
+
+  return _bfd_elf_hash_symbol (h);
+}
+
+
+/* Look up an entry in the stub hash.  Stub entries are cached because
+   creating the stub name takes a bit of time.  */
+
+static struct elf_aarch64_stub_hash_entry *
+elfNN_aarch64_get_stub_entry (const asection *input_section,
+			      const asection *sym_sec,
+			      struct elf_link_hash_entry *hash,
+			      const Elf_Internal_Rela *rel,
+			      struct elf_aarch64_link_hash_table *htab)
+{
+  struct elf_aarch64_stub_hash_entry *stub_entry;
+  struct elf_aarch64_link_hash_entry *h =
+    (struct elf_aarch64_link_hash_entry *) hash;
+  const asection *id_sec;
+
+  if ((input_section->flags & SEC_CODE) == 0)
+    return NULL;
+
+  /* If this input section is part of a group of sections sharing one
+     stub section, then use the id of the first section in the group.
+     Stub names need to include a section id, as there may well be
+     more than one stub used to reach say, printf, and we need to
+     distinguish between them.  */
+  id_sec = htab->stub_group[input_section->id].link_sec;
+
+  if (h != NULL && h->stub_cache != NULL
+      && h->stub_cache->h == h && h->stub_cache->id_sec == id_sec)
+    {
+      stub_entry = h->stub_cache;
+    }
+  else
+    {
+      char *stub_name;
+
+      stub_name = elfNN_aarch64_stub_name (id_sec, sym_sec, h, rel);
+      if (stub_name == NULL)
+	return NULL;
+
+      stub_entry = aarch64_stub_hash_lookup (&htab->stub_hash_table,
+					     stub_name, false, false);
+      if (h != NULL)
+	h->stub_cache = stub_entry;
+
+      free (stub_name);
+    }
+
+  return stub_entry;
+}
+
+
+/* Create a stub section.  */
+
+static asection *
+_bfd_aarch64_create_stub_section (asection *section,
+				  struct elf_aarch64_link_hash_table *htab)
+{
+  size_t namelen;
+  bfd_size_type len;
+  char *s_name;
+
+  namelen = strlen (section->name);
+  len = namelen + sizeof (STUB_SUFFIX);
+  s_name = bfd_alloc (htab->stub_bfd, len);
+  if (s_name == NULL)
+    return NULL;
+
+  memcpy (s_name, section->name, namelen);
+  memcpy (s_name + namelen, STUB_SUFFIX, sizeof (STUB_SUFFIX));
+  return (*htab->add_stub_section) (s_name, section);
+}
+
+
+/* Find or create a stub section for a link section.
+
+   Fix or create the stub section used to collect stubs attached to
+   the specified link section.  */
+
+static asection *
+_bfd_aarch64_get_stub_for_link_section (asection *link_section,
+					struct elf_aarch64_link_hash_table *htab)
+{
+  if (htab->stub_group[link_section->id].stub_sec == NULL)
+    htab->stub_group[link_section->id].stub_sec
+      = _bfd_aarch64_create_stub_section (link_section, htab);
+  return htab->stub_group[link_section->id].stub_sec;
+}
+
+
+/* Find or create a stub section in the stub group for an input
+   section.  */
+
+static asection *
+_bfd_aarch64_create_or_find_stub_sec (asection *section,
+				      struct elf_aarch64_link_hash_table *htab)
+{
+  asection *link_sec = htab->stub_group[section->id].link_sec;
+  return _bfd_aarch64_get_stub_for_link_section (link_sec, htab);
+}
+
+
+/* Add a new stub entry in the stub group associated with an input
+   section to the stub hash.  Not all fields of the new stub entry are
+   initialised.  */
+
+static struct elf_aarch64_stub_hash_entry *
+_bfd_aarch64_add_stub_entry_in_group (const char *stub_name,
+				      asection *section,
+				      struct elf_aarch64_link_hash_table *htab)
+{
+  asection *link_sec;
+  asection *stub_sec;
+  struct elf_aarch64_stub_hash_entry *stub_entry;
+
+  link_sec = htab->stub_group[section->id].link_sec;
+  stub_sec = _bfd_aarch64_create_or_find_stub_sec (section, htab);
+
+  /* Enter this entry into the linker stub hash table.  */
+  stub_entry = aarch64_stub_hash_lookup (&htab->stub_hash_table, stub_name,
+					 true, false);
+  if (stub_entry == NULL)
+    {
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%pB: cannot create stub entry %s"),
+			  section->owner, stub_name);
+      return NULL;
+    }
+
+  stub_entry->stub_sec = stub_sec;
+  stub_entry->stub_offset = 0;
+  stub_entry->id_sec = link_sec;
+
+  return stub_entry;
+}
+
+/* Add a new stub entry in the final stub section to the stub hash.
+   Not all fields of the new stub entry are initialised.  */
+
+static struct elf_aarch64_stub_hash_entry *
+_bfd_aarch64_add_stub_entry_after (const char *stub_name,
+				   asection *link_section,
+				   struct elf_aarch64_link_hash_table *htab)
+{
+  asection *stub_sec;
+  struct elf_aarch64_stub_hash_entry *stub_entry;
+
+  stub_sec = NULL;
+  /* Only create the actual stub if we will end up needing it.  */
+  if (htab->fix_erratum_843419 & ERRAT_ADRP)
+    stub_sec = _bfd_aarch64_get_stub_for_link_section (link_section, htab);
+  stub_entry = aarch64_stub_hash_lookup (&htab->stub_hash_table, stub_name,
+					 true, false);
+  if (stub_entry == NULL)
+    {
+      _bfd_error_handler (_("cannot create stub entry %s"), stub_name);
+      return NULL;
+    }
+
+  stub_entry->stub_sec = stub_sec;
+  stub_entry->stub_offset = 0;
+  stub_entry->id_sec = link_section;
+
+  return stub_entry;
+}
+
+
+static bool
+aarch64_build_one_stub (struct bfd_hash_entry *gen_entry,
+			void *in_arg)
+{
+  struct elf_aarch64_stub_hash_entry *stub_entry;
+  asection *stub_sec;
+  bfd *stub_bfd;
+  bfd_byte *loc;
+  bfd_vma sym_value;
+  bfd_vma veneered_insn_loc;
+  bfd_vma veneer_entry_loc;
+  bfd_signed_vma branch_offset = 0;
+  unsigned int template_size;
+  const uint32_t *template;
+  unsigned int i;
+  struct bfd_link_info *info;
+
+  /* Massage our args to the form they really have.  */
+  stub_entry = (struct elf_aarch64_stub_hash_entry *) gen_entry;
+
+  info = (struct bfd_link_info *) in_arg;
+
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (stub_entry->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+			      "Retry without "
+			      "--enable-non-contiguous-regions.\n"),
+			    stub_entry->target_section);
+
+  stub_sec = stub_entry->stub_sec;
+
+  /* Make a note of the offset within the stubs for this entry.  */
+  stub_entry->stub_offset = stub_sec->size;
+  loc = stub_sec->contents + stub_entry->stub_offset;
+
+  stub_bfd = stub_sec->owner;
+
+  /* This is the address of the stub destination.  */
+  sym_value = (stub_entry->target_value
+	       + stub_entry->target_section->output_offset
+	       + stub_entry->target_section->output_section->vma);
+
+  if (stub_entry->stub_type == aarch64_stub_long_branch)
+    {
+      bfd_vma place = (stub_entry->stub_offset + stub_sec->output_section->vma
+		       + stub_sec->output_offset);
+
+      /* See if we can relax the stub.  */
+      if (aarch64_valid_for_adrp_p (sym_value, place))
+	stub_entry->stub_type = aarch64_select_branch_stub (sym_value, place);
+    }
+
+  switch (stub_entry->stub_type)
+    {
+    case aarch64_stub_adrp_branch:
+      template = aarch64_adrp_branch_stub;
+      template_size = sizeof (aarch64_adrp_branch_stub);
+      break;
+    case aarch64_stub_long_branch:
+      template = aarch64_long_branch_stub;
+      template_size = sizeof (aarch64_long_branch_stub);
+      break;
+    case aarch64_stub_erratum_835769_veneer:
+      template = aarch64_erratum_835769_stub;
+      template_size = sizeof (aarch64_erratum_835769_stub);
+      break;
+    case aarch64_stub_erratum_843419_veneer:
+      template = aarch64_erratum_843419_stub;
+      template_size = sizeof (aarch64_erratum_843419_stub);
+      break;
+    default:
+      abort ();
+    }
+
+  for (i = 0; i < (template_size / sizeof template[0]); i++)
+    {
+      bfd_putl32 (template[i], loc);
+      loc += 4;
+    }
+
+  template_size = (template_size + 7) & ~7;
+  stub_sec->size += template_size;
+
+  switch (stub_entry->stub_type)
+    {
+    case aarch64_stub_adrp_branch:
+      if (!aarch64_relocate (AARCH64_R (ADR_PREL_PG_HI21), stub_bfd, stub_sec,
+			     stub_entry->stub_offset, sym_value))
+	/* The stub would not have been relaxed if the offset was out
+	   of range.  */
+	BFD_FAIL ();
+
+      if (!aarch64_relocate (AARCH64_R (ADD_ABS_LO12_NC), stub_bfd, stub_sec,
+			     stub_entry->stub_offset + 4, sym_value))
+	BFD_FAIL ();
+      break;
+
+    case aarch64_stub_long_branch:
+      /* We want the value relative to the address 12 bytes back from the
+	 value itself.  */
+      if (!aarch64_relocate (AARCH64_R (PRELNN), stub_bfd, stub_sec,
+			     stub_entry->stub_offset + 16, sym_value + 12))
+	BFD_FAIL ();
+      break;
+
+    case aarch64_stub_erratum_835769_veneer:
+      veneered_insn_loc = stub_entry->target_section->output_section->vma
+			  + stub_entry->target_section->output_offset
+			  + stub_entry->target_value;
+      veneer_entry_loc = stub_entry->stub_sec->output_section->vma
+			  + stub_entry->stub_sec->output_offset
+			  + stub_entry->stub_offset;
+      branch_offset = veneered_insn_loc - veneer_entry_loc;
+      branch_offset >>= 2;
+      branch_offset &= 0x3ffffff;
+      bfd_putl32 (stub_entry->veneered_insn,
+		  stub_sec->contents + stub_entry->stub_offset);
+      bfd_putl32 (template[1] | branch_offset,
+		  stub_sec->contents + stub_entry->stub_offset + 4);
+      break;
+
+    case aarch64_stub_erratum_843419_veneer:
+      if (!aarch64_relocate (AARCH64_R (JUMP26), stub_bfd, stub_sec,
+			     stub_entry->stub_offset + 4, sym_value + 4))
+	BFD_FAIL ();
+      break;
+
+    default:
+      abort ();
+    }
+
+  return true;
+}
+
+/* As above, but don't actually build the stub.  Just bump offset so
+   we know stub section sizes.  */
+
+static bool
+aarch64_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+{
+  struct elf_aarch64_stub_hash_entry *stub_entry;
+  struct elf_aarch64_link_hash_table *htab;
+  int size;
+
+  /* Massage our args to the form they really have.  */
+  stub_entry = (struct elf_aarch64_stub_hash_entry *) gen_entry;
+  htab = (struct elf_aarch64_link_hash_table *) in_arg;
+
+  switch (stub_entry->stub_type)
+    {
+    case aarch64_stub_adrp_branch:
+      size = sizeof (aarch64_adrp_branch_stub);
+      break;
+    case aarch64_stub_long_branch:
+      size = sizeof (aarch64_long_branch_stub);
+      break;
+    case aarch64_stub_erratum_835769_veneer:
+      size = sizeof (aarch64_erratum_835769_stub);
+      break;
+    case aarch64_stub_erratum_843419_veneer:
+      {
+	if (htab->fix_erratum_843419 == ERRAT_ADR)
+	  return true;
+	size = sizeof (aarch64_erratum_843419_stub);
+      }
+      break;
+    default:
+      abort ();
+    }
+
+  size = (size + 7) & ~7;
+  stub_entry->stub_sec->size += size;
+  return true;
+}
+
+/* External entry points for sizing and building linker stubs.  */
+
+/* Set up various things so that we can make a list of input sections
+   for each output section included in the link.  Returns -1 on error,
+   0 when no stubs will be needed, and 1 on success.  */
+
+int
+elfNN_aarch64_setup_section_lists (bfd *output_bfd,
+				   struct bfd_link_info *info)
+{
+  bfd *input_bfd;
+  unsigned int bfd_count;
+  unsigned int top_id, top_index;
+  asection *section;
+  asection **input_list, **list;
+  size_t amt;
+  struct elf_aarch64_link_hash_table *htab =
+    elf_aarch64_hash_table (info);
+
+  if (!is_elf_hash_table (&htab->root.root))
+    return 0;
+
+  /* Count the number of input BFDs and find the top input section id.  */
+  for (input_bfd = info->input_bfds, bfd_count = 0, top_id = 0;
+       input_bfd != NULL; input_bfd = input_bfd->link.next)
+    {
+      bfd_count += 1;
+      for (section = input_bfd->sections;
+	   section != NULL; section = section->next)
+	{
+	  if (top_id < section->id)
+	    top_id = section->id;
+	}
+    }
+  htab->bfd_count = bfd_count;
+
+  amt = sizeof (struct map_stub) * (top_id + 1);
+  htab->stub_group = bfd_zmalloc (amt);
+  if (htab->stub_group == NULL)
+    return -1;
+
+  /* We can't use output_bfd->section_count here to find the top output
+     section index as some sections may have been removed, and
+     _bfd_strip_section_from_output doesn't renumber the indices.  */
+  for (section = output_bfd->sections, top_index = 0;
+       section != NULL; section = section->next)
+    {
+      if (top_index < section->index)
+	top_index = section->index;
+    }
+
+  htab->top_index = top_index;
+  amt = sizeof (asection *) * (top_index + 1);
+  input_list = bfd_malloc (amt);
+  htab->input_list = input_list;
+  if (input_list == NULL)
+    return -1;
+
+  /* For sections we aren't interested in, mark their entries with a
+     value we can check later.  */
+  list = input_list + top_index;
+  do
+    *list = bfd_abs_section_ptr;
+  while (list-- != input_list);
+
+  for (section = output_bfd->sections;
+       section != NULL; section = section->next)
+    {
+      if ((section->flags & SEC_CODE) != 0)
+	input_list[section->index] = NULL;
+    }
+
+  return 1;
+}
+
+/* Used by elfNN_aarch64_next_input_section and group_sections.  */
+#define PREV_SEC(sec) (htab->stub_group[(sec)->id].link_sec)
+
+/* The linker repeatedly calls this function for each input section,
+   in the order that input sections are linked into output sections.
+   Build lists of input sections to determine groupings between which
+   we may insert linker stubs.  */
+
+void
+elfNN_aarch64_next_input_section (struct bfd_link_info *info, asection *isec)
+{
+  struct elf_aarch64_link_hash_table *htab =
+    elf_aarch64_hash_table (info);
+
+  if (isec->output_section->index <= htab->top_index)
+    {
+      asection **list = htab->input_list + isec->output_section->index;
+
+      if (*list != bfd_abs_section_ptr && (isec->flags & SEC_CODE) != 0)
+	{
+	  /* Steal the link_sec pointer for our list.  */
+	  /* This happens to make the list in reverse order,
+	     which is what we want.  */
+	  PREV_SEC (isec) = *list;
+	  *list = isec;
+	}
+    }
+}
+
+/* See whether we can group stub sections together.  Grouping stub
+   sections may result in fewer stubs.  More importantly, we need to
+   put all .init* and .fini* stubs at the beginning of the .init or
+   .fini output sections respectively, because glibc splits the
+   _init and _fini functions into multiple parts.  Putting a stub in
+   the middle of a function is not a good idea.  */
+
+static void
+group_sections (struct elf_aarch64_link_hash_table *htab,
+		bfd_size_type stub_group_size,
+		bool stubs_always_after_branch)
+{
+  asection **list = htab->input_list;
+
+  do
+    {
+      asection *tail = *list;
+      asection *head;
+
+      if (tail == bfd_abs_section_ptr)
+	continue;
+
+      /* Reverse the list: we must avoid placing stubs at the
+	 beginning of the section because the beginning of the text
+	 section may be required for an interrupt vector in bare metal
+	 code.  */
+#define NEXT_SEC PREV_SEC
+      head = NULL;
+      while (tail != NULL)
+	{
+	  /* Pop from tail.  */
+	  asection *item = tail;
+	  tail = PREV_SEC (item);
+
+	  /* Push on head.  */
+	  NEXT_SEC (item) = head;
+	  head = item;
+	}
+
+      while (head != NULL)
+	{
+	  asection *curr;
+	  asection *next;
+	  bfd_vma stub_group_start = head->output_offset;
+	  bfd_vma end_of_next;
+
+	  curr = head;
+	  while (NEXT_SEC (curr) != NULL)
+	    {
+	      next = NEXT_SEC (curr);
+	      end_of_next = next->output_offset + next->size;
+	      if (end_of_next - stub_group_start >= stub_group_size)
+		/* End of NEXT is too far from start, so stop.  */
+		break;
+	      /* Add NEXT to the group.  */
+	      curr = next;
+	    }
+
+	  /* OK, the size from the start to the start of CURR is less
+	     than stub_group_size and thus can be handled by one stub
+	     section.  (Or the head section is itself larger than
+	     stub_group_size, in which case we may be toast.)
+	     We should really be keeping track of the total size of
+	     stubs added here, as stubs contribute to the final output
+	     section size.  */
+	  do
+	    {
+	      next = NEXT_SEC (head);
+	      /* Set up this stub group.  */
+	      htab->stub_group[head->id].link_sec = curr;
+	    }
+	  while (head != curr && (head = next) != NULL);
+
+	  /* But wait, there's more!  Input sections up to stub_group_size
+	     bytes after the stub section can be handled by it too.  */
+	  if (!stubs_always_after_branch)
+	    {
+	      stub_group_start = curr->output_offset + curr->size;
+
+	      while (next != NULL)
+		{
+		  end_of_next = next->output_offset + next->size;
+		  if (end_of_next - stub_group_start >= stub_group_size)
+		    /* End of NEXT is too far from stubs, so stop.  */
+		    break;
+		  /* Add NEXT to the stub group.  */
+		  head = next;
+		  next = NEXT_SEC (head);
+		  htab->stub_group[head->id].link_sec = curr;
+		}
+	    }
+	  head = next;
+	}
+    }
+  while (list++ != htab->input_list + htab->top_index);
+
+  free (htab->input_list);
+}
+
+#undef PREV_SEC
+#undef PREV_SEC
+
+#define AARCH64_BITS(x, pos, n) (((x) >> (pos)) & ((1 << (n)) - 1))
+
+#define AARCH64_RT(insn) AARCH64_BITS (insn, 0, 5)
+#define AARCH64_RT2(insn) AARCH64_BITS (insn, 10, 5)
+#define AARCH64_RA(insn) AARCH64_BITS (insn, 10, 5)
+#define AARCH64_RD(insn) AARCH64_BITS (insn, 0, 5)
+#define AARCH64_RN(insn) AARCH64_BITS (insn, 5, 5)
+#define AARCH64_RM(insn) AARCH64_BITS (insn, 16, 5)
+
+#define AARCH64_MAC(insn) (((insn) & 0xff000000) == 0x9b000000)
+#define AARCH64_BIT(insn, n) AARCH64_BITS (insn, n, 1)
+#define AARCH64_OP31(insn) AARCH64_BITS (insn, 21, 3)
+#define AARCH64_ZR 0x1f
+
+/* All ld/st ops.  See C4-182 of the ARM ARM.  The encoding space for
+   LD_PCREL, LDST_RO, LDST_UI and LDST_UIMM cover prefetch ops.  */
+
+#define AARCH64_LD(insn) (AARCH64_BIT (insn, 22) == 1)
+#define AARCH64_LDST(insn) (((insn) & 0x0a000000) == 0x08000000)
+#define AARCH64_LDST_EX(insn) (((insn) & 0x3f000000) == 0x08000000)
+#define AARCH64_LDST_PCREL(insn) (((insn) & 0x3b000000) == 0x18000000)
+#define AARCH64_LDST_NAP(insn) (((insn) & 0x3b800000) == 0x28000000)
+#define AARCH64_LDSTP_PI(insn) (((insn) & 0x3b800000) == 0x28800000)
+#define AARCH64_LDSTP_O(insn) (((insn) & 0x3b800000) == 0x29000000)
+#define AARCH64_LDSTP_PRE(insn) (((insn) & 0x3b800000) == 0x29800000)
+#define AARCH64_LDST_UI(insn) (((insn) & 0x3b200c00) == 0x38000000)
+#define AARCH64_LDST_PIIMM(insn) (((insn) & 0x3b200c00) == 0x38000400)
+#define AARCH64_LDST_U(insn) (((insn) & 0x3b200c00) == 0x38000800)
+#define AARCH64_LDST_PREIMM(insn) (((insn) & 0x3b200c00) == 0x38000c00)
+#define AARCH64_LDST_RO(insn) (((insn) & 0x3b200c00) == 0x38200800)
+#define AARCH64_LDST_UIMM(insn) (((insn) & 0x3b000000) == 0x39000000)
+#define AARCH64_LDST_SIMD_M(insn) (((insn) & 0xbfbf0000) == 0x0c000000)
+#define AARCH64_LDST_SIMD_M_PI(insn) (((insn) & 0xbfa00000) == 0x0c800000)
+#define AARCH64_LDST_SIMD_S(insn) (((insn) & 0xbf9f0000) == 0x0d000000)
+#define AARCH64_LDST_SIMD_S_PI(insn) (((insn) & 0xbf800000) == 0x0d800000)
+
+/* Classify an INSN if it is indeed a load/store.
+
+   Return TRUE if INSN is a LD/ST instruction otherwise return FALSE.
+
+   For scalar LD/ST instructions PAIR is FALSE, RT is returned and RT2
+   is set equal to RT.
+
+   For LD/ST pair instructions PAIR is TRUE, RT and RT2 are returned.  */
+
+static bool
+aarch64_mem_op_p (uint32_t insn, unsigned int *rt, unsigned int *rt2,
+		  bool *pair, bool *load)
+{
+  uint32_t opcode;
+  unsigned int r;
+  uint32_t opc = 0;
+  uint32_t v = 0;
+  uint32_t opc_v = 0;
+
+  /* Bail out quickly if INSN doesn't fall into the load-store
+     encoding space.  */
+  if (!AARCH64_LDST (insn))
+    return false;
+
+  *pair = false;
+  *load = false;
+  if (AARCH64_LDST_EX (insn))
+    {
+      *rt = AARCH64_RT (insn);
+      *rt2 = *rt;
+      if (AARCH64_BIT (insn, 21) == 1)
+	{
+	  *pair = true;
+	  *rt2 = AARCH64_RT2 (insn);
+	}
+      *load = AARCH64_LD (insn);
+      return true;
+    }
+  else if (AARCH64_LDST_NAP (insn)
+	   || AARCH64_LDSTP_PI (insn)
+	   || AARCH64_LDSTP_O (insn)
+	   || AARCH64_LDSTP_PRE (insn))
+    {
+      *pair = true;
+      *rt = AARCH64_RT (insn);
+      *rt2 = AARCH64_RT2 (insn);
+      *load = AARCH64_LD (insn);
+      return true;
+    }
+  else if (AARCH64_LDST_PCREL (insn)
+	   || AARCH64_LDST_UI (insn)
+	   || AARCH64_LDST_PIIMM (insn)
+	   || AARCH64_LDST_U (insn)
+	   || AARCH64_LDST_PREIMM (insn)
+	   || AARCH64_LDST_RO (insn)
+	   || AARCH64_LDST_UIMM (insn))
+   {
+      *rt = AARCH64_RT (insn);
+      *rt2 = *rt;
+      if (AARCH64_LDST_PCREL (insn))
+	*load = true;
+      opc = AARCH64_BITS (insn, 22, 2);
+      v = AARCH64_BIT (insn, 26);
+      opc_v = opc | (v << 2);
+      *load =  (opc_v == 1 || opc_v == 2 || opc_v == 3
+		|| opc_v == 5 || opc_v == 7);
+      return true;
+   }
+  else if (AARCH64_LDST_SIMD_M (insn)
+	   || AARCH64_LDST_SIMD_M_PI (insn))
+    {
+      *rt = AARCH64_RT (insn);
+      *load = AARCH64_BIT (insn, 22);
+      opcode = (insn >> 12) & 0xf;
+      switch (opcode)
+	{
+	case 0:
+	case 2:
+	  *rt2 = *rt + 3;
+	  break;
+
+	case 4:
+	case 6:
+	  *rt2 = *rt + 2;
+	  break;
+
+	case 7:
+	  *rt2 = *rt;
+	  break;
+
+	case 8:
+	case 10:
+	  *rt2 = *rt + 1;
+	  break;
+
+	default:
+	  return false;
+	}
+      return true;
+    }
+  else if (AARCH64_LDST_SIMD_S (insn)
+	   || AARCH64_LDST_SIMD_S_PI (insn))
+    {
+      *rt = AARCH64_RT (insn);
+      r = (insn >> 21) & 1;
+      *load = AARCH64_BIT (insn, 22);
+      opcode = (insn >> 13) & 0x7;
+      switch (opcode)
+	{
+	case 0:
+	case 2:
+	case 4:
+	  *rt2 = *rt + r;
+	  break;
+
+	case 1:
+	case 3:
+	case 5:
+	  *rt2 = *rt + (r == 0 ? 2 : 3);
+	  break;
+
+	case 6:
+	  *rt2 = *rt + r;
+	  break;
+
+	case 7:
+	  *rt2 = *rt + (r == 0 ? 2 : 3);
+	  break;
+
+	default:
+	  return false;
+	}
+      return true;
+    }
+
+  return false;
+}
+
+/* Return TRUE if INSN is multiply-accumulate.  */
+
+static bool
+aarch64_mlxl_p (uint32_t insn)
+{
+  uint32_t op31 = AARCH64_OP31 (insn);
+
+  if (AARCH64_MAC (insn)
+      && (op31 == 0 || op31 == 1 || op31 == 5)
+      /* Exclude MUL instructions which are encoded as a multiple accumulate
+	 with RA = XZR.  */
+      && AARCH64_RA (insn) != AARCH64_ZR)
+    return true;
+
+  return false;
+}
+
+/* Some early revisions of the Cortex-A53 have an erratum (835769) whereby
+   it is possible for a 64-bit multiply-accumulate instruction to generate an
+   incorrect result.  The details are quite complex and hard to
+   determine statically, since branches in the code may exist in some
+   circumstances, but all cases end with a memory (load, store, or
+   prefetch) instruction followed immediately by the multiply-accumulate
+   operation.  We employ a linker patching technique, by moving the potentially
+   affected multiply-accumulate instruction into a patch region and replacing
+   the original instruction with a branch to the patch.  This function checks
+   if INSN_1 is the memory operation followed by a multiply-accumulate
+   operation (INSN_2).  Return TRUE if an erratum sequence is found, FALSE
+   if INSN_1 and INSN_2 are safe.  */
+
+static bool
+aarch64_erratum_sequence (uint32_t insn_1, uint32_t insn_2)
+{
+  uint32_t rt;
+  uint32_t rt2;
+  uint32_t rn;
+  uint32_t rm;
+  uint32_t ra;
+  bool pair;
+  bool load;
+
+  if (aarch64_mlxl_p (insn_2)
+      && aarch64_mem_op_p (insn_1, &rt, &rt2, &pair, &load))
+    {
+      /* Any SIMD memory op is independent of the subsequent MLA
+	 by definition of the erratum.  */
+      if (AARCH64_BIT (insn_1, 26))
+	return true;
+
+      /* If not SIMD, check for integer memory ops and MLA relationship.  */
+      rn = AARCH64_RN (insn_2);
+      ra = AARCH64_RA (insn_2);
+      rm = AARCH64_RM (insn_2);
+
+      /* If this is a load and there's a true(RAW) dependency, we are safe
+	 and this is not an erratum sequence.  */
+      if (load &&
+	  (rt == rn || rt == rm || rt == ra
+	   || (pair && (rt2 == rn || rt2 == rm || rt2 == ra))))
+	return false;
+
+      /* We conservatively put out stubs for all other cases (including
+	 writebacks).  */
+      return true;
+    }
+
+  return false;
+}
+
+/* Used to order a list of mapping symbols by address.  */
+
+static int
+elf_aarch64_compare_mapping (const void *a, const void *b)
+{
+  const elf_aarch64_section_map *amap = (const elf_aarch64_section_map *) a;
+  const elf_aarch64_section_map *bmap = (const elf_aarch64_section_map *) b;
+
+  if (amap->vma > bmap->vma)
+    return 1;
+  else if (amap->vma < bmap->vma)
+    return -1;
+  else if (amap->type > bmap->type)
+    /* Ensure results do not depend on the host qsort for objects with
+       multiple mapping symbols at the same address by sorting on type
+       after vma.  */
+    return 1;
+  else if (amap->type < bmap->type)
+    return -1;
+  else
+    return 0;
+}
+
+
+static char *
+_bfd_aarch64_erratum_835769_stub_name (unsigned num_fixes)
+{
+  char *stub_name = (char *) bfd_malloc
+    (strlen ("__erratum_835769_veneer_") + 16);
+  if (stub_name != NULL)
+    sprintf (stub_name,"__erratum_835769_veneer_%d", num_fixes);
+  return stub_name;
+}
+
+/* Scan for Cortex-A53 erratum 835769 sequence.
+
+   Return TRUE else FALSE on abnormal termination.  */
+
+static bool
+_bfd_aarch64_erratum_835769_scan (bfd *input_bfd,
+				  struct bfd_link_info *info,
+				  unsigned int *num_fixes_p)
+{
+  asection *section;
+  struct elf_aarch64_link_hash_table *htab = elf_aarch64_hash_table (info);
+  unsigned int num_fixes = *num_fixes_p;
+
+  if (htab == NULL)
+    return true;
+
+  for (section = input_bfd->sections;
+       section != NULL;
+       section = section->next)
+    {
+      bfd_byte *contents = NULL;
+      struct _aarch64_elf_section_data *sec_data;
+      unsigned int span;
+
+      if (elf_section_type (section) != SHT_PROGBITS
+	  || (elf_section_flags (section) & SHF_EXECINSTR) == 0
+	  || (section->flags & SEC_EXCLUDE) != 0
+	  || (section->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
+	  || (section->output_section == bfd_abs_section_ptr))
+	continue;
+
+      if (elf_section_data (section)->this_hdr.contents != NULL)
+	contents = elf_section_data (section)->this_hdr.contents;
+      else if (! bfd_malloc_and_get_section (input_bfd, section, &contents))
+	return false;
+
+      sec_data = elf_aarch64_section_data (section);
+
+      if (sec_data->mapcount)
+	qsort (sec_data->map, sec_data->mapcount,
+	       sizeof (elf_aarch64_section_map), elf_aarch64_compare_mapping);
+
+      for (span = 0; span < sec_data->mapcount; span++)
+	{
+	  unsigned int span_start = sec_data->map[span].vma;
+	  unsigned int span_end = ((span == sec_data->mapcount - 1)
+				   ? sec_data->map[0].vma + section->size
+				   : sec_data->map[span + 1].vma);
+	  unsigned int i;
+	  char span_type = sec_data->map[span].type;
+
+	  if (span_type == 'd')
+	    continue;
+
+	  for (i = span_start; i + 4 < span_end; i += 4)
+	    {
+	      uint32_t insn_1 = bfd_getl32 (contents + i);
+	      uint32_t insn_2 = bfd_getl32 (contents + i + 4);
+
+	      if (aarch64_erratum_sequence (insn_1, insn_2))
+		{
+		  struct elf_aarch64_stub_hash_entry *stub_entry;
+		  char *stub_name = _bfd_aarch64_erratum_835769_stub_name (num_fixes);
+		  if (! stub_name)
+		    return false;
+
+		  stub_entry = _bfd_aarch64_add_stub_entry_in_group (stub_name,
+								     section,
+								     htab);
+		  if (! stub_entry)
+		    return false;
+
+		  stub_entry->stub_type = aarch64_stub_erratum_835769_veneer;
+		  stub_entry->target_section = section;
+		  stub_entry->target_value = i + 4;
+		  stub_entry->veneered_insn = insn_2;
+		  stub_entry->output_name = stub_name;
+		  num_fixes++;
+		}
+	    }
+	}
+      if (elf_section_data (section)->this_hdr.contents == NULL)
+	free (contents);
+    }
+
+  *num_fixes_p = num_fixes;
+
+  return true;
+}
+
+
+/* Test if instruction INSN is ADRP.  */
+
+static bool
+_bfd_aarch64_adrp_p (uint32_t insn)
+{
+  return ((insn & AARCH64_ADRP_OP_MASK) == AARCH64_ADRP_OP);
+}
+
+
+/* Helper predicate to look for cortex-a53 erratum 843419 sequence 1.  */
+
+static bool
+_bfd_aarch64_erratum_843419_sequence_p (uint32_t insn_1, uint32_t insn_2,
+					uint32_t insn_3)
+{
+  uint32_t rt;
+  uint32_t rt2;
+  bool pair;
+  bool load;
+
+  return (aarch64_mem_op_p (insn_2, &rt, &rt2, &pair, &load)
+	  && (!pair
+	      || (pair && !load))
+	  && AARCH64_LDST_UIMM (insn_3)
+	  && AARCH64_RN (insn_3) == AARCH64_RD (insn_1));
+}
+
+
+/* Test for the presence of Cortex-A53 erratum 843419 instruction sequence.
+
+   Return TRUE if section CONTENTS at offset I contains one of the
+   erratum 843419 sequences, otherwise return FALSE.  If a sequence is
+   seen set P_VENEER_I to the offset of the final LOAD/STORE
+   instruction in the sequence.
+ */
+
+static bool
+_bfd_aarch64_erratum_843419_p (bfd_byte *contents, bfd_vma vma,
+			       bfd_vma i, bfd_vma span_end,
+			       bfd_vma *p_veneer_i)
+{
+  uint32_t insn_1 = bfd_getl32 (contents + i);
+
+  if (!_bfd_aarch64_adrp_p (insn_1))
+    return false;
+
+  if (span_end < i + 12)
+    return false;
+
+  uint32_t insn_2 = bfd_getl32 (contents + i + 4);
+  uint32_t insn_3 = bfd_getl32 (contents + i + 8);
+
+  if ((vma & 0xfff) != 0xff8 && (vma & 0xfff) != 0xffc)
+    return false;
+
+  if (_bfd_aarch64_erratum_843419_sequence_p (insn_1, insn_2, insn_3))
+    {
+      *p_veneer_i = i + 8;
+      return true;
+    }
+
+  if (span_end < i + 16)
+    return false;
+
+  uint32_t insn_4 = bfd_getl32 (contents + i + 12);
+
+  if (_bfd_aarch64_erratum_843419_sequence_p (insn_1, insn_2, insn_4))
+    {
+      *p_veneer_i = i + 12;
+      return true;
+    }
+
+  return false;
+}
+
+
+/* Resize all stub sections.  */
+
+static void
+_bfd_aarch64_resize_stubs (struct elf_aarch64_link_hash_table *htab)
+{
+  asection *section;
+
+  /* OK, we've added some stubs.  Find out the new size of the
+     stub sections.  */
+  for (section = htab->stub_bfd->sections;
+       section != NULL; section = section->next)
+    {
+      /* Ignore non-stub sections.  */
+      if (!strstr (section->name, STUB_SUFFIX))
+	continue;
+      section->size = 0;
+    }
+
+  bfd_hash_traverse (&htab->stub_hash_table, aarch64_size_one_stub, htab);
+
+  for (section = htab->stub_bfd->sections;
+       section != NULL; section = section->next)
+    {
+      if (!strstr (section->name, STUB_SUFFIX))
+	continue;
+
+      /* Add space for a branch.  Add 8 bytes to keep section 8 byte aligned,
+	 as long branch stubs contain a 64-bit address.  */
+      if (section->size)
+	section->size += 8;
+
+      /* Ensure all stub sections have a size which is a multiple of
+	 4096.  This is important in order to ensure that the insertion
+	 of stub sections does not in itself move existing code around
+	 in such a way that new errata sequences are created.  We only do this
+	 when the ADRP workaround is enabled.  If only the ADR workaround is
+	 enabled then the stubs workaround won't ever be used.  */
+      if (htab->fix_erratum_843419 & ERRAT_ADRP)
+	if (section->size)
+	  section->size = BFD_ALIGN (section->size, 0x1000);
+    }
+}
+
+/* Construct an erratum 843419 workaround stub name.  */
+
+static char *
+_bfd_aarch64_erratum_843419_stub_name (asection *input_section,
+				       bfd_vma offset)
+{
+  const bfd_size_type len = 8 + 4 + 1 + 8 + 1 + 16 + 1;
+  char *stub_name = bfd_malloc (len);
+
+  if (stub_name != NULL)
+    snprintf (stub_name, len, "e843419@%04x_%08x_%" BFD_VMA_FMT "x",
+	      input_section->owner->id,
+	      input_section->id,
+	      offset);
+  return stub_name;
+}
+
+/*  Build a stub_entry structure describing an 843419 fixup.
+
+    The stub_entry constructed is populated with the bit pattern INSN
+    of the instruction located at OFFSET within input SECTION.
+
+    Returns TRUE on success.  */
+
+static bool
+_bfd_aarch64_erratum_843419_fixup (uint32_t insn,
+				   bfd_vma adrp_offset,
+				   bfd_vma ldst_offset,
+				   asection *section,
+				   struct bfd_link_info *info)
+{
+  struct elf_aarch64_link_hash_table *htab = elf_aarch64_hash_table (info);
+  char *stub_name;
+  struct elf_aarch64_stub_hash_entry *stub_entry;
+
+  stub_name = _bfd_aarch64_erratum_843419_stub_name (section, ldst_offset);
+  if (stub_name == NULL)
+    return false;
+  stub_entry = aarch64_stub_hash_lookup (&htab->stub_hash_table, stub_name,
+					 false, false);
+  if (stub_entry)
+    {
+      free (stub_name);
+      return true;
+    }
+
+  /* We always place an 843419 workaround veneer in the stub section
+     attached to the input section in which an erratum sequence has
+     been found.  This ensures that later in the link process (in
+     elfNN_aarch64_write_section) when we copy the veneered
+     instruction from the input section into the stub section the
+     copied instruction will have had any relocations applied to it.
+     If we placed workaround veneers in any other stub section then we
+     could not assume that all relocations have been processed on the
+     corresponding input section at the point we output the stub
+     section.  */
+
+  stub_entry = _bfd_aarch64_add_stub_entry_after (stub_name, section, htab);
+  if (stub_entry == NULL)
+    {
+      free (stub_name);
+      return false;
+    }
+
+  stub_entry->adrp_offset = adrp_offset;
+  stub_entry->target_value = ldst_offset;
+  stub_entry->target_section = section;
+  stub_entry->stub_type = aarch64_stub_erratum_843419_veneer;
+  stub_entry->veneered_insn = insn;
+  stub_entry->output_name = stub_name;
+
+  return true;
+}
+
+
+/* Scan an input section looking for the signature of erratum 843419.
+
+   Scans input SECTION in INPUT_BFD looking for erratum 843419
+   signatures, for each signature found a stub_entry is created
+   describing the location of the erratum for subsequent fixup.
+
+   Return TRUE on successful scan, FALSE on failure to scan.
+ */
+
+static bool
+_bfd_aarch64_erratum_843419_scan (bfd *input_bfd, asection *section,
+				  struct bfd_link_info *info)
+{
+  struct elf_aarch64_link_hash_table *htab = elf_aarch64_hash_table (info);
+
+  if (htab == NULL)
+    return true;
+
+  if (elf_section_type (section) != SHT_PROGBITS
+      || (elf_section_flags (section) & SHF_EXECINSTR) == 0
+      || (section->flags & SEC_EXCLUDE) != 0
+      || (section->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
+      || (section->output_section == bfd_abs_section_ptr))
+    return true;
+
+  do
+    {
+      bfd_byte *contents = NULL;
+      struct _aarch64_elf_section_data *sec_data;
+      unsigned int span;
+
+      if (elf_section_data (section)->this_hdr.contents != NULL)
+	contents = elf_section_data (section)->this_hdr.contents;
+      else if (! bfd_malloc_and_get_section (input_bfd, section, &contents))
+	return false;
+
+      sec_data = elf_aarch64_section_data (section);
+
+      if (sec_data->mapcount)
+	qsort (sec_data->map, sec_data->mapcount,
+	       sizeof (elf_aarch64_section_map), elf_aarch64_compare_mapping);
+
+      for (span = 0; span < sec_data->mapcount; span++)
+	{
+	  unsigned int span_start = sec_data->map[span].vma;
+	  unsigned int span_end = ((span == sec_data->mapcount - 1)
+				   ? sec_data->map[0].vma + section->size
+				   : sec_data->map[span + 1].vma);
+	  unsigned int i;
+	  char span_type = sec_data->map[span].type;
+
+	  if (span_type == 'd')
+	    continue;
+
+	  for (i = span_start; i + 8 < span_end; i += 4)
+	    {
+	      bfd_vma vma = (section->output_section->vma
+			     + section->output_offset
+			     + i);
+	      bfd_vma veneer_i;
+
+	      if (_bfd_aarch64_erratum_843419_p
+		  (contents, vma, i, span_end, &veneer_i))
+		{
+		  uint32_t insn = bfd_getl32 (contents + veneer_i);
+
+		  if (!_bfd_aarch64_erratum_843419_fixup (insn, i, veneer_i,
+							  section, info))
+		    return false;
+		}
+	    }
+	}
+
+      if (elf_section_data (section)->this_hdr.contents == NULL)
+	free (contents);
+    }
+  while (0);
+
+  return true;
+}
+
+
+/* Determine and set the size of the stub section for a final link.
+
+   The basic idea here is to examine all the relocations looking for
+   PC-relative calls to a target that is unreachable with a "bl"
+   instruction.  */
+
+bool
+elfNN_aarch64_size_stubs (bfd *output_bfd,
+			  bfd *stub_bfd,
+			  struct bfd_link_info *info,
+			  bfd_signed_vma group_size,
+			  asection * (*add_stub_section) (const char *,
+							  asection *),
+			  void (*layout_sections_again) (void))
+{
+  bfd_size_type stub_group_size;
+  bool stubs_always_before_branch;
+  bool stub_changed = false;
+  struct elf_aarch64_link_hash_table *htab = elf_aarch64_hash_table (info);
+  unsigned int num_erratum_835769_fixes = 0;
+
+  /* Propagate mach to stub bfd, because it may not have been
+     finalized when we created stub_bfd.  */
+  bfd_set_arch_mach (stub_bfd, bfd_get_arch (output_bfd),
+		     bfd_get_mach (output_bfd));
+
+  /* Stash our params away.  */
+  htab->stub_bfd = stub_bfd;
+  htab->add_stub_section = add_stub_section;
+  htab->layout_sections_again = layout_sections_again;
+  stubs_always_before_branch = group_size < 0;
+  if (group_size < 0)
+    stub_group_size = -group_size;
+  else
+    stub_group_size = group_size;
+
+  if (stub_group_size == 1)
+    {
+      /* Default values.  */
+      /* AArch64 branch range is +-128MB. The value used is 1MB less.  */
+      stub_group_size = 127 * 1024 * 1024;
+    }
+
+  group_sections (htab, stub_group_size, stubs_always_before_branch);
+
+  (*htab->layout_sections_again) ();
+
+  if (htab->fix_erratum_835769)
+    {
+      bfd *input_bfd;
+
+      for (input_bfd = info->input_bfds;
+	   input_bfd != NULL; input_bfd = input_bfd->link.next)
+	{
+	  if (!is_aarch64_elf (input_bfd)
+	      || (input_bfd->flags & BFD_LINKER_CREATED) != 0)
+	    continue;
+
+	  if (!_bfd_aarch64_erratum_835769_scan (input_bfd, info,
+						 &num_erratum_835769_fixes))
+	    return false;
+	}
+
+      _bfd_aarch64_resize_stubs (htab);
+      (*htab->layout_sections_again) ();
+    }
+
+  if (htab->fix_erratum_843419 != ERRAT_NONE)
+    {
+      bfd *input_bfd;
+
+      for (input_bfd = info->input_bfds;
+	   input_bfd != NULL;
+	   input_bfd = input_bfd->link.next)
+	{
+	  asection *section;
+
+	  if (!is_aarch64_elf (input_bfd)
+	      || (input_bfd->flags & BFD_LINKER_CREATED) != 0)
+	    continue;
+
+	  for (section = input_bfd->sections;
+	       section != NULL;
+	       section = section->next)
+	    if (!_bfd_aarch64_erratum_843419_scan (input_bfd, section, info))
+	      return false;
+	}
+
+      _bfd_aarch64_resize_stubs (htab);
+      (*htab->layout_sections_again) ();
+    }
+
+  while (1)
+    {
+      bfd *input_bfd;
+
+      for (input_bfd = info->input_bfds;
+	   input_bfd != NULL; input_bfd = input_bfd->link.next)
+	{
+	  Elf_Internal_Shdr *symtab_hdr;
+	  asection *section;
+	  Elf_Internal_Sym *local_syms = NULL;
+
+	  if (!is_aarch64_elf (input_bfd)
+	      || (input_bfd->flags & BFD_LINKER_CREATED) != 0)
+	    continue;
+
+	  /* We'll need the symbol table in a second.  */
+	  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
+	  if (symtab_hdr->sh_info == 0)
+	    continue;
+
+	  /* Walk over each section attached to the input bfd.  */
+	  for (section = input_bfd->sections;
+	       section != NULL; section = section->next)
+	    {
+	      Elf_Internal_Rela *internal_relocs, *irelaend, *irela;
+
+	      /* If there aren't any relocs, then there's nothing more
+		 to do.  */
+	      if ((section->flags & SEC_RELOC) == 0
+		  || section->reloc_count == 0
+		  || (section->flags & SEC_CODE) == 0)
+		continue;
+
+	      /* If this section is a link-once section that will be
+		 discarded, then don't create any stubs.  */
+	      if (section->output_section == NULL
+		  || section->output_section->owner != output_bfd)
+		continue;
+
+	      /* Get the relocs.  */
+	      internal_relocs
+		= _bfd_elf_link_read_relocs (input_bfd, section, NULL,
+					     NULL, info->keep_memory);
+	      if (internal_relocs == NULL)
+		goto error_ret_free_local;
+
+	      /* Now examine each relocation.  */
+	      irela = internal_relocs;
+	      irelaend = irela + section->reloc_count;
+	      for (; irela < irelaend; irela++)
+		{
+		  unsigned int r_type, r_indx;
+		  enum elf_aarch64_stub_type stub_type;
+		  struct elf_aarch64_stub_hash_entry *stub_entry;
+		  asection *sym_sec;
+		  bfd_vma sym_value;
+		  bfd_vma destination;
+		  struct elf_aarch64_link_hash_entry *hash;
+		  const char *sym_name;
+		  char *stub_name;
+		  const asection *id_sec;
+		  unsigned char st_type;
+		  bfd_size_type len;
+
+		  r_type = ELFNN_R_TYPE (irela->r_info);
+		  r_indx = ELFNN_R_SYM (irela->r_info);
+
+		  if (r_type >= (unsigned int) R_AARCH64_end)
+		    {
+		      bfd_set_error (bfd_error_bad_value);
+		    error_ret_free_internal:
+		      if (elf_section_data (section)->relocs == NULL)
+			free (internal_relocs);
+		      goto error_ret_free_local;
+		    }
+
+		  /* Only look for stubs on unconditional branch and
+		     branch and link instructions.  */
+		  if (r_type != (unsigned int) AARCH64_R (CALL26)
+		      && r_type != (unsigned int) AARCH64_R (JUMP26))
+		    continue;
+
+		  /* Now determine the call target, its name, value,
+		     section.  */
+		  sym_sec = NULL;
+		  sym_value = 0;
+		  destination = 0;
+		  hash = NULL;
+		  sym_name = NULL;
+		  if (r_indx < symtab_hdr->sh_info)
+		    {
+		      /* It's a local symbol.  */
+		      Elf_Internal_Sym *sym;
+		      Elf_Internal_Shdr *hdr;
+
+		      if (local_syms == NULL)
+			{
+			  local_syms
+			    = (Elf_Internal_Sym *) symtab_hdr->contents;
+			  if (local_syms == NULL)
+			    local_syms
+			      = bfd_elf_get_elf_syms (input_bfd, symtab_hdr,
+						      symtab_hdr->sh_info, 0,
+						      NULL, NULL, NULL);
+			  if (local_syms == NULL)
+			    goto error_ret_free_internal;
+			}
+
+		      sym = local_syms + r_indx;
+		      hdr = elf_elfsections (input_bfd)[sym->st_shndx];
+		      sym_sec = hdr->bfd_section;
+		      if (!sym_sec)
+			/* This is an undefined symbol.  It can never
+			   be resolved.  */
+			continue;
+
+		      if (ELF_ST_TYPE (sym->st_info) != STT_SECTION)
+			sym_value = sym->st_value;
+		      destination = (sym_value + irela->r_addend
+				     + sym_sec->output_offset
+				     + sym_sec->output_section->vma);
+		      st_type = ELF_ST_TYPE (sym->st_info);
+		      sym_name
+			= bfd_elf_string_from_elf_section (input_bfd,
+							   symtab_hdr->sh_link,
+							   sym->st_name);
+		    }
+		  else
+		    {
+		      int e_indx;
+
+		      e_indx = r_indx - symtab_hdr->sh_info;
+		      hash = ((struct elf_aarch64_link_hash_entry *)
+			      elf_sym_hashes (input_bfd)[e_indx]);
+
+		      while (hash->root.root.type == bfd_link_hash_indirect
+			     || hash->root.root.type == bfd_link_hash_warning)
+			hash = ((struct elf_aarch64_link_hash_entry *)
+				hash->root.root.u.i.link);
+
+		      if (hash->root.root.type == bfd_link_hash_defined
+			  || hash->root.root.type == bfd_link_hash_defweak)
+			{
+			  struct elf_aarch64_link_hash_table *globals =
+			    elf_aarch64_hash_table (info);
+			  sym_sec = hash->root.root.u.def.section;
+			  sym_value = hash->root.root.u.def.value;
+			  /* For a destination in a shared library,
+			     use the PLT stub as target address to
+			     decide whether a branch stub is
+			     needed.  */
+			  if (globals->root.splt != NULL && hash != NULL
+			      && hash->root.plt.offset != (bfd_vma) - 1)
+			    {
+			      sym_sec = globals->root.splt;
+			      sym_value = hash->root.plt.offset;
+			      if (sym_sec->output_section != NULL)
+				destination = (sym_value
+					       + sym_sec->output_offset
+					       +
+					       sym_sec->output_section->vma);
+			    }
+			  else if (sym_sec->output_section != NULL)
+			    destination = (sym_value + irela->r_addend
+					   + sym_sec->output_offset
+					   + sym_sec->output_section->vma);
+			}
+		      else if (hash->root.root.type == bfd_link_hash_undefined
+			       || (hash->root.root.type
+				   == bfd_link_hash_undefweak))
+			{
+			  /* For a shared library, use the PLT stub as
+			     target address to decide whether a long
+			     branch stub is needed.
+			     For absolute code, they cannot be handled.  */
+			  struct elf_aarch64_link_hash_table *globals =
+			    elf_aarch64_hash_table (info);
+
+			  if (globals->root.splt != NULL && hash != NULL
+			      && hash->root.plt.offset != (bfd_vma) - 1)
+			    {
+			      sym_sec = globals->root.splt;
+			      sym_value = hash->root.plt.offset;
+			      if (sym_sec->output_section != NULL)
+				destination = (sym_value
+					       + sym_sec->output_offset
+					       +
+					       sym_sec->output_section->vma);
+			    }
+			  else
+			    continue;
+			}
+		      else
+			{
+			  bfd_set_error (bfd_error_bad_value);
+			  goto error_ret_free_internal;
+			}
+		      st_type = ELF_ST_TYPE (hash->root.type);
+		      sym_name = hash->root.root.root.string;
+		    }
+
+		  /* Determine what (if any) linker stub is needed.  */
+		  stub_type = aarch64_type_of_stub (section, irela, sym_sec,
+						    st_type, destination);
+		  if (stub_type == aarch64_stub_none)
+		    continue;
+
+		  /* Support for grouping stub sections.  */
+		  id_sec = htab->stub_group[section->id].link_sec;
+
+		  /* Get the name of this stub.  */
+		  stub_name = elfNN_aarch64_stub_name (id_sec, sym_sec, hash,
+						       irela);
+		  if (!stub_name)
+		    goto error_ret_free_internal;
+
+		  stub_entry =
+		    aarch64_stub_hash_lookup (&htab->stub_hash_table,
+					      stub_name, false, false);
+		  if (stub_entry != NULL)
+		    {
+		      /* The proper stub has already been created.  */
+		      free (stub_name);
+		      /* Always update this stub's target since it may have
+			 changed after layout.  */
+		      stub_entry->target_value = sym_value + irela->r_addend;
+		      continue;
+		    }
+
+		  stub_entry = _bfd_aarch64_add_stub_entry_in_group
+		    (stub_name, section, htab);
+		  if (stub_entry == NULL)
+		    {
+		      free (stub_name);
+		      goto error_ret_free_internal;
+		    }
+
+		  stub_entry->target_value = sym_value + irela->r_addend;
+		  stub_entry->target_section = sym_sec;
+		  stub_entry->stub_type = stub_type;
+		  stub_entry->h = hash;
+		  stub_entry->st_type = st_type;
+
+		  if (sym_name == NULL)
+		    sym_name = "unnamed";
+		  len = sizeof (STUB_ENTRY_NAME) + strlen (sym_name);
+		  stub_entry->output_name = bfd_alloc (htab->stub_bfd, len);
+		  if (stub_entry->output_name == NULL)
+		    {
+		      free (stub_name);
+		      goto error_ret_free_internal;
+		    }
+
+		  snprintf (stub_entry->output_name, len, STUB_ENTRY_NAME,
+			    sym_name);
+
+		  stub_changed = true;
+		}
+
+	      /* We're done with the internal relocs, free them.  */
+	      if (elf_section_data (section)->relocs == NULL)
+		free (internal_relocs);
+	    }
+	}
+
+      if (!stub_changed)
+	break;
+
+      _bfd_aarch64_resize_stubs (htab);
+
+      /* Ask the linker to do its stuff.  */
+      (*htab->layout_sections_again) ();
+      stub_changed = false;
+    }
+
+  return true;
+
+ error_ret_free_local:
+  return false;
+}
+
+/* Build all the stubs associated with the current output file.  The
+   stubs are kept in a hash table attached to the main linker hash
+   table.  We also set up the .plt entries for statically linked PIC
+   functions here.  This function is called via aarch64_elf_finish in the
+   linker.  */
+
+bool
+elfNN_aarch64_build_stubs (struct bfd_link_info *info)
+{
+  asection *stub_sec;
+  struct bfd_hash_table *table;
+  struct elf_aarch64_link_hash_table *htab;
+
+  htab = elf_aarch64_hash_table (info);
+
+  for (stub_sec = htab->stub_bfd->sections;
+       stub_sec != NULL; stub_sec = stub_sec->next)
+    {
+      bfd_size_type size;
+
+      /* Ignore non-stub sections.  */
+      if (!strstr (stub_sec->name, STUB_SUFFIX))
+	continue;
+
+      /* Allocate memory to hold the linker stubs.  */
+      size = stub_sec->size;
+      stub_sec->contents = bfd_zalloc (htab->stub_bfd, size);
+      if (stub_sec->contents == NULL && size != 0)
+	return false;
+      stub_sec->size = 0;
+
+      /* Add a branch around the stub section, and a nop, to keep it 8 byte
+	 aligned, as long branch stubs contain a 64-bit address.  */
+      bfd_putl32 (0x14000000 | (size >> 2), stub_sec->contents);
+      bfd_putl32 (INSN_NOP, stub_sec->contents + 4);
+      stub_sec->size += 8;
+    }
+
+  /* Build the stubs as directed by the stub hash table.  */
+  table = &htab->stub_hash_table;
+  bfd_hash_traverse (table, aarch64_build_one_stub, info);
+
+  return true;
+}
+
+
+/* Add an entry to the code/data map for section SEC.  */
+
+static void
+elfNN_aarch64_section_map_add (asection *sec, char type, bfd_vma vma)
+{
+  struct _aarch64_elf_section_data *sec_data =
+    elf_aarch64_section_data (sec);
+  unsigned int newidx;
+
+  if (sec_data->map == NULL)
+    {
+      sec_data->map = bfd_malloc (sizeof (elf_aarch64_section_map));
+      sec_data->mapcount = 0;
+      sec_data->mapsize = 1;
+    }
+
+  newidx = sec_data->mapcount++;
+
+  if (sec_data->mapcount > sec_data->mapsize)
+    {
+      sec_data->mapsize *= 2;
+      sec_data->map = bfd_realloc_or_free
+	(sec_data->map, sec_data->mapsize * sizeof (elf_aarch64_section_map));
+    }
+
+  if (sec_data->map)
+    {
+      sec_data->map[newidx].vma = vma;
+      sec_data->map[newidx].type = type;
+    }
+}
+
+
+/* Initialise maps of insn/data for input BFDs.  */
+void
+bfd_elfNN_aarch64_init_maps (bfd *abfd)
+{
+  Elf_Internal_Sym *isymbuf;
+  Elf_Internal_Shdr *hdr;
+  unsigned int i, localsyms;
+
+  /* Make sure that we are dealing with an AArch64 elf binary.  */
+  if (!is_aarch64_elf (abfd))
+    return;
+
+  if ((abfd->flags & DYNAMIC) != 0)
+   return;
+
+  hdr = &elf_symtab_hdr (abfd);
+  localsyms = hdr->sh_info;
+
+  /* Obtain a buffer full of symbols for this BFD. The hdr->sh_info field
+     should contain the number of local symbols, which should come before any
+     global symbols.  Mapping symbols are always local.  */
+  isymbuf = bfd_elf_get_elf_syms (abfd, hdr, localsyms, 0, NULL, NULL, NULL);
+
+  /* No internal symbols read?  Skip this BFD.  */
+  if (isymbuf == NULL)
+    return;
+
+  for (i = 0; i < localsyms; i++)
+    {
+      Elf_Internal_Sym *isym = &isymbuf[i];
+      asection *sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
+      const char *name;
+
+      if (sec != NULL && ELF_ST_BIND (isym->st_info) == STB_LOCAL)
+	{
+	  name = bfd_elf_string_from_elf_section (abfd,
+						  hdr->sh_link,
+						  isym->st_name);
+
+	  if (bfd_is_aarch64_special_symbol_name
+	      (name, BFD_AARCH64_SPECIAL_SYM_TYPE_MAP))
+	    elfNN_aarch64_section_map_add (sec, name[1], isym->st_value);
+	}
+    }
+}
+
+static void
+setup_plt_values (struct bfd_link_info *link_info,
+		  aarch64_plt_type plt_type)
+{
+  struct elf_aarch64_link_hash_table *globals;
+  globals = elf_aarch64_hash_table (link_info);
+
+  if (plt_type == PLT_BTI_PAC)
+    {
+      globals->plt0_entry = elfNN_aarch64_small_plt0_bti_entry;
+
+      /* Only in ET_EXEC we need PLTn with BTI.  */
+      if (bfd_link_pde (link_info))
+	{
+	  globals->plt_entry_size = PLT_BTI_PAC_SMALL_ENTRY_SIZE;
+	  globals->plt_entry = elfNN_aarch64_small_plt_bti_pac_entry;
+	}
+      else
+	{
+	  globals->plt_entry_size = PLT_PAC_SMALL_ENTRY_SIZE;
+	  globals->plt_entry = elfNN_aarch64_small_plt_pac_entry;
+	}
+    }
+  else if (plt_type == PLT_BTI)
+    {
+      globals->plt0_entry = elfNN_aarch64_small_plt0_bti_entry;
+
+      /* Only in ET_EXEC we need PLTn with BTI.  */
+      if (bfd_link_pde (link_info))
+	{
+	  globals->plt_entry_size = PLT_BTI_SMALL_ENTRY_SIZE;
+	  globals->plt_entry = elfNN_aarch64_small_plt_bti_entry;
+	}
+    }
+  else if (plt_type == PLT_PAC)
+    {
+      globals->plt_entry_size = PLT_PAC_SMALL_ENTRY_SIZE;
+      globals->plt_entry = elfNN_aarch64_small_plt_pac_entry;
+    }
+}
+
+/* Set option values needed during linking.  */
+void
+bfd_elfNN_aarch64_set_options (struct bfd *output_bfd,
+			       struct bfd_link_info *link_info,
+			       int no_enum_warn,
+			       int no_wchar_warn, int pic_veneer,
+			       int fix_erratum_835769,
+			       erratum_84319_opts fix_erratum_843419,
+			       int no_apply_dynamic_relocs,
+			       aarch64_bti_pac_info bp_info)
+{
+  struct elf_aarch64_link_hash_table *globals;
+
+  globals = elf_aarch64_hash_table (link_info);
+  globals->pic_veneer = pic_veneer;
+  globals->fix_erratum_835769 = fix_erratum_835769;
+  /* If the default options are used, then ERRAT_ADR will be set by default
+     which will enable the ADRP->ADR workaround for the erratum 843419
+     workaround.  */
+  globals->fix_erratum_843419 = fix_erratum_843419;
+  globals->no_apply_dynamic_relocs = no_apply_dynamic_relocs;
+
+  BFD_ASSERT (is_aarch64_elf (output_bfd));
+  elf_aarch64_tdata (output_bfd)->no_enum_size_warning = no_enum_warn;
+  elf_aarch64_tdata (output_bfd)->no_wchar_size_warning = no_wchar_warn;
+
+  switch (bp_info.bti_type)
+    {
+    case BTI_WARN:
+      elf_aarch64_tdata (output_bfd)->no_bti_warn = 0;
+      elf_aarch64_tdata (output_bfd)->gnu_and_prop
+	|= GNU_PROPERTY_AARCH64_FEATURE_1_BTI;
+      break;
+
+    default:
+      break;
+    }
+  elf_aarch64_tdata (output_bfd)->plt_type = bp_info.plt_type;
+  setup_plt_values (link_info, bp_info.plt_type);
+}
+
+static bfd_vma
+aarch64_calculate_got_entry_vma (struct elf_link_hash_entry *h,
+				 struct elf_aarch64_link_hash_table
+				 *globals, struct bfd_link_info *info,
+				 bfd_vma value, bfd *output_bfd,
+				 bool *unresolved_reloc_p)
+{
+  bfd_vma off = (bfd_vma) - 1;
+  asection *basegot = globals->root.sgot;
+  bool dyn = globals->root.dynamic_sections_created;
+
+  if (h != NULL)
+    {
+      BFD_ASSERT (basegot != NULL);
+      off = h->got.offset;
+      BFD_ASSERT (off != (bfd_vma) - 1);
+      if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h)
+	  || (bfd_link_pic (info)
+	      && SYMBOL_REFERENCES_LOCAL (info, h))
+	  || (ELF_ST_VISIBILITY (h->other)
+	      && h->root.type == bfd_link_hash_undefweak))
+	{
+	  /* This is actually a static link, or it is a -Bsymbolic link
+	     and the symbol is defined locally.  We must initialize this
+	     entry in the global offset table.  Since the offset must
+	     always be a multiple of 8 (4 in the case of ILP32), we use
+	     the least significant bit to record whether we have
+	     initialized it already.
+	     When doing a dynamic link, we create a .rel(a).got relocation
+	     entry to initialize the value.  This is done in the
+	     finish_dynamic_symbol routine.  */
+	  if ((off & 1) != 0)
+	    off &= ~1;
+	  else
+	    {
+	      bfd_put_NN (output_bfd, value, basegot->contents + off);
+	      h->got.offset |= 1;
+	    }
+	}
+      else
+	*unresolved_reloc_p = false;
+
+      off = off + basegot->output_section->vma + basegot->output_offset;
+    }
+
+  return off;
+}
+
+/* Change R_TYPE to a more efficient access model where possible,
+   return the new reloc type.  */
+
+static bfd_reloc_code_real_type
+aarch64_tls_transition_without_check (bfd_reloc_code_real_type r_type,
+				      struct elf_link_hash_entry *h)
+{
+  bool is_local = h == NULL;
+
+  switch (r_type)
+    {
+    case BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:
+    case BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:
+      return (is_local
+	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
+	      : BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21);
+
+    case BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21:
+      return (is_local
+	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
+	      : r_type);
+
+    case BFD_RELOC_AARCH64_TLSDESC_LD_PREL19:
+      return (is_local
+	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
+	      : BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19);
+
+    case BFD_RELOC_AARCH64_TLSDESC_LDR:
+      return (is_local
+	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
+	      : BFD_RELOC_AARCH64_NONE);
+
+    case BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:
+      return (is_local
+	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
+	      : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC);
+
+    case BFD_RELOC_AARCH64_TLSDESC_OFF_G1:
+      return (is_local
+	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
+	      : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1);
+
+    case BFD_RELOC_AARCH64_TLSDESC_LDNN_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
+      return (is_local
+	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
+	      : BFD_RELOC_AARCH64_TLSIE_LDNN_GOTTPREL_LO12_NC);
+
+    case BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21:
+      return is_local ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1 : r_type;
+
+    case BFD_RELOC_AARCH64_TLSIE_LDNN_GOTTPREL_LO12_NC:
+      return is_local ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC : r_type;
+
+    case BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19:
+      return r_type;
+
+    case BFD_RELOC_AARCH64_TLSGD_ADR_PREL21:
+      return (is_local
+	      ? BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12
+	      : BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19);
+
+    case BFD_RELOC_AARCH64_TLSDESC_ADD:
+    case BFD_RELOC_AARCH64_TLSDESC_ADD_LO12:
+    case BFD_RELOC_AARCH64_TLSDESC_CALL:
+      /* Instructions with these relocations will become NOPs.  */
+      return BFD_RELOC_AARCH64_NONE;
+
+    case BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21:
+    case BFD_RELOC_AARCH64_TLSLD_ADR_PREL21:
+      return is_local ? BFD_RELOC_AARCH64_NONE : r_type;
+
+#if ARCH_SIZE == 64
+    case BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC:
+      return is_local
+	? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
+	: BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC;
+
+    case BFD_RELOC_AARCH64_TLSGD_MOVW_G1:
+      return is_local
+	? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
+	: BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1;
+#endif
+
+    default:
+      break;
+    }
+
+  return r_type;
+}
+
+static unsigned int
+aarch64_reloc_got_type (bfd_reloc_code_real_type r_type)
+{
+  switch (r_type)
+    {
+    case BFD_RELOC_AARCH64_ADR_GOT_PAGE:
+    case BFD_RELOC_AARCH64_GOT_LD_PREL19:
+    case BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14:
+    case BFD_RELOC_AARCH64_LD32_GOT_LO12_NC:
+    case BFD_RELOC_AARCH64_LD64_GOTOFF_LO15:
+    case BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15:
+    case BFD_RELOC_AARCH64_LD64_GOT_LO12_NC:
+    case BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC:
+    case BFD_RELOC_AARCH64_MOVW_GOTOFF_G1:
+      return GOT_NORMAL;
+
+    case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:
+    case BFD_RELOC_AARCH64_TLSGD_ADR_PREL21:
+    case BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC:
+    case BFD_RELOC_AARCH64_TLSGD_MOVW_G1:
+    case BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21:
+    case BFD_RELOC_AARCH64_TLSLD_ADR_PREL21:
+      return GOT_TLS_GD;
+
+    case BFD_RELOC_AARCH64_TLSDESC_ADD:
+    case BFD_RELOC_AARCH64_TLSDESC_ADD_LO12:
+    case BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:
+    case BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21:
+    case BFD_RELOC_AARCH64_TLSDESC_CALL:
+    case BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSDESC_LD64_LO12:
+    case BFD_RELOC_AARCH64_TLSDESC_LD_PREL19:
+    case BFD_RELOC_AARCH64_TLSDESC_LDR:
+    case BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:
+    case BFD_RELOC_AARCH64_TLSDESC_OFF_G1:
+      return GOT_TLSDESC_GD;
+
+    case BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21:
+    case BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19:
+    case BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC:
+    case BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1:
+      return GOT_TLS_IE;
+
+    default:
+      break;
+    }
+  return GOT_UNKNOWN;
+}
+
+static bool
+aarch64_can_relax_tls (bfd *input_bfd,
+		       struct bfd_link_info *info,
+		       bfd_reloc_code_real_type r_type,
+		       struct elf_link_hash_entry *h,
+		       unsigned long r_symndx)
+{
+  unsigned int symbol_got_type;
+  unsigned int reloc_got_type;
+
+  if (! IS_AARCH64_TLS_RELAX_RELOC (r_type))
+    return false;
+
+  symbol_got_type = elfNN_aarch64_symbol_got_type (h, input_bfd, r_symndx);
+  reloc_got_type = aarch64_reloc_got_type (r_type);
+
+  if (symbol_got_type == GOT_TLS_IE && GOT_TLS_GD_ANY_P (reloc_got_type))
+    return true;
+
+  if (!bfd_link_executable (info))
+    return false;
+
+  if  (h && h->root.type == bfd_link_hash_undefweak)
+    return false;
+
+  return true;
+}
+
+/* Given the relocation code R_TYPE, return the relaxed bfd reloc
+   enumerator.  */
+
+static bfd_reloc_code_real_type
+aarch64_tls_transition (bfd *input_bfd,
+			struct bfd_link_info *info,
+			unsigned int r_type,
+			struct elf_link_hash_entry *h,
+			unsigned long r_symndx)
+{
+  bfd_reloc_code_real_type bfd_r_type
+    = elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type);
+
+  if (! aarch64_can_relax_tls (input_bfd, info, bfd_r_type, h, r_symndx))
+    return bfd_r_type;
+
+  return aarch64_tls_transition_without_check (bfd_r_type, h);
+}
+
+/* Return the base VMA address which should be subtracted from real addresses
+   when resolving R_AARCH64_TLS_DTPREL relocation.  */
+
+static bfd_vma
+dtpoff_base (struct bfd_link_info *info)
+{
+  /* If tls_sec is NULL, we should have signalled an error already.  */
+  BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL);
+  return elf_hash_table (info)->tls_sec->vma;
+}
+
+/* Return the base VMA address which should be subtracted from real addresses
+   when resolving R_AARCH64_TLS_GOTTPREL64 relocations.  */
+
+static bfd_vma
+tpoff_base (struct bfd_link_info *info)
+{
+  struct elf_link_hash_table *htab = elf_hash_table (info);
+
+  /* If tls_sec is NULL, we should have signalled an error already.  */
+  BFD_ASSERT (htab->tls_sec != NULL);
+
+  bfd_vma base = align_power ((bfd_vma) TCB_SIZE,
+			      htab->tls_sec->alignment_power);
+  return htab->tls_sec->vma - base;
+}
+
+static bfd_vma *
+symbol_got_offset_ref (bfd *input_bfd, struct elf_link_hash_entry *h,
+		       unsigned long r_symndx)
+{
+  /* Calculate the address of the GOT entry for symbol
+     referred to in h.  */
+  if (h != NULL)
+    return &h->got.offset;
+  else
+    {
+      /* local symbol */
+      struct elf_aarch64_local_symbol *l;
+
+      l = elf_aarch64_locals (input_bfd);
+      return &l[r_symndx].got_offset;
+    }
+}
+
+static void
+symbol_got_offset_mark (bfd *input_bfd, struct elf_link_hash_entry *h,
+			unsigned long r_symndx)
+{
+  bfd_vma *p;
+  p = symbol_got_offset_ref (input_bfd, h, r_symndx);
+  *p |= 1;
+}
+
+static int
+symbol_got_offset_mark_p (bfd *input_bfd, struct elf_link_hash_entry *h,
+			  unsigned long r_symndx)
+{
+  bfd_vma value;
+  value = * symbol_got_offset_ref (input_bfd, h, r_symndx);
+  return value & 1;
+}
+
+static bfd_vma
+symbol_got_offset (bfd *input_bfd, struct elf_link_hash_entry *h,
+		   unsigned long r_symndx)
+{
+  bfd_vma value;
+  value = * symbol_got_offset_ref (input_bfd, h, r_symndx);
+  value &= ~1;
+  return value;
+}
+
+static bfd_vma *
+symbol_tlsdesc_got_offset_ref (bfd *input_bfd, struct elf_link_hash_entry *h,
+			       unsigned long r_symndx)
+{
+  /* Calculate the address of the GOT entry for symbol
+     referred to in h.  */
+  if (h != NULL)
+    {
+      struct elf_aarch64_link_hash_entry *eh;
+      eh = (struct elf_aarch64_link_hash_entry *) h;
+      return &eh->tlsdesc_got_jump_table_offset;
+    }
+  else
+    {
+      /* local symbol */
+      struct elf_aarch64_local_symbol *l;
+
+      l = elf_aarch64_locals (input_bfd);
+      return &l[r_symndx].tlsdesc_got_jump_table_offset;
+    }
+}
+
+static void
+symbol_tlsdesc_got_offset_mark (bfd *input_bfd, struct elf_link_hash_entry *h,
+				unsigned long r_symndx)
+{
+  bfd_vma *p;
+  p = symbol_tlsdesc_got_offset_ref (input_bfd, h, r_symndx);
+  *p |= 1;
+}
+
+static int
+symbol_tlsdesc_got_offset_mark_p (bfd *input_bfd,
+				  struct elf_link_hash_entry *h,
+				  unsigned long r_symndx)
+{
+  bfd_vma value;
+  value = * symbol_tlsdesc_got_offset_ref (input_bfd, h, r_symndx);
+  return value & 1;
+}
+
+static bfd_vma
+symbol_tlsdesc_got_offset (bfd *input_bfd, struct elf_link_hash_entry *h,
+			  unsigned long r_symndx)
+{
+  bfd_vma value;
+  value = * symbol_tlsdesc_got_offset_ref (input_bfd, h, r_symndx);
+  value &= ~1;
+  return value;
+}
+
+/* Data for make_branch_to_erratum_835769_stub().  */
+
+struct erratum_835769_branch_to_stub_data
+{
+  struct bfd_link_info *info;
+  asection *output_section;
+  bfd_byte *contents;
+};
+
+/* Helper to insert branches to erratum 835769 stubs in the right
+   places for a particular section.  */
+
+static bool
+make_branch_to_erratum_835769_stub (struct bfd_hash_entry *gen_entry,
+				    void *in_arg)
+{
+  struct elf_aarch64_stub_hash_entry *stub_entry;
+  struct erratum_835769_branch_to_stub_data *data;
+  bfd_byte *contents;
+  unsigned long branch_insn = 0;
+  bfd_vma veneered_insn_loc, veneer_entry_loc;
+  bfd_signed_vma branch_offset;
+  unsigned int target;
+  bfd *abfd;
+
+  stub_entry = (struct elf_aarch64_stub_hash_entry *) gen_entry;
+  data = (struct erratum_835769_branch_to_stub_data *) in_arg;
+
+  if (stub_entry->target_section != data->output_section
+      || stub_entry->stub_type != aarch64_stub_erratum_835769_veneer)
+    return true;
+
+  contents = data->contents;
+  veneered_insn_loc = stub_entry->target_section->output_section->vma
+		      + stub_entry->target_section->output_offset
+		      + stub_entry->target_value;
+  veneer_entry_loc = stub_entry->stub_sec->output_section->vma
+		     + stub_entry->stub_sec->output_offset
+		     + stub_entry->stub_offset;
+  branch_offset = veneer_entry_loc - veneered_insn_loc;
+
+  abfd = stub_entry->target_section->owner;
+  if (!aarch64_valid_branch_p (veneer_entry_loc, veneered_insn_loc))
+    _bfd_error_handler
+      (_("%pB: error: erratum 835769 stub out "
+	 "of range (input file too large)"), abfd);
+
+  target = stub_entry->target_value;
+  branch_insn = 0x14000000;
+  branch_offset >>= 2;
+  branch_offset &= 0x3ffffff;
+  branch_insn |= branch_offset;
+  bfd_putl32 (branch_insn, &contents[target]);
+
+  return true;
+}
+
+
+static bool
+_bfd_aarch64_erratum_843419_branch_to_stub (struct bfd_hash_entry *gen_entry,
+					    void *in_arg)
+{
+  struct elf_aarch64_stub_hash_entry *stub_entry
+    = (struct elf_aarch64_stub_hash_entry *) gen_entry;
+  struct erratum_835769_branch_to_stub_data *data
+    = (struct erratum_835769_branch_to_stub_data *) in_arg;
+  struct bfd_link_info *info;
+  struct elf_aarch64_link_hash_table *htab;
+  bfd_byte *contents;
+  asection *section;
+  bfd *abfd;
+  bfd_vma place;
+  uint32_t insn;
+
+  info = data->info;
+  contents = data->contents;
+  section = data->output_section;
+
+  htab = elf_aarch64_hash_table (info);
+
+  if (stub_entry->target_section != section
+      || stub_entry->stub_type != aarch64_stub_erratum_843419_veneer)
+    return true;
+
+  BFD_ASSERT (((htab->fix_erratum_843419 & ERRAT_ADRP) && stub_entry->stub_sec)
+	      || (htab->fix_erratum_843419 & ERRAT_ADR));
+
+  /* Only update the stub section if we have one.  We should always have one if
+     we're allowed to use the ADRP errata workaround, otherwise it is not
+     required.  */
+  if (stub_entry->stub_sec)
+    {
+      insn = bfd_getl32 (contents + stub_entry->target_value);
+      bfd_putl32 (insn,
+		  stub_entry->stub_sec->contents + stub_entry->stub_offset);
+    }
+
+  place = (section->output_section->vma + section->output_offset
+	   + stub_entry->adrp_offset);
+  insn = bfd_getl32 (contents + stub_entry->adrp_offset);
+
+  if (!_bfd_aarch64_adrp_p (insn))
+    abort ();
+
+  bfd_signed_vma imm =
+    (_bfd_aarch64_sign_extend
+     ((bfd_vma) _bfd_aarch64_decode_adrp_imm (insn) << 12, 33)
+     - (place & 0xfff));
+
+  if ((htab->fix_erratum_843419 & ERRAT_ADR)
+      && (imm >= AARCH64_MIN_ADRP_IMM  && imm <= AARCH64_MAX_ADRP_IMM))
+    {
+      insn = (_bfd_aarch64_reencode_adr_imm (AARCH64_ADR_OP, imm)
+	      | AARCH64_RT (insn));
+      bfd_putl32 (insn, contents + stub_entry->adrp_offset);
+      /* Stub is not needed, don't map it out.  */
+      stub_entry->stub_type = aarch64_stub_none;
+    }
+  else if (htab->fix_erratum_843419 & ERRAT_ADRP)
+    {
+      bfd_vma veneered_insn_loc;
+      bfd_vma veneer_entry_loc;
+      bfd_signed_vma branch_offset;
+      uint32_t branch_insn;
+
+      veneered_insn_loc = stub_entry->target_section->output_section->vma
+	+ stub_entry->target_section->output_offset
+	+ stub_entry->target_value;
+      veneer_entry_loc = stub_entry->stub_sec->output_section->vma
+	+ stub_entry->stub_sec->output_offset
+	+ stub_entry->stub_offset;
+      branch_offset = veneer_entry_loc - veneered_insn_loc;
+
+      abfd = stub_entry->target_section->owner;
+      if (!aarch64_valid_branch_p (veneer_entry_loc, veneered_insn_loc))
+	_bfd_error_handler
+	  (_("%pB: error: erratum 843419 stub out "
+	     "of range (input file too large)"), abfd);
+
+      branch_insn = 0x14000000;
+      branch_offset >>= 2;
+      branch_offset &= 0x3ffffff;
+      branch_insn |= branch_offset;
+      bfd_putl32 (branch_insn, contents + stub_entry->target_value);
+    }
+  else
+    {
+      abfd = stub_entry->target_section->owner;
+      _bfd_error_handler
+	(_("%pB: error: erratum 843419 immediate 0x%" BFD_VMA_FMT "x "
+	   "out of range for ADR (input file too large) and "
+	   "--fix-cortex-a53-843419=adr used.  Run the linker with "
+	   "--fix-cortex-a53-843419=full instead"), abfd, imm);
+      bfd_set_error (bfd_error_bad_value);
+      /* This function is called inside a hashtable traversal and the error
+	 handlers called above turn into non-fatal errors.  Which means this
+	 case ld returns an exit code 0 and also produces a broken object file.
+	 To prevent this, issue a hard abort.  */
+      BFD_FAIL ();
+    }
+  return true;
+}
+
+
+static bool
+elfNN_aarch64_write_section (bfd *output_bfd  ATTRIBUTE_UNUSED,
+			     struct bfd_link_info *link_info,
+			     asection *sec,
+			     bfd_byte *contents)
+
+{
+  struct elf_aarch64_link_hash_table *globals =
+    elf_aarch64_hash_table (link_info);
+
+  if (globals == NULL)
+    return false;
+
+  /* Fix code to point to erratum 835769 stubs.  */
+  if (globals->fix_erratum_835769)
+    {
+      struct erratum_835769_branch_to_stub_data data;
+
+      data.info = link_info;
+      data.output_section = sec;
+      data.contents = contents;
+      bfd_hash_traverse (&globals->stub_hash_table,
+			 make_branch_to_erratum_835769_stub, &data);
+    }
+
+  if (globals->fix_erratum_843419)
+    {
+      struct erratum_835769_branch_to_stub_data data;
+
+      data.info = link_info;
+      data.output_section = sec;
+      data.contents = contents;
+      bfd_hash_traverse (&globals->stub_hash_table,
+			 _bfd_aarch64_erratum_843419_branch_to_stub, &data);
+    }
+
+  return false;
+}
+
+/* Return TRUE if RELOC is a relocation against the base of GOT table.  */
+
+static bool
+aarch64_relocation_aginst_gp_p (bfd_reloc_code_real_type reloc)
+{
+  return (reloc == BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14
+	  || reloc == BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15
+	  || reloc == BFD_RELOC_AARCH64_LD64_GOTOFF_LO15
+	  || reloc == BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC
+	  || reloc == BFD_RELOC_AARCH64_MOVW_GOTOFF_G1);
+}
+
+/* Perform a relocation as part of a final link.  The input relocation type
+   should be TLS relaxed.  */
+
+static bfd_reloc_status_type
+elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
+				   bfd *input_bfd,
+				   bfd *output_bfd,
+				   asection *input_section,
+				   bfd_byte *contents,
+				   Elf_Internal_Rela *rel,
+				   bfd_vma value,
+				   struct bfd_link_info *info,
+				   asection *sym_sec,
+				   struct elf_link_hash_entry *h,
+				   bool *unresolved_reloc_p,
+				   bool save_addend,
+				   bfd_vma *saved_addend,
+				   Elf_Internal_Sym *sym)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  unsigned int r_type = howto->type;
+  bfd_reloc_code_real_type bfd_r_type
+    = elfNN_aarch64_bfd_reloc_from_howto (howto);
+  unsigned long r_symndx;
+  bfd_byte *hit_data = contents + rel->r_offset;
+  bfd_vma place, off, got_entry_addr = 0;
+  bfd_signed_vma signed_addend;
+  struct elf_aarch64_link_hash_table *globals;
+  bool weak_undef_p;
+  bool relative_reloc;
+  asection *base_got;
+  bfd_vma orig_value = value;
+  bool resolved_to_zero;
+  bool abs_symbol_p;
+
+  globals = elf_aarch64_hash_table (info);
+
+  symtab_hdr = &elf_symtab_hdr (input_bfd);
+
+  BFD_ASSERT (is_aarch64_elf (input_bfd));
+
+  r_symndx = ELFNN_R_SYM (rel->r_info);
+
+  place = input_section->output_section->vma
+    + input_section->output_offset + rel->r_offset;
+
+  /* Get addend, accumulating the addend for consecutive relocs
+     which refer to the same offset.  */
+  signed_addend = saved_addend ? *saved_addend : 0;
+  signed_addend += rel->r_addend;
+
+  weak_undef_p = (h ? h->root.type == bfd_link_hash_undefweak
+		  : bfd_is_und_section (sym_sec));
+  abs_symbol_p = h != NULL && bfd_is_abs_symbol (&h->root);
+
+
+  /* Since STT_GNU_IFUNC symbol must go through PLT, we handle
+     it here if it is defined in a non-shared object.  */
+  if (h != NULL
+      && h->type == STT_GNU_IFUNC
+      && (input_section->flags & SEC_ALLOC)
+      && h->def_regular)
+    {
+      asection *plt;
+      const char *name;
+      bfd_vma addend = 0;
+
+      if ((input_section->flags & SEC_ALLOC) == 0)
+	{
+	  /* If this is a SHT_NOTE section without SHF_ALLOC, treat
+	     STT_GNU_IFUNC symbol as STT_FUNC.  */
+	  if (elf_section_type (input_section) == SHT_NOTE)
+	    goto skip_ifunc;
+
+	  /* Dynamic relocs are not propagated for SEC_DEBUGGING
+	     sections because such sections are not SEC_ALLOC and
+	     thus ld.so will not process them.  */
+	  if ((input_section->flags & SEC_DEBUGGING) != 0)
+	    return bfd_reloc_ok;
+
+	  if (h->root.root.string)
+	    name = h->root.root.string;
+	  else
+	    name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym, NULL);
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB(%pA+%#" PRIx64 "): "
+	       "unresolvable %s relocation against symbol `%s'"),
+	     input_bfd, input_section, (uint64_t) rel->r_offset,
+	     howto->name, name);
+	  bfd_set_error (bfd_error_bad_value);
+	  return bfd_reloc_notsupported;
+	}
+      else if (h->plt.offset == (bfd_vma) -1)
+	goto bad_ifunc_reloc;
+
+      /* STT_GNU_IFUNC symbol must go through PLT.  */
+      plt = globals->root.splt ? globals->root.splt : globals->root.iplt;
+      value = (plt->output_section->vma + plt->output_offset + h->plt.offset);
+
+      switch (bfd_r_type)
+	{
+	default:
+	bad_ifunc_reloc:
+	  if (h->root.root.string)
+	    name = h->root.root.string;
+	  else
+	    name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
+				     NULL);
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB: relocation %s against STT_GNU_IFUNC "
+	       "symbol `%s' isn't handled by %s"), input_bfd,
+	     howto->name, name, __FUNCTION__);
+	  bfd_set_error (bfd_error_bad_value);
+	  return bfd_reloc_notsupported;
+
+	case BFD_RELOC_AARCH64_NN:
+	  if (rel->r_addend != 0)
+	    {
+	      if (h->root.root.string)
+		name = h->root.root.string;
+	      else
+		name = bfd_elf_sym_name (input_bfd, symtab_hdr,
+					 sym, NULL);
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB: relocation %s against STT_GNU_IFUNC "
+		   "symbol `%s' has non-zero addend: %" PRId64),
+		 input_bfd, howto->name, name, (int64_t) rel->r_addend);
+	      bfd_set_error (bfd_error_bad_value);
+	      return bfd_reloc_notsupported;
+	    }
+
+	  /* Generate dynamic relocation only when there is a
+	     non-GOT reference in a shared object.  */
+	  if (bfd_link_pic (info) && h->non_got_ref)
+	    {
+	      Elf_Internal_Rela outrel;
+	      asection *sreloc;
+
+	      /* Need a dynamic relocation to get the real function
+		 address.  */
+	      outrel.r_offset = _bfd_elf_section_offset (output_bfd,
+							 info,
+							 input_section,
+							 rel->r_offset);
+	      if (outrel.r_offset == (bfd_vma) -1
+		  || outrel.r_offset == (bfd_vma) -2)
+		abort ();
+
+	      outrel.r_offset += (input_section->output_section->vma
+				  + input_section->output_offset);
+
+	      if (h->dynindx == -1
+		  || h->forced_local
+		  || bfd_link_executable (info))
+		{
+		  /* This symbol is resolved locally.  */
+		  outrel.r_info = ELFNN_R_INFO (0, AARCH64_R (IRELATIVE));
+		  outrel.r_addend = (h->root.u.def.value
+				     + h->root.u.def.section->output_section->vma
+				     + h->root.u.def.section->output_offset);
+		}
+	      else
+		{
+		  outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
+		  outrel.r_addend = 0;
+		}
+
+	      sreloc = globals->root.irelifunc;
+	      elf_append_rela (output_bfd, sreloc, &outrel);
+
+	      /* If this reloc is against an external symbol, we
+		 do not want to fiddle with the addend.  Otherwise,
+		 we need to include the symbol value so that it
+		 becomes an addend for the dynamic reloc.  For an
+		 internal symbol, we have updated addend.  */
+	      return bfd_reloc_ok;
+	    }
+	  /* FALLTHROUGH */
+	case BFD_RELOC_AARCH64_CALL26:
+	case BFD_RELOC_AARCH64_JUMP26:
+	  value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						       place, value,
+						       signed_addend,
+						       weak_undef_p);
+	  return _bfd_aarch64_elf_put_addend (input_bfd, hit_data, bfd_r_type,
+					      howto, value);
+	case BFD_RELOC_AARCH64_ADR_GOT_PAGE:
+	case BFD_RELOC_AARCH64_GOT_LD_PREL19:
+	case BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14:
+	case BFD_RELOC_AARCH64_LD32_GOT_LO12_NC:
+	case BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15:
+	case BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC:
+	case BFD_RELOC_AARCH64_MOVW_GOTOFF_G1:
+	case BFD_RELOC_AARCH64_LD64_GOTOFF_LO15:
+	case BFD_RELOC_AARCH64_LD64_GOT_LO12_NC:
+	  base_got = globals->root.sgot;
+	  off = h->got.offset;
+
+	  if (base_got == NULL)
+	    abort ();
+
+	  if (off == (bfd_vma) -1)
+	    {
+	      bfd_vma plt_index;
+
+	      /* We can't use h->got.offset here to save state, or
+		 even just remember the offset, as finish_dynamic_symbol
+		 would use that as offset into .got.  */
+
+	      if (globals->root.splt != NULL)
+		{
+		  plt_index = ((h->plt.offset - globals->plt_header_size) /
+			       globals->plt_entry_size);
+		  off = (plt_index + 3) * GOT_ENTRY_SIZE;
+		  base_got = globals->root.sgotplt;
+		}
+	      else
+		{
+		  plt_index = h->plt.offset / globals->plt_entry_size;
+		  off = plt_index * GOT_ENTRY_SIZE;
+		  base_got = globals->root.igotplt;
+		}
+
+	      if (h->dynindx == -1
+		  || h->forced_local
+		  || info->symbolic)
+		{
+		  /* This references the local definition.  We must
+		     initialize this entry in the global offset table.
+		     Since the offset must always be a multiple of 8,
+		     we use the least significant bit to record
+		     whether we have initialized it already.
+
+		     When doing a dynamic link, we create a .rela.got
+		     relocation entry to initialize the value.  This
+		     is done in the finish_dynamic_symbol routine.	 */
+		  if ((off & 1) != 0)
+		    off &= ~1;
+		  else
+		    {
+		      bfd_put_NN (output_bfd, value,
+				  base_got->contents + off);
+		      /* Note that this is harmless as -1 | 1 still is -1.  */
+		      h->got.offset |= 1;
+		    }
+		}
+	      value = (base_got->output_section->vma
+		       + base_got->output_offset + off);
+	    }
+	  else
+	    value = aarch64_calculate_got_entry_vma (h, globals, info,
+						     value, output_bfd,
+						     unresolved_reloc_p);
+
+	  if (aarch64_relocation_aginst_gp_p (bfd_r_type))
+	    addend = (globals->root.sgot->output_section->vma
+		      + globals->root.sgot->output_offset);
+
+	  value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						       place, value,
+						       addend, weak_undef_p);
+	  return _bfd_aarch64_elf_put_addend (input_bfd, hit_data, bfd_r_type, howto, value);
+	case BFD_RELOC_AARCH64_ADD_LO12:
+	case BFD_RELOC_AARCH64_ADR_HI21_PCREL:
+	  break;
+	}
+    }
+
+ skip_ifunc:
+  resolved_to_zero = (h != NULL
+		      && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h));
+
+  switch (bfd_r_type)
+    {
+    case BFD_RELOC_AARCH64_NONE:
+    case BFD_RELOC_AARCH64_TLSDESC_ADD:
+    case BFD_RELOC_AARCH64_TLSDESC_CALL:
+    case BFD_RELOC_AARCH64_TLSDESC_LDR:
+      *unresolved_reloc_p = false;
+      return bfd_reloc_ok;
+
+    case BFD_RELOC_AARCH64_NN:
+
+      /* When generating a shared object or relocatable executable, these
+	 relocations are copied into the output file to be resolved at
+	 run time.  */
+      if (((bfd_link_pic (info)
+	    || globals->root.is_relocatable_executable)
+	   && (input_section->flags & SEC_ALLOC)
+	   && (h == NULL
+	       || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+		   && !resolved_to_zero)
+	       || h->root.type != bfd_link_hash_undefweak))
+	  /* Or we are creating an executable, we may need to keep relocations
+	     for symbols satisfied by a dynamic library if we manage to avoid
+	     copy relocs for the symbol.  */
+	  || (ELIMINATE_COPY_RELOCS
+	      && !bfd_link_pic (info)
+	      && h != NULL
+	      && (input_section->flags & SEC_ALLOC)
+	      && h->dynindx != -1
+	      && !h->non_got_ref
+	      && ((h->def_dynamic
+		   && !h->def_regular)
+		  || h->root.type == bfd_link_hash_undefweak
+		  || h->root.type == bfd_link_hash_undefined)))
+	{
+	  Elf_Internal_Rela outrel;
+	  bfd_byte *loc;
+	  bool skip, relocate;
+	  asection *sreloc;
+
+	  *unresolved_reloc_p = false;
+
+	  skip = false;
+	  relocate = false;
+
+	  outrel.r_addend = signed_addend;
+	  outrel.r_offset =
+	    _bfd_elf_section_offset (output_bfd, info, input_section,
+				     rel->r_offset);
+	  if (outrel.r_offset == (bfd_vma) - 1)
+	    skip = true;
+	  else if (outrel.r_offset == (bfd_vma) - 2)
+	    {
+	      skip = true;
+	      relocate = true;
+	    }
+	  else if (abs_symbol_p)
+	    {
+	      /* Local absolute symbol.  */
+	      skip = (h->forced_local || (h->dynindx == -1));
+	      relocate = skip;
+	    }
+
+	  outrel.r_offset += (input_section->output_section->vma
+			      + input_section->output_offset);
+
+	  if (skip)
+	    memset (&outrel, 0, sizeof outrel);
+	  else if (h != NULL
+		   && h->dynindx != -1
+		   && (!bfd_link_pic (info)
+		       || !(bfd_link_pie (info) || SYMBOLIC_BIND (info, h))
+		       || !h->def_regular))
+	    outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
+	  else
+	    {
+	      int symbol;
+
+	      /* On SVR4-ish systems, the dynamic loader cannot
+		 relocate the text and data segments independently,
+		 so the symbol does not matter.  */
+	      symbol = 0;
+	      relocate = !globals->no_apply_dynamic_relocs;
+	      outrel.r_info = ELFNN_R_INFO (symbol, AARCH64_R (RELATIVE));
+	      outrel.r_addend += value;
+	    }
+
+	  sreloc = elf_section_data (input_section)->sreloc;
+	  if (sreloc == NULL || sreloc->contents == NULL)
+	    return bfd_reloc_notsupported;
+
+	  loc = sreloc->contents + sreloc->reloc_count++ * RELOC_SIZE (globals);
+	  bfd_elfNN_swap_reloca_out (output_bfd, &outrel, loc);
+
+	  if (sreloc->reloc_count * RELOC_SIZE (globals) > sreloc->size)
+	    {
+	      /* Sanity to check that we have previously allocated
+		 sufficient space in the relocation section for the
+		 number of relocations we actually want to emit.  */
+	      abort ();
+	    }
+
+	  /* If this reloc is against an external symbol, we do not want to
+	     fiddle with the addend.  Otherwise, we need to include the symbol
+	     value so that it becomes an addend for the dynamic reloc.  */
+	  if (!relocate)
+	    return bfd_reloc_ok;
+
+	  return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					   contents, rel->r_offset, value,
+					   signed_addend);
+	}
+      else
+	value += signed_addend;
+      break;
+
+    case BFD_RELOC_AARCH64_CALL26:
+    case BFD_RELOC_AARCH64_JUMP26:
+      {
+	asection *splt = globals->root.splt;
+	bool via_plt_p =
+	  splt != NULL && h != NULL && h->plt.offset != (bfd_vma) - 1;
+
+	/* A call to an undefined weak symbol is converted to a jump to
+	   the next instruction unless a PLT entry will be created.
+	   The jump to the next instruction is optimized as a NOP.
+	   Do the same for local undefined symbols.  */
+	if (weak_undef_p && ! via_plt_p)
+	  {
+	    bfd_putl32 (INSN_NOP, hit_data);
+	    return bfd_reloc_ok;
+	  }
+
+	/* If the call goes through a PLT entry, make sure to
+	   check distance to the right destination address.  */
+	if (via_plt_p)
+	  value = (splt->output_section->vma
+		   + splt->output_offset + h->plt.offset);
+
+	/* Check if a stub has to be inserted because the destination
+	   is too far away.  */
+	struct elf_aarch64_stub_hash_entry *stub_entry = NULL;
+
+	/* If the branch destination is directed to plt stub, "value" will be
+	   the final destination, otherwise we should plus signed_addend, it may
+	   contain non-zero value, for example call to local function symbol
+	   which are turned into "sec_sym + sec_off", and sec_off is kept in
+	   signed_addend.  */
+	if (! aarch64_valid_branch_p (via_plt_p ? value : value + signed_addend,
+				      place))
+	  /* The target is out of reach, so redirect the branch to
+	     the local stub for this function.  */
+	stub_entry = elfNN_aarch64_get_stub_entry (input_section, sym_sec, h,
+						   rel, globals);
+	if (stub_entry != NULL)
+	  {
+	    value = (stub_entry->stub_offset
+		     + stub_entry->stub_sec->output_offset
+		     + stub_entry->stub_sec->output_section->vma);
+
+	    /* We have redirected the destination to stub entry address,
+	       so ignore any addend record in the original rela entry.  */
+	    signed_addend = 0;
+	  }
+      }
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
+						   signed_addend, weak_undef_p);
+      *unresolved_reloc_p = false;
+      break;
+
+    case BFD_RELOC_AARCH64_16_PCREL:
+    case BFD_RELOC_AARCH64_32_PCREL:
+    case BFD_RELOC_AARCH64_64_PCREL:
+    case BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL:
+    case BFD_RELOC_AARCH64_ADR_HI21_PCREL:
+    case BFD_RELOC_AARCH64_ADR_LO21_PCREL:
+    case BFD_RELOC_AARCH64_LD_LO19_PCREL:
+    case BFD_RELOC_AARCH64_MOVW_PREL_G0:
+    case BFD_RELOC_AARCH64_MOVW_PREL_G0_NC:
+    case BFD_RELOC_AARCH64_MOVW_PREL_G1:
+    case BFD_RELOC_AARCH64_MOVW_PREL_G1_NC:
+    case BFD_RELOC_AARCH64_MOVW_PREL_G2:
+    case BFD_RELOC_AARCH64_MOVW_PREL_G2_NC:
+    case BFD_RELOC_AARCH64_MOVW_PREL_G3:
+      if (bfd_link_pic (info)
+	  && (input_section->flags & SEC_ALLOC) != 0
+	  && (input_section->flags & SEC_READONLY) != 0
+	  && !SYMBOL_REFERENCES_LOCAL (info, h))
+	{
+	  int howto_index = bfd_r_type - BFD_RELOC_AARCH64_RELOC_START;
+
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB: relocation %s against symbol `%s' which may bind "
+	       "externally can not be used when making a shared object; "
+	       "recompile with -fPIC"),
+	     input_bfd, elfNN_aarch64_howto_table[howto_index].name,
+	     h->root.root.string);
+	  bfd_set_error (bfd_error_bad_value);
+	  return bfd_reloc_notsupported;
+	}
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
+						   signed_addend,
+						   weak_undef_p);
+      break;
+
+    case BFD_RELOC_AARCH64_BRANCH19:
+    case BFD_RELOC_AARCH64_TSTBR14:
+      if (h && h->root.type == bfd_link_hash_undefined)
+	{
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB: conditional branch to undefined symbol `%s' "
+	       "not allowed"), input_bfd, h->root.root.string);
+	  bfd_set_error (bfd_error_bad_value);
+	  return bfd_reloc_notsupported;
+	}
+      /* Fall through.  */
+
+    case BFD_RELOC_AARCH64_16:
+#if ARCH_SIZE == 64
+    case BFD_RELOC_AARCH64_32:
+#endif
+    case BFD_RELOC_AARCH64_ADD_LO12:
+    case BFD_RELOC_AARCH64_LDST128_LO12:
+    case BFD_RELOC_AARCH64_LDST16_LO12:
+    case BFD_RELOC_AARCH64_LDST32_LO12:
+    case BFD_RELOC_AARCH64_LDST64_LO12:
+    case BFD_RELOC_AARCH64_LDST8_LO12:
+    case BFD_RELOC_AARCH64_MOVW_G0:
+    case BFD_RELOC_AARCH64_MOVW_G0_NC:
+    case BFD_RELOC_AARCH64_MOVW_G0_S:
+    case BFD_RELOC_AARCH64_MOVW_G1:
+    case BFD_RELOC_AARCH64_MOVW_G1_NC:
+    case BFD_RELOC_AARCH64_MOVW_G1_S:
+    case BFD_RELOC_AARCH64_MOVW_G2:
+    case BFD_RELOC_AARCH64_MOVW_G2_NC:
+    case BFD_RELOC_AARCH64_MOVW_G2_S:
+    case BFD_RELOC_AARCH64_MOVW_G3:
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
+						   signed_addend, weak_undef_p);
+      break;
+
+    case BFD_RELOC_AARCH64_ADR_GOT_PAGE:
+    case BFD_RELOC_AARCH64_GOT_LD_PREL19:
+    case BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14:
+    case BFD_RELOC_AARCH64_LD32_GOT_LO12_NC:
+    case BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15:
+    case BFD_RELOC_AARCH64_LD64_GOT_LO12_NC:
+    case BFD_RELOC_AARCH64_LD64_GOTOFF_LO15:
+    case BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC:
+    case BFD_RELOC_AARCH64_MOVW_GOTOFF_G1:
+      if (globals->root.sgot == NULL)
+	BFD_ASSERT (h != NULL);
+
+      relative_reloc = false;
+      if (h != NULL)
+	{
+	  bfd_vma addend = 0;
+
+	  /* If a symbol is not dynamic and is not undefined weak, bind it
+	     locally and generate a RELATIVE relocation under PIC mode.
+
+	     NOTE: one symbol may be referenced by several relocations, we
+	     should only generate one RELATIVE relocation for that symbol.
+	     Therefore, check GOT offset mark first.  */
+	  if (h->dynindx == -1
+	      && !h->forced_local
+	      && h->root.type != bfd_link_hash_undefweak
+	      && bfd_link_pic (info)
+	      && !symbol_got_offset_mark_p (input_bfd, h, r_symndx))
+	    relative_reloc = true;
+
+	  value = aarch64_calculate_got_entry_vma (h, globals, info, value,
+						   output_bfd,
+						   unresolved_reloc_p);
+	  /* Record the GOT entry address which will be used when generating
+	     RELATIVE relocation.  */
+	  if (relative_reloc)
+	    got_entry_addr = value;
+
+	  if (aarch64_relocation_aginst_gp_p (bfd_r_type))
+	    addend = (globals->root.sgot->output_section->vma
+		      + globals->root.sgot->output_offset);
+	  value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						       place, value,
+						       addend, weak_undef_p);
+	}
+      else
+      {
+	bfd_vma addend = 0;
+	struct elf_aarch64_local_symbol *locals
+	  = elf_aarch64_locals (input_bfd);
+
+	if (locals == NULL)
+	  {
+	    int howto_index = bfd_r_type - BFD_RELOC_AARCH64_RELOC_START;
+	    _bfd_error_handler
+	      /* xgettext:c-format */
+	      (_("%pB: local symbol descriptor table be NULL when applying "
+		 "relocation %s against local symbol"),
+	       input_bfd, elfNN_aarch64_howto_table[howto_index].name);
+	    abort ();
+	  }
+
+	off = symbol_got_offset (input_bfd, h, r_symndx);
+	base_got = globals->root.sgot;
+	got_entry_addr = (base_got->output_section->vma
+			  + base_got->output_offset + off);
+
+	if (!symbol_got_offset_mark_p (input_bfd, h, r_symndx))
+	  {
+	    bfd_put_64 (output_bfd, value, base_got->contents + off);
+
+	    /* For local symbol, we have done absolute relocation in static
+	       linking stage.  While for shared library, we need to update the
+	       content of GOT entry according to the shared object's runtime
+	       base address.  So, we need to generate a R_AARCH64_RELATIVE reloc
+	       for dynamic linker.  */
+	    if (bfd_link_pic (info))
+	      relative_reloc = true;
+
+	    symbol_got_offset_mark (input_bfd, h, r_symndx);
+	  }
+
+	/* Update the relocation value to GOT entry addr as we have transformed
+	   the direct data access into indirect data access through GOT.  */
+	value = got_entry_addr;
+
+	if (aarch64_relocation_aginst_gp_p (bfd_r_type))
+	  addend = base_got->output_section->vma + base_got->output_offset;
+
+	value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						     place, value,
+						     addend, weak_undef_p);
+      }
+
+      if (relative_reloc)
+	{
+	  asection *s;
+	  Elf_Internal_Rela outrel;
+
+	  s = globals->root.srelgot;
+	  if (s == NULL)
+	    abort ();
+
+	  outrel.r_offset = got_entry_addr;
+	  outrel.r_info = ELFNN_R_INFO (0, AARCH64_R (RELATIVE));
+	  outrel.r_addend = orig_value;
+	  elf_append_rela (output_bfd, s, &outrel);
+	}
+      break;
+
+    case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:
+    case BFD_RELOC_AARCH64_TLSGD_ADR_PREL21:
+    case BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21:
+    case BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19:
+    case BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21:
+    case BFD_RELOC_AARCH64_TLSLD_ADR_PREL21:
+      if (globals->root.sgot == NULL)
+	return bfd_reloc_notsupported;
+
+      value = (symbol_got_offset (input_bfd, h, r_symndx)
+	       + globals->root.sgot->output_section->vma
+	       + globals->root.sgot->output_offset);
+
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
+						   0, weak_undef_p);
+      *unresolved_reloc_p = false;
+      break;
+
+    case BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC:
+    case BFD_RELOC_AARCH64_TLSGD_MOVW_G1:
+    case BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC:
+    case BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1:
+      if (globals->root.sgot == NULL)
+	return bfd_reloc_notsupported;
+
+      value = symbol_got_offset (input_bfd, h, r_symndx);
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
+						   0, weak_undef_p);
+      *unresolved_reloc_p = false;
+      break;
+
+    case BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12:
+    case BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12:
+    case BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12:
+    case BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12:
+    case BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12:
+    case BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12:
+    case BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0:
+    case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC:
+    case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1:
+    case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC:
+    case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2:
+      {
+	if (!(weak_undef_p || elf_hash_table (info)->tls_sec))
+	  {
+	    int howto_index = bfd_r_type - BFD_RELOC_AARCH64_RELOC_START;
+	    _bfd_error_handler
+	      /* xgettext:c-format */
+	      (_("%pB: TLS relocation %s against undefined symbol `%s'"),
+		 input_bfd, elfNN_aarch64_howto_table[howto_index].name,
+		 h->root.root.string);
+	    bfd_set_error (bfd_error_bad_value);
+	    return bfd_reloc_notsupported;
+	  }
+
+	bfd_vma def_value
+	  = weak_undef_p ? 0 : signed_addend - dtpoff_base (info);
+	value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						     place, value,
+						     def_value, weak_undef_p);
+	break;
+      }
+
+    case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12:
+    case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12:
+    case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12:
+    case BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12:
+    case BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12:
+    case BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12:
+    case BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0:
+    case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC:
+    case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1:
+    case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC:
+    case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2:
+      {
+	if (!(weak_undef_p || elf_hash_table (info)->tls_sec))
+	  {
+	    int howto_index = bfd_r_type - BFD_RELOC_AARCH64_RELOC_START;
+	    _bfd_error_handler
+	      /* xgettext:c-format */
+	      (_("%pB: TLS relocation %s against undefined symbol `%s'"),
+		 input_bfd, elfNN_aarch64_howto_table[howto_index].name,
+		 h->root.root.string);
+	    bfd_set_error (bfd_error_bad_value);
+	    return bfd_reloc_notsupported;
+	  }
+
+	bfd_vma def_value
+	  = weak_undef_p ? 0 : signed_addend - tpoff_base (info);
+	value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						     place, value,
+						     def_value, weak_undef_p);
+        *unresolved_reloc_p = false;
+	break;
+      }
+
+    case BFD_RELOC_AARCH64_TLSDESC_ADD_LO12:
+    case BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:
+    case BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21:
+    case BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC:
+    case BFD_RELOC_AARCH64_TLSDESC_LD64_LO12:
+    case BFD_RELOC_AARCH64_TLSDESC_LD_PREL19:
+      if (globals->root.sgot == NULL)
+	return bfd_reloc_notsupported;
+      value = (symbol_tlsdesc_got_offset (input_bfd, h, r_symndx)
+	       + globals->root.sgotplt->output_section->vma
+	       + globals->root.sgotplt->output_offset
+	       + globals->sgotplt_jump_table_size);
+
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
+						   0, weak_undef_p);
+      *unresolved_reloc_p = false;
+      break;
+
+    case BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:
+    case BFD_RELOC_AARCH64_TLSDESC_OFF_G1:
+      if (globals->root.sgot == NULL)
+	return bfd_reloc_notsupported;
+
+      value = (symbol_tlsdesc_got_offset (input_bfd, h, r_symndx)
+	       + globals->root.sgotplt->output_section->vma
+	       + globals->root.sgotplt->output_offset
+	       + globals->sgotplt_jump_table_size);
+
+      value -= (globals->root.sgot->output_section->vma
+		+ globals->root.sgot->output_offset);
+
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
+						   0, weak_undef_p);
+      *unresolved_reloc_p = false;
+      break;
+
+    default:
+      return bfd_reloc_notsupported;
+    }
+
+  if (saved_addend)
+    *saved_addend = value;
+
+  /* Only apply the final relocation in a sequence.  */
+  if (save_addend)
+    return bfd_reloc_continue;
+
+  return _bfd_aarch64_elf_put_addend (input_bfd, hit_data, bfd_r_type,
+				      howto, value);
+}
+
+/* LP64 and ILP32 operates on x- and w-registers respectively.
+   Next definitions take into account the difference between
+   corresponding machine codes. R means x-register if the target
+   arch is LP64, and w-register if the target is ILP32.  */
+
+#if ARCH_SIZE == 64
+# define add_R0_R0	(0x91000000)
+# define add_R0_R0_R1	(0x8b000020)
+# define add_R0_R1	(0x91400020)
+# define ldr_R0		(0x58000000)
+# define ldr_R0_mask(i)	(i & 0xffffffe0)
+# define ldr_R0_x0	(0xf9400000)
+# define ldr_hw_R0	(0xf2a00000)
+# define movk_R0	(0xf2800000)
+# define movz_R0	(0xd2a00000)
+# define movz_hw_R0	(0xd2c00000)
+#else /*ARCH_SIZE == 32 */
+# define add_R0_R0	(0x11000000)
+# define add_R0_R0_R1	(0x0b000020)
+# define add_R0_R1	(0x11400020)
+# define ldr_R0		(0x18000000)
+# define ldr_R0_mask(i)	(i & 0xbfffffe0)
+# define ldr_R0_x0	(0xb9400000)
+# define ldr_hw_R0	(0x72a00000)
+# define movk_R0	(0x72800000)
+# define movz_R0	(0x52a00000)
+# define movz_hw_R0	(0x52c00000)
+#endif
+
+/* Structure to hold payload for _bfd_aarch64_erratum_843419_clear_stub,
+   it is used to identify the stub information to reset.  */
+
+struct erratum_843419_branch_to_stub_clear_data
+{
+  bfd_vma adrp_offset;
+  asection *output_section;
+};
+
+/* Clear the erratum information for GEN_ENTRY if the ADRP_OFFSET and
+   section inside IN_ARG matches.  The clearing is done by setting the
+   stub_type to none.  */
+
+static bool
+_bfd_aarch64_erratum_843419_clear_stub (struct bfd_hash_entry *gen_entry,
+					void *in_arg)
+{
+  struct elf_aarch64_stub_hash_entry *stub_entry
+    = (struct elf_aarch64_stub_hash_entry *) gen_entry;
+  struct erratum_843419_branch_to_stub_clear_data *data
+    = (struct erratum_843419_branch_to_stub_clear_data *) in_arg;
+
+  if (stub_entry->target_section != data->output_section
+      || stub_entry->stub_type != aarch64_stub_erratum_843419_veneer
+      || stub_entry->adrp_offset != data->adrp_offset)
+    return true;
+
+  /* Change the stub type instead of removing the entry, removing from the hash
+     table would be slower and we have already reserved the memory for the entry
+     so there wouldn't be much gain.  Changing the stub also keeps around a
+     record of what was there before.  */
+  stub_entry->stub_type = aarch64_stub_none;
+
+  /* We're done and there could have been only one matching stub at that
+     particular offset, so abort further traversal.  */
+  return false;
+}
+
+/* TLS Relaxations may relax an adrp sequence that matches the erratum 843419
+   sequence.  In this case the erratum no longer applies and we need to remove
+   the entry from the pending stub generation.  This clears matching adrp insn
+   at ADRP_OFFSET in INPUT_SECTION in the stub table defined in GLOBALS.  */
+
+static void
+clear_erratum_843419_entry (struct elf_aarch64_link_hash_table *globals,
+			    bfd_vma adrp_offset, asection *input_section)
+{
+  if (globals->fix_erratum_843419 & ERRAT_ADRP)
+    {
+      struct erratum_843419_branch_to_stub_clear_data data;
+      data.adrp_offset = adrp_offset;
+      data.output_section = input_section;
+
+      bfd_hash_traverse (&globals->stub_hash_table,
+			 _bfd_aarch64_erratum_843419_clear_stub, &data);
+    }
+}
+
+/* Handle TLS relaxations.  Relaxing is possible for symbols that use
+   R_AARCH64_TLSDESC_ADR_{PAGE, LD64_LO12_NC, ADD_LO12_NC} during a static
+   link.
+
+   Return bfd_reloc_ok if we're done, bfd_reloc_continue if the caller
+   is to then call final_link_relocate.  Return other values in the
+   case of error.  */
+
+static bfd_reloc_status_type
+elfNN_aarch64_tls_relax (struct elf_aarch64_link_hash_table *globals,
+			 bfd *input_bfd, asection *input_section,
+			 bfd_byte *contents, Elf_Internal_Rela *rel,
+			 struct elf_link_hash_entry *h)
+{
+  bool is_local = h == NULL;
+  unsigned int r_type = ELFNN_R_TYPE (rel->r_info);
+  unsigned long insn;
+
+  BFD_ASSERT (globals && input_bfd && contents && rel);
+
+  switch (elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type))
+    {
+    case BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:
+    case BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:
+      if (is_local)
+	{
+	  /* GD->LE relaxation:
+	     adrp x0, :tlsgd:var     =>   movz R0, :tprel_g1:var
+	     or
+	     adrp x0, :tlsdesc:var   =>   movz R0, :tprel_g1:var
+
+	     Where R is x for LP64, and w for ILP32.  */
+	  bfd_putl32 (movz_R0, contents + rel->r_offset);
+	  /* We have relaxed the adrp into a mov, we may have to clear any
+	     pending erratum fixes.  */
+	  clear_erratum_843419_entry (globals, rel->r_offset, input_section);
+	  return bfd_reloc_continue;
+	}
+      else
+	{
+	  /* GD->IE relaxation:
+	     adrp x0, :tlsgd:var     =>   adrp x0, :gottprel:var
+	     or
+	     adrp x0, :tlsdesc:var   =>   adrp x0, :gottprel:var
+	   */
+	  return bfd_reloc_continue;
+	}
+
+    case BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21:
+      BFD_ASSERT (0);
+      break;
+
+    case BFD_RELOC_AARCH64_TLSDESC_LD_PREL19:
+      if (is_local)
+	{
+	  /* Tiny TLSDESC->LE relaxation:
+	     ldr   x1, :tlsdesc:var	 =>  movz  R0, #:tprel_g1:var
+	     adr   x0, :tlsdesc:var	 =>  movk  R0, #:tprel_g0_nc:var
+	     .tlsdesccall var
+	     blr   x1			 =>  nop
+
+	     Where R is x for LP64, and w for ILP32.  */
+	  BFD_ASSERT (ELFNN_R_TYPE (rel[1].r_info) == AARCH64_R (TLSDESC_ADR_PREL21));
+	  BFD_ASSERT (ELFNN_R_TYPE (rel[2].r_info) == AARCH64_R (TLSDESC_CALL));
+
+	  rel[1].r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel->r_info),
+					AARCH64_R (TLSLE_MOVW_TPREL_G0_NC));
+	  rel[2].r_info = ELFNN_R_INFO (STN_UNDEF, R_AARCH64_NONE);
+
+	  bfd_putl32 (movz_R0, contents + rel->r_offset);
+	  bfd_putl32 (movk_R0, contents + rel->r_offset + 4);
+	  bfd_putl32 (INSN_NOP, contents + rel->r_offset + 8);
+	  return bfd_reloc_continue;
+	}
+      else
+	{
+	  /* Tiny TLSDESC->IE relaxation:
+	     ldr   x1, :tlsdesc:var	 =>  ldr   x0, :gottprel:var
+	     adr   x0, :tlsdesc:var	 =>  nop
+	     .tlsdesccall var
+	     blr   x1			 =>  nop
+	   */
+	  BFD_ASSERT (ELFNN_R_TYPE (rel[1].r_info) == AARCH64_R (TLSDESC_ADR_PREL21));
+	  BFD_ASSERT (ELFNN_R_TYPE (rel[2].r_info) == AARCH64_R (TLSDESC_CALL));
+
+	  rel[1].r_info = ELFNN_R_INFO (STN_UNDEF, R_AARCH64_NONE);
+	  rel[2].r_info = ELFNN_R_INFO (STN_UNDEF, R_AARCH64_NONE);
+
+	  bfd_putl32 (ldr_R0, contents + rel->r_offset);
+	  bfd_putl32 (INSN_NOP, contents + rel->r_offset + 4);
+	  bfd_putl32 (INSN_NOP, contents + rel->r_offset + 8);
+	  return bfd_reloc_continue;
+	}
+
+    case BFD_RELOC_AARCH64_TLSGD_ADR_PREL21:
+      if (is_local)
+	{
+	  /* Tiny GD->LE relaxation:
+	     adr x0, :tlsgd:var	     =>	  mrs  x1, tpidr_el0
+	     bl	  __tls_get_addr     =>	  add  R0, R1, #:tprel_hi12:x, lsl #12
+	     nop		     =>	  add  R0, R0, #:tprel_lo12_nc:x
+
+	     Where R is x for LP64, and x for Ilp32.  */
+
+	  /* First kill the tls_get_addr reloc on the bl instruction.  */
+	  BFD_ASSERT (rel->r_offset + 4 == rel[1].r_offset);
+
+	  bfd_putl32 (0xd53bd041, contents + rel->r_offset + 0);
+	  bfd_putl32 (add_R0_R1, contents + rel->r_offset + 4);
+	  bfd_putl32 (add_R0_R0, contents + rel->r_offset + 8);
+
+	  rel[1].r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel->r_info),
+					AARCH64_R (TLSLE_ADD_TPREL_LO12_NC));
+	  rel[1].r_offset = rel->r_offset + 8;
+
+	  /* Move the current relocation to the second instruction in
+	     the sequence.  */
+	  rel->r_offset += 4;
+	  rel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel->r_info),
+				      AARCH64_R (TLSLE_ADD_TPREL_HI12));
+	  return bfd_reloc_continue;
+	}
+      else
+	{
+	  /* Tiny GD->IE relaxation:
+	     adr x0, :tlsgd:var	     =>	  ldr  R0, :gottprel:var
+	     bl	  __tls_get_addr     =>	  mrs  x1, tpidr_el0
+	     nop		     =>	  add  R0, R0, R1
+
+	     Where R is x for LP64, and w for Ilp32.  */
+
+	  /* First kill the tls_get_addr reloc on the bl instruction.  */
+	  BFD_ASSERT (rel->r_offset + 4 == rel[1].r_offset);
+	  rel[1].r_info = ELFNN_R_INFO (STN_UNDEF, R_AARCH64_NONE);
+
+	  bfd_putl32 (ldr_R0, contents + rel->r_offset);
+	  bfd_putl32 (0xd53bd041, contents + rel->r_offset + 4);
+	  bfd_putl32 (add_R0_R0_R1, contents + rel->r_offset + 8);
+	  return bfd_reloc_continue;
+	}
+
+#if ARCH_SIZE == 64
+    case BFD_RELOC_AARCH64_TLSGD_MOVW_G1:
+      BFD_ASSERT (ELFNN_R_TYPE (rel[1].r_info) == AARCH64_R (TLSGD_MOVW_G0_NC));
+      BFD_ASSERT (rel->r_offset + 12 == rel[2].r_offset);
+      BFD_ASSERT (ELFNN_R_TYPE (rel[2].r_info) == AARCH64_R (CALL26));
+
+      if (is_local)
+	{
+	  /* Large GD->LE relaxation:
+	     movz x0, #:tlsgd_g1:var	=> movz x0, #:tprel_g2:var, lsl #32
+	     movk x0, #:tlsgd_g0_nc:var => movk x0, #:tprel_g1_nc:var, lsl #16
+	     add x0, gp, x0		=> movk x0, #:tprel_g0_nc:var
+	     bl __tls_get_addr		=> mrs x1, tpidr_el0
+	     nop			=> add x0, x0, x1
+	   */
+	  rel[2].r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel->r_info),
+					AARCH64_R (TLSLE_MOVW_TPREL_G0_NC));
+	  rel[2].r_offset = rel->r_offset + 8;
+
+	  bfd_putl32 (movz_hw_R0, contents + rel->r_offset + 0);
+	  bfd_putl32 (ldr_hw_R0, contents + rel->r_offset + 4);
+	  bfd_putl32 (movk_R0, contents + rel->r_offset + 8);
+	  bfd_putl32 (0xd53bd041, contents + rel->r_offset + 12);
+	  bfd_putl32 (add_R0_R0_R1, contents + rel->r_offset + 16);
+	}
+      else
+	{
+	  /* Large GD->IE relaxation:
+	     movz x0, #:tlsgd_g1:var	=> movz x0, #:gottprel_g1:var, lsl #16
+	     movk x0, #:tlsgd_g0_nc:var => movk x0, #:gottprel_g0_nc:var
+	     add x0, gp, x0		=> ldr x0, [gp, x0]
+	     bl __tls_get_addr		=> mrs x1, tpidr_el0
+	     nop			=> add x0, x0, x1
+	   */
+	  rel[2].r_info = ELFNN_R_INFO (STN_UNDEF, R_AARCH64_NONE);
+	  bfd_putl32 (0xd2a80000, contents + rel->r_offset + 0);
+	  bfd_putl32 (ldr_R0, contents + rel->r_offset + 8);
+	  bfd_putl32 (0xd53bd041, contents + rel->r_offset + 12);
+	  bfd_putl32 (add_R0_R0_R1, contents + rel->r_offset + 16);
+	}
+      return bfd_reloc_continue;
+
+    case BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC:
+      return bfd_reloc_continue;
+#endif
+
+    case BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19:
+      return bfd_reloc_continue;
+
+    case BFD_RELOC_AARCH64_TLSDESC_LDNN_LO12_NC:
+      if (is_local)
+	{
+	  /* GD->LE relaxation:
+	     ldr xd, [x0, #:tlsdesc_lo12:var]   =>   movk x0, :tprel_g0_nc:var
+
+	     Where R is x for lp64 mode, and w for ILP32 mode.  */
+	  bfd_putl32 (movk_R0, contents + rel->r_offset);
+	  return bfd_reloc_continue;
+	}
+      else
+	{
+	  /* GD->IE relaxation:
+	     ldr xd, [x0, #:tlsdesc_lo12:var] => ldr R0, [x0, #:gottprel_lo12:var]
+
+	     Where R is x for lp64 mode, and w for ILP32 mode.  */
+	  insn = bfd_getl32 (contents + rel->r_offset);
+	  bfd_putl32 (ldr_R0_mask (insn), contents + rel->r_offset);
+	  return bfd_reloc_continue;
+	}
+
+    case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
+      if (is_local)
+	{
+	  /* GD->LE relaxation
+	     add  x0, #:tlsgd_lo12:var	=> movk R0, :tprel_g0_nc:var
+	     bl	  __tls_get_addr	=> mrs	x1, tpidr_el0
+	     nop			=> add	R0, R1, R0
+
+	     Where R is x for lp64 mode, and w for ILP32 mode.  */
+
+	  /* First kill the tls_get_addr reloc on the bl instruction.  */
+	  BFD_ASSERT (rel->r_offset + 4 == rel[1].r_offset);
+	  rel[1].r_info = ELFNN_R_INFO (STN_UNDEF, R_AARCH64_NONE);
+
+	  bfd_putl32 (movk_R0, contents + rel->r_offset);
+	  bfd_putl32 (0xd53bd041, contents + rel->r_offset + 4);
+	  bfd_putl32 (add_R0_R0_R1, contents + rel->r_offset + 8);
+	  return bfd_reloc_continue;
+	}
+      else
+	{
+	  /* GD->IE relaxation
+	     ADD  x0, #:tlsgd_lo12:var	=> ldr	R0, [x0, #:gottprel_lo12:var]
+	     BL	  __tls_get_addr	=> mrs	x1, tpidr_el0
+	       R_AARCH64_CALL26
+	     NOP			=> add	R0, R1, R0
+
+	     Where R is x for lp64 mode, and w for ilp32 mode.  */
+
+	  BFD_ASSERT (ELFNN_R_TYPE (rel[1].r_info) == AARCH64_R (CALL26));
+
+	  /* Remove the relocation on the BL instruction.  */
+	  rel[1].r_info = ELFNN_R_INFO (STN_UNDEF, R_AARCH64_NONE);
+
+	  /* We choose to fixup the BL and NOP instructions using the
+	     offset from the second relocation to allow flexibility in
+	     scheduling instructions between the ADD and BL.  */
+	  bfd_putl32 (ldr_R0_x0, contents + rel->r_offset);
+	  bfd_putl32 (0xd53bd041, contents + rel[1].r_offset);
+	  bfd_putl32 (add_R0_R0_R1, contents + rel[1].r_offset + 4);
+	  return bfd_reloc_continue;
+	}
+
+    case BFD_RELOC_AARCH64_TLSDESC_ADD:
+    case BFD_RELOC_AARCH64_TLSDESC_ADD_LO12:
+    case BFD_RELOC_AARCH64_TLSDESC_CALL:
+      /* GD->IE/LE relaxation:
+	 add x0, x0, #:tlsdesc_lo12:var	  =>   nop
+	 blr xd				  =>   nop
+       */
+      bfd_putl32 (INSN_NOP, contents + rel->r_offset);
+      return bfd_reloc_ok;
+
+    case BFD_RELOC_AARCH64_TLSDESC_LDR:
+      if (is_local)
+	{
+	  /* GD->LE relaxation:
+	     ldr xd, [gp, xn]   =>   movk R0, #:tprel_g0_nc:var
+
+	     Where R is x for lp64 mode, and w for ILP32 mode.  */
+	  bfd_putl32 (movk_R0, contents + rel->r_offset);
+	  return bfd_reloc_continue;
+	}
+      else
+	{
+	  /* GD->IE relaxation:
+	     ldr xd, [gp, xn]   =>   ldr R0, [gp, xn]
+
+	     Where R is x for lp64 mode, and w for ILP32 mode.  */
+	  insn = bfd_getl32 (contents + rel->r_offset);
+	  bfd_putl32 (ldr_R0_mask (insn), contents + rel->r_offset);
+	  return bfd_reloc_ok;
+	}
+
+    case BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:
+      /* GD->LE relaxation:
+	 movk xd, #:tlsdesc_off_g0_nc:var => movk R0, #:tprel_g1_nc:var, lsl #16
+	 GD->IE relaxation:
+	 movk xd, #:tlsdesc_off_g0_nc:var => movk Rd, #:gottprel_g0_nc:var
+
+	 Where R is x for lp64 mode, and w for ILP32 mode.  */
+      if (is_local)
+	bfd_putl32 (ldr_hw_R0, contents + rel->r_offset);
+      return bfd_reloc_continue;
+
+    case BFD_RELOC_AARCH64_TLSDESC_OFF_G1:
+      if (is_local)
+	{
+	  /* GD->LE relaxation:
+	     movz xd, #:tlsdesc_off_g1:var => movz R0, #:tprel_g2:var, lsl #32
+
+	     Where R is x for lp64 mode, and w for ILP32 mode.  */
+	  bfd_putl32 (movz_hw_R0, contents + rel->r_offset);
+	  return bfd_reloc_continue;
+	}
+      else
+	{
+	  /*  GD->IE relaxation:
+	      movz xd, #:tlsdesc_off_g1:var => movz Rd, #:gottprel_g1:var, lsl #16
+
+	     Where R is x for lp64 mode, and w for ILP32 mode.  */
+	  insn = bfd_getl32 (contents + rel->r_offset);
+	  bfd_putl32 (movz_R0 | (insn & 0x1f), contents + rel->r_offset);
+	  return bfd_reloc_continue;
+	}
+
+    case BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21:
+      /* IE->LE relaxation:
+	 adrp xd, :gottprel:var   =>   movz Rd, :tprel_g1:var
+
+	 Where R is x for lp64 mode, and w for ILP32 mode.  */
+      if (is_local)
+	{
+	  insn = bfd_getl32 (contents + rel->r_offset);
+	  bfd_putl32 (movz_R0 | (insn & 0x1f), contents + rel->r_offset);
+	  /* We have relaxed the adrp into a mov, we may have to clear any
+	     pending erratum fixes.  */
+	  clear_erratum_843419_entry (globals, rel->r_offset, input_section);
+	}
+      return bfd_reloc_continue;
+
+    case BFD_RELOC_AARCH64_TLSIE_LDNN_GOTTPREL_LO12_NC:
+      /* IE->LE relaxation:
+	 ldr  xd, [xm, #:gottprel_lo12:var]   =>   movk Rd, :tprel_g0_nc:var
+
+	 Where R is x for lp64 mode, and w for ILP32 mode.  */
+      if (is_local)
+	{
+	  insn = bfd_getl32 (contents + rel->r_offset);
+	  bfd_putl32 (movk_R0 | (insn & 0x1f), contents + rel->r_offset);
+	}
+      return bfd_reloc_continue;
+
+    case BFD_RELOC_AARCH64_TLSLD_ADR_PREL21:
+      /* LD->LE relaxation (tiny):
+	 adr  x0, :tlsldm:x  => mrs x0, tpidr_el0
+	 bl   __tls_get_addr => add R0, R0, TCB_SIZE
+
+	 Where R is x for lp64 mode, and w for ilp32 mode.  */
+      if (is_local)
+	{
+	  BFD_ASSERT (rel->r_offset + 4 == rel[1].r_offset);
+	  BFD_ASSERT (ELFNN_R_TYPE (rel[1].r_info) == AARCH64_R (CALL26));
+	  /* No need of CALL26 relocation for tls_get_addr.  */
+	  rel[1].r_info = ELFNN_R_INFO (STN_UNDEF, R_AARCH64_NONE);
+	  bfd_putl32 (0xd53bd040, contents + rel->r_offset + 0);
+	  bfd_putl32 (add_R0_R0 | (TCB_SIZE << 10),
+		      contents + rel->r_offset + 4);
+	  return bfd_reloc_ok;
+	}
+      return bfd_reloc_continue;
+
+    case BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21:
+      /* LD->LE relaxation (small):
+	 adrp  x0, :tlsldm:x       => mrs x0, tpidr_el0
+       */
+      if (is_local)
+	{
+	  bfd_putl32 (0xd53bd040, contents + rel->r_offset);
+	  return bfd_reloc_ok;
+	}
+      return bfd_reloc_continue;
+
+    case BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC:
+      /* LD->LE relaxation (small):
+	 add   x0, #:tlsldm_lo12:x => add R0, R0, TCB_SIZE
+	 bl   __tls_get_addr       => nop
+
+	 Where R is x for lp64 mode, and w for ilp32 mode.  */
+      if (is_local)
+	{
+	  BFD_ASSERT (rel->r_offset + 4 == rel[1].r_offset);
+	  BFD_ASSERT (ELFNN_R_TYPE (rel[1].r_info) == AARCH64_R (CALL26));
+	  /* No need of CALL26 relocation for tls_get_addr.  */
+	  rel[1].r_info = ELFNN_R_INFO (STN_UNDEF, R_AARCH64_NONE);
+	  bfd_putl32 (add_R0_R0 | (TCB_SIZE << 10),
+		      contents + rel->r_offset + 0);
+	  bfd_putl32 (INSN_NOP, contents + rel->r_offset + 4);
+	  return bfd_reloc_ok;
+	}
+      return bfd_reloc_continue;
+
+    default:
+      return bfd_reloc_continue;
+    }
+
+  return bfd_reloc_ok;
+}
+
+/* Relocate an AArch64 ELF section.  */
+
+static int
+elfNN_aarch64_relocate_section (bfd *output_bfd,
+				struct bfd_link_info *info,
+				bfd *input_bfd,
+				asection *input_section,
+				bfd_byte *contents,
+				Elf_Internal_Rela *relocs,
+				Elf_Internal_Sym *local_syms,
+				asection **local_sections)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  Elf_Internal_Rela *rel;
+  Elf_Internal_Rela *relend;
+  const char *name;
+  struct elf_aarch64_link_hash_table *globals;
+  bool save_addend = false;
+  bfd_vma addend = 0;
+
+  globals = elf_aarch64_hash_table (info);
+
+  symtab_hdr = &elf_symtab_hdr (input_bfd);
+  sym_hashes = elf_sym_hashes (input_bfd);
+
+  rel = relocs;
+  relend = relocs + input_section->reloc_count;
+  for (; rel < relend; rel++)
+    {
+      unsigned int r_type;
+      bfd_reloc_code_real_type bfd_r_type;
+      bfd_reloc_code_real_type relaxed_bfd_r_type;
+      reloc_howto_type *howto;
+      unsigned long r_symndx;
+      Elf_Internal_Sym *sym;
+      asection *sec;
+      struct elf_link_hash_entry *h;
+      bfd_vma relocation;
+      bfd_reloc_status_type r;
+      arelent bfd_reloc;
+      char sym_type;
+      bool unresolved_reloc = false;
+      char *error_message = NULL;
+
+      r_symndx = ELFNN_R_SYM (rel->r_info);
+      r_type = ELFNN_R_TYPE (rel->r_info);
+
+      bfd_reloc.howto = elfNN_aarch64_howto_from_type (input_bfd, r_type);
+      howto = bfd_reloc.howto;
+
+      if (howto == NULL)
+	return _bfd_unrecognized_reloc (input_bfd, input_section, r_type);
+
+      bfd_r_type = elfNN_aarch64_bfd_reloc_from_howto (howto);
+
+      h = NULL;
+      sym = NULL;
+      sec = NULL;
+
+      if (r_symndx < symtab_hdr->sh_info)
+	{
+	  sym = local_syms + r_symndx;
+	  sym_type = ELFNN_ST_TYPE (sym->st_info);
+	  sec = local_sections[r_symndx];
+
+	  /* An object file might have a reference to a local
+	     undefined symbol.  This is a daft object file, but we
+	     should at least do something about it.  */
+	  if (r_type != R_AARCH64_NONE && r_type != R_AARCH64_NULL
+	      && bfd_is_und_section (sec)
+	      && ELF_ST_BIND (sym->st_info) != STB_WEAK)
+	    (*info->callbacks->undefined_symbol)
+	      (info, bfd_elf_string_from_elf_section
+	       (input_bfd, symtab_hdr->sh_link, sym->st_name),
+	       input_bfd, input_section, rel->r_offset, true);
+
+	  relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
+
+	  /* Relocate against local STT_GNU_IFUNC symbol.  */
+	  if (!bfd_link_relocatable (info)
+	      && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
+	    {
+	      h = elfNN_aarch64_get_local_sym_hash (globals, input_bfd,
+						    rel, false);
+	      if (h == NULL)
+		abort ();
+
+	      /* Set STT_GNU_IFUNC symbol value.  */
+	      h->root.u.def.value = sym->st_value;
+	      h->root.u.def.section = sec;
+	    }
+	}
+      else
+	{
+	  bool warned, ignored;
+
+	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
+				   r_symndx, symtab_hdr, sym_hashes,
+				   h, sec, relocation,
+				   unresolved_reloc, warned, ignored);
+
+	  sym_type = h->type;
+	}
+
+      if (sec != NULL && discarded_section (sec))
+	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
+					 rel, 1, relend, howto, 0, contents);
+
+      if (bfd_link_relocatable (info))
+	continue;
+
+      if (h != NULL)
+	name = h->root.root.string;
+      else
+	{
+	  name = (bfd_elf_string_from_elf_section
+		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
+	  if (name == NULL || *name == '\0')
+	    name = bfd_section_name (sec);
+	}
+
+      if (r_symndx != 0
+	  && r_type != R_AARCH64_NONE
+	  && r_type != R_AARCH64_NULL
+	  && (h == NULL
+	      || h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	  && IS_AARCH64_TLS_RELOC (bfd_r_type) != (sym_type == STT_TLS))
+	{
+	  _bfd_error_handler
+	    ((sym_type == STT_TLS
+	      /* xgettext:c-format */
+	      ? _("%pB(%pA+%#" PRIx64 "): %s used with TLS symbol %s")
+	      /* xgettext:c-format */
+	      : _("%pB(%pA+%#" PRIx64 "): %s used with non-TLS symbol %s")),
+	     input_bfd,
+	     input_section, (uint64_t) rel->r_offset, howto->name, name);
+	}
+
+      /* We relax only if we can see that there can be a valid transition
+	 from a reloc type to another.
+	 We call elfNN_aarch64_final_link_relocate unless we're completely
+	 done, i.e., the relaxation produced the final output we want.  */
+
+      relaxed_bfd_r_type = aarch64_tls_transition (input_bfd, info, r_type,
+						   h, r_symndx);
+      if (relaxed_bfd_r_type != bfd_r_type)
+	{
+	  bfd_r_type = relaxed_bfd_r_type;
+	  howto = elfNN_aarch64_howto_from_bfd_reloc (bfd_r_type);
+	  BFD_ASSERT (howto != NULL);
+	  r_type = howto->type;
+	  r = elfNN_aarch64_tls_relax (globals, input_bfd, input_section,
+				       contents, rel, h);
+	  unresolved_reloc = 0;
+	}
+      else
+	r = bfd_reloc_continue;
+
+      /* There may be multiple consecutive relocations for the
+	 same offset.  In that case we are supposed to treat the
+	 output of each relocation as the addend for the next.  */
+      if (rel + 1 < relend
+	  && rel->r_offset == rel[1].r_offset
+	  && ELFNN_R_TYPE (rel[1].r_info) != R_AARCH64_NONE
+	  && ELFNN_R_TYPE (rel[1].r_info) != R_AARCH64_NULL)
+	save_addend = true;
+      else
+	save_addend = false;
+
+      if (r == bfd_reloc_continue)
+	r = elfNN_aarch64_final_link_relocate (howto, input_bfd, output_bfd,
+					       input_section, contents, rel,
+					       relocation, info, sec,
+					       h, &unresolved_reloc,
+					       save_addend, &addend, sym);
+
+      switch (elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type))
+	{
+	case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
+	case BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:
+	case BFD_RELOC_AARCH64_TLSGD_ADR_PREL21:
+	case BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC:
+	case BFD_RELOC_AARCH64_TLSGD_MOVW_G1:
+	case BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC:
+	case BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21:
+	case BFD_RELOC_AARCH64_TLSLD_ADR_PREL21:
+	  if (! symbol_got_offset_mark_p (input_bfd, h, r_symndx))
+	    {
+	      bool need_relocs = false;
+	      bfd_byte *loc;
+	      int indx;
+	      bfd_vma off;
+
+	      off = symbol_got_offset (input_bfd, h, r_symndx);
+	      indx = h && h->dynindx != -1 ? h->dynindx : 0;
+
+	      need_relocs =
+		(!bfd_link_executable (info) || indx != 0) &&
+		(h == NULL
+		 || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+		 || h->root.type != bfd_link_hash_undefweak);
+
+	      BFD_ASSERT (globals->root.srelgot != NULL);
+
+	      if (need_relocs)
+		{
+		  Elf_Internal_Rela rela;
+		  rela.r_info = ELFNN_R_INFO (indx, AARCH64_R (TLS_DTPMOD));
+		  rela.r_addend = 0;
+		  rela.r_offset = globals->root.sgot->output_section->vma +
+		    globals->root.sgot->output_offset + off;
+
+
+		  loc = globals->root.srelgot->contents;
+		  loc += globals->root.srelgot->reloc_count++
+		    * RELOC_SIZE (htab);
+		  bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+
+		  bfd_reloc_code_real_type real_type =
+		    elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type);
+
+		  if (real_type == BFD_RELOC_AARCH64_TLSLD_ADR_PREL21
+		      || real_type == BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21
+		      || real_type == BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC)
+		    {
+		      /* For local dynamic, don't generate DTPREL in any case.
+			 Initialize the DTPREL slot into zero, so we get module
+			 base address when invoke runtime TLS resolver.  */
+		      bfd_put_NN (output_bfd, 0,
+				  globals->root.sgot->contents + off
+				  + GOT_ENTRY_SIZE);
+		    }
+		  else if (indx == 0)
+		    {
+		      bfd_put_NN (output_bfd,
+				  relocation - dtpoff_base (info),
+				  globals->root.sgot->contents + off
+				  + GOT_ENTRY_SIZE);
+		    }
+		  else
+		    {
+		      /* This TLS symbol is global. We emit a
+			 relocation to fixup the tls offset at load
+			 time.  */
+		      rela.r_info =
+			ELFNN_R_INFO (indx, AARCH64_R (TLS_DTPREL));
+		      rela.r_addend = 0;
+		      rela.r_offset =
+			(globals->root.sgot->output_section->vma
+			 + globals->root.sgot->output_offset + off
+			 + GOT_ENTRY_SIZE);
+
+		      loc = globals->root.srelgot->contents;
+		      loc += globals->root.srelgot->reloc_count++
+			* RELOC_SIZE (globals);
+		      bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+		      bfd_put_NN (output_bfd, (bfd_vma) 0,
+				  globals->root.sgot->contents + off
+				  + GOT_ENTRY_SIZE);
+		    }
+		}
+	      else
+		{
+		  bfd_put_NN (output_bfd, (bfd_vma) 1,
+			      globals->root.sgot->contents + off);
+		  bfd_put_NN (output_bfd,
+			      relocation - dtpoff_base (info),
+			      globals->root.sgot->contents + off
+			      + GOT_ENTRY_SIZE);
+		}
+
+	      symbol_got_offset_mark (input_bfd, h, r_symndx);
+	    }
+	  break;
+
+	case BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21:
+	case BFD_RELOC_AARCH64_TLSIE_LDNN_GOTTPREL_LO12_NC:
+	case BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19:
+	case BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC:
+	case BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1:
+	  if (! symbol_got_offset_mark_p (input_bfd, h, r_symndx))
+	    {
+	      bool need_relocs = false;
+	      bfd_byte *loc;
+	      int indx;
+	      bfd_vma off;
+
+	      off = symbol_got_offset (input_bfd, h, r_symndx);
+
+	      indx = h && h->dynindx != -1 ? h->dynindx : 0;
+
+	      need_relocs =
+		(!bfd_link_executable (info) || indx != 0) &&
+		(h == NULL
+		 || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+		 || h->root.type != bfd_link_hash_undefweak);
+
+	      BFD_ASSERT (globals->root.srelgot != NULL);
+
+	      if (need_relocs)
+		{
+		  Elf_Internal_Rela rela;
+
+		  if (indx == 0)
+		    rela.r_addend = relocation - dtpoff_base (info);
+		  else
+		    rela.r_addend = 0;
+
+		  rela.r_info = ELFNN_R_INFO (indx, AARCH64_R (TLS_TPREL));
+		  rela.r_offset = globals->root.sgot->output_section->vma +
+		    globals->root.sgot->output_offset + off;
+
+		  loc = globals->root.srelgot->contents;
+		  loc += globals->root.srelgot->reloc_count++
+		    * RELOC_SIZE (htab);
+
+		  bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+
+		  bfd_put_NN (output_bfd, rela.r_addend,
+			      globals->root.sgot->contents + off);
+		}
+	      else
+		bfd_put_NN (output_bfd, relocation - tpoff_base (info),
+			    globals->root.sgot->contents + off);
+
+	      symbol_got_offset_mark (input_bfd, h, r_symndx);
+	    }
+	  break;
+
+	case BFD_RELOC_AARCH64_TLSDESC_ADD_LO12:
+	case BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:
+	case BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21:
+	case BFD_RELOC_AARCH64_TLSDESC_LDNN_LO12_NC:
+	case BFD_RELOC_AARCH64_TLSDESC_LD_PREL19:
+	case BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:
+	case BFD_RELOC_AARCH64_TLSDESC_OFF_G1:
+	  if (! symbol_tlsdesc_got_offset_mark_p (input_bfd, h, r_symndx))
+	    {
+	      bool need_relocs = false;
+	      int indx = h && h->dynindx != -1 ? h->dynindx : 0;
+	      bfd_vma off = symbol_tlsdesc_got_offset (input_bfd, h, r_symndx);
+
+	      need_relocs = (h == NULL
+			     || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+			     || h->root.type != bfd_link_hash_undefweak);
+
+	      BFD_ASSERT (globals->root.srelgot != NULL);
+	      BFD_ASSERT (globals->root.sgot != NULL);
+
+	      if (need_relocs)
+		{
+		  bfd_byte *loc;
+		  Elf_Internal_Rela rela;
+		  rela.r_info = ELFNN_R_INFO (indx, AARCH64_R (TLSDESC));
+
+		  rela.r_addend = 0;
+		  rela.r_offset = (globals->root.sgotplt->output_section->vma
+				   + globals->root.sgotplt->output_offset
+				   + off + globals->sgotplt_jump_table_size);
+
+		  if (indx == 0)
+		    rela.r_addend = relocation - dtpoff_base (info);
+
+		  /* Allocate the next available slot in the PLT reloc
+		     section to hold our R_AARCH64_TLSDESC, the next
+		     available slot is determined from reloc_count,
+		     which we step. But note, reloc_count was
+		     artifically moved down while allocating slots for
+		     real PLT relocs such that all of the PLT relocs
+		     will fit above the initial reloc_count and the
+		     extra stuff will fit below.  */
+		  loc = globals->root.srelplt->contents;
+		  loc += globals->root.srelplt->reloc_count++
+		    * RELOC_SIZE (globals);
+
+		  bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+
+		  bfd_put_NN (output_bfd, (bfd_vma) 0,
+			      globals->root.sgotplt->contents + off +
+			      globals->sgotplt_jump_table_size);
+		  bfd_put_NN (output_bfd, (bfd_vma) 0,
+			      globals->root.sgotplt->contents + off +
+			      globals->sgotplt_jump_table_size +
+			      GOT_ENTRY_SIZE);
+		}
+
+	      symbol_tlsdesc_got_offset_mark (input_bfd, h, r_symndx);
+	    }
+	  break;
+	default:
+	  break;
+	}
+
+      /* Dynamic relocs are not propagated for SEC_DEBUGGING sections
+	 because such sections are not SEC_ALLOC and thus ld.so will
+	 not process them.  */
+      if (unresolved_reloc
+	  && !((input_section->flags & SEC_DEBUGGING) != 0
+	       && h->def_dynamic)
+	  && _bfd_elf_section_offset (output_bfd, info, input_section,
+				      +rel->r_offset) != (bfd_vma) - 1)
+	{
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB(%pA+%#" PRIx64 "): "
+	       "unresolvable %s relocation against symbol `%s'"),
+	     input_bfd, input_section, (uint64_t) rel->r_offset, howto->name,
+	     h->root.root.string);
+	  return false;
+	}
+
+      if (r != bfd_reloc_ok && r != bfd_reloc_continue)
+	{
+	  bfd_reloc_code_real_type real_r_type
+	    = elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type);
+
+	  switch (r)
+	    {
+	    case bfd_reloc_overflow:
+	      (*info->callbacks->reloc_overflow)
+		(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
+		 input_bfd, input_section, rel->r_offset);
+	      if (real_r_type == BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15
+		  || real_r_type == BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14)
+		{
+		  (*info->callbacks->warning)
+		    (info,
+		     _("too many GOT entries for -fpic, "
+		       "please recompile with -fPIC"),
+		     name, input_bfd, input_section, rel->r_offset);
+		  return false;
+		}
+	      /* Overflow can occur when a variable is referenced with a type
+		 that has a larger alignment than the type with which it was
+		 declared. eg:
+		   file1.c: extern int foo; int a (void) { return foo; }
+		   file2.c: char bar, foo, baz;
+		 If the variable is placed into a data section at an offset
+		 that is incompatible with the larger alignment requirement
+		 overflow will occur.  (Strictly speaking this is not overflow
+		 but rather an alignment problem, but the bfd_reloc_ error
+		 enum does not have a value to cover that situation).
+
+		 Try to catch this situation here and provide a more helpful
+		 error message to the user.  */
+	      if (addend & (((bfd_vma) 1 << howto->rightshift) - 1)
+		  /* FIXME: Are we testing all of the appropriate reloc
+		     types here ?  */
+		  && (real_r_type == BFD_RELOC_AARCH64_LD_LO19_PCREL
+		      || real_r_type == BFD_RELOC_AARCH64_LDST16_LO12
+		      || real_r_type == BFD_RELOC_AARCH64_LDST32_LO12
+		      || real_r_type == BFD_RELOC_AARCH64_LDST64_LO12
+		      || real_r_type == BFD_RELOC_AARCH64_LDST128_LO12))
+		{
+		  info->callbacks->warning
+		    (info, _("one possible cause of this error is that the \
+symbol is being referenced in the indicated code as if it had a larger \
+alignment than was declared where it was defined"),
+		     name, input_bfd, input_section, rel->r_offset);
+		}
+	      break;
+
+	    case bfd_reloc_undefined:
+	      (*info->callbacks->undefined_symbol)
+		(info, name, input_bfd, input_section, rel->r_offset, true);
+	      break;
+
+	    case bfd_reloc_outofrange:
+	      error_message = _("out of range");
+	      goto common_error;
+
+	    case bfd_reloc_notsupported:
+	      error_message = _("unsupported relocation");
+	      goto common_error;
+
+	    case bfd_reloc_dangerous:
+	      /* error_message should already be set.  */
+	      goto common_error;
+
+	    default:
+	      error_message = _("unknown error");
+	      /* Fall through.  */
+
+	    common_error:
+	      BFD_ASSERT (error_message != NULL);
+	      (*info->callbacks->reloc_dangerous)
+		(info, error_message, input_bfd, input_section, rel->r_offset);
+	      break;
+	    }
+	}
+
+      if (!save_addend)
+	addend = 0;
+    }
+
+  return true;
+}
+
+/* Set the right machine number.  */
+
+static bool
+elfNN_aarch64_object_p (bfd *abfd)
+{
+#if ARCH_SIZE == 32
+  bfd_default_set_arch_mach (abfd, bfd_arch_aarch64, bfd_mach_aarch64_ilp32);
+#else
+  bfd_default_set_arch_mach (abfd, bfd_arch_aarch64, bfd_mach_aarch64);
+#endif
+  return true;
+}
+
+/* Function to keep AArch64 specific flags in the ELF header.  */
+
+static bool
+elfNN_aarch64_set_private_flags (bfd *abfd, flagword flags)
+{
+  if (elf_flags_init (abfd) && elf_elfheader (abfd)->e_flags != flags)
+    {
+    }
+  else
+    {
+      elf_elfheader (abfd)->e_flags = flags;
+      elf_flags_init (abfd) = true;
+    }
+
+  return true;
+}
+
+/* Merge backend specific data from an object file to the output
+   object file when linking.  */
+
+static bool
+elfNN_aarch64_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
+{
+  bfd *obfd = info->output_bfd;
+  flagword out_flags;
+  flagword in_flags;
+  bool flags_compatible = true;
+  asection *sec;
+
+  /* Check if we have the same endianess.  */
+  if (!_bfd_generic_verify_endian_match (ibfd, info))
+    return false;
+
+  if (!is_aarch64_elf (ibfd) || !is_aarch64_elf (obfd))
+    return true;
+
+  /* The input BFD must have had its flags initialised.  */
+  /* The following seems bogus to me -- The flags are initialized in
+     the assembler but I don't think an elf_flags_init field is
+     written into the object.  */
+  /* BFD_ASSERT (elf_flags_init (ibfd)); */
+
+  in_flags = elf_elfheader (ibfd)->e_flags;
+  out_flags = elf_elfheader (obfd)->e_flags;
+
+  if (!elf_flags_init (obfd))
+    {
+      /* If the input is the default architecture and had the default
+	 flags then do not bother setting the flags for the output
+	 architecture, instead allow future merges to do this.  If no
+	 future merges ever set these flags then they will retain their
+	 uninitialised values, which surprise surprise, correspond
+	 to the default values.  */
+      if (bfd_get_arch_info (ibfd)->the_default
+	  && elf_elfheader (ibfd)->e_flags == 0)
+	return true;
+
+      elf_flags_init (obfd) = true;
+      elf_elfheader (obfd)->e_flags = in_flags;
+
+      if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
+	  && bfd_get_arch_info (obfd)->the_default)
+	return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
+				  bfd_get_mach (ibfd));
+
+      return true;
+    }
+
+  /* Identical flags must be compatible.  */
+  if (in_flags == out_flags)
+    return true;
+
+  /* Check to see if the input BFD actually contains any sections.  If
+     not, its flags may not have been initialised either, but it
+     cannot actually cause any incompatiblity.  Do not short-circuit
+     dynamic objects; their section list may be emptied by
+     elf_link_add_object_symbols.
+
+     Also check to see if there are no code sections in the input.
+     In this case there is no need to check for code specific flags.
+     XXX - do we need to worry about floating-point format compatability
+     in data sections ?  */
+  if (!(ibfd->flags & DYNAMIC))
+    {
+      bool null_input_bfd = true;
+      bool only_data_sections = true;
+
+      for (sec = ibfd->sections; sec != NULL; sec = sec->next)
+	{
+	  if ((bfd_section_flags (sec)
+	       & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+	      == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+	    only_data_sections = false;
+
+	  null_input_bfd = false;
+	  break;
+	}
+
+      if (null_input_bfd || only_data_sections)
+	return true;
+    }
+
+  return flags_compatible;
+}
+
+/* Display the flags field.  */
+
+static bool
+elfNN_aarch64_print_private_bfd_data (bfd *abfd, void *ptr)
+{
+  FILE *file = (FILE *) ptr;
+  unsigned long flags;
+
+  BFD_ASSERT (abfd != NULL && ptr != NULL);
+
+  /* Print normal ELF private data.  */
+  _bfd_elf_print_private_bfd_data (abfd, ptr);
+
+  flags = elf_elfheader (abfd)->e_flags;
+  /* Ignore init flag - it may not be set, despite the flags field
+     containing valid data.  */
+
+  /* xgettext:c-format */
+  fprintf (file, _("private flags = 0x%lx:"), elf_elfheader (abfd)->e_flags);
+
+  if (flags)
+    fprintf (file, _(" <Unrecognised flag bits set>"));
+
+  fputc ('\n', file);
+
+  return true;
+}
+
+/* Return true if we need copy relocation against EH.  */
+
+static bool
+need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
+{
+  struct elf_dyn_relocs *p;
+  asection *s;
+
+  for (p = eh->root.dyn_relocs; p != NULL; p = p->next)
+    {
+      /* If there is any pc-relative reference, we need to keep copy relocation
+	 to avoid propagating the relocation into runtime that current glibc
+	 does not support.  */
+      if (p->pc_cou