-
Notifications
You must be signed in to change notification settings - Fork 13
SPEC2000 on ARC
As of today pre-built native toolchain for ARC HS is built against uClibc with configuration that differs from Buildroot. It has enabled UCLIBC_HAS_LOCALE and disabled UCLIBC_HAS_XLOCALE while Buildroot enables both options in uClibc if user wants to have support of locales on target.
With vanilla Buildroot user will see a message about inability to resolve __ctype_b on running gcc on target. So we'll satisfy native tools requiremens with that simple change in Buildroot sources:
diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
index 7de9219873..da2605cb24 100644
--- a/package/uclibc/uclibc.mk
+++ b/package/uclibc/uclibc.mk
@@ -338,7 +338,6 @@ define UCLIBC_LOCALE_CONFIG
$(call KCONFIG_SET_OPT,UCLIBC_BUILD_MINIMAL_LOCALES,"$(UCLIBC_LOCALES)",$(@D)/.config)
$(call KCONFIG_DISABLE_OPT,UCLIBC_PREGENERATED_LOCALE_DATA,$(@D)/.config)
$(call KCONFIG_DISABLE_OPT,DOWNLOAD_PREGENERATED_LOCALE_DATA,$(@D)/.config)
- $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_XLOCALE,$(@D)/.config)
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_GLIBC_DIGIT_GROUPING,$(@D)/.config)
endef
else
Use the most recent Buildroot release and the following defconfig:
BR2_arcle=y
BR2_archs38=y
BR2_KERNEL_HEADERS_4_16=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_PTHREAD_DEBUG=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TARGET_GENERIC_HOSTNAME="hsdk"
BR2_TARGET_GENERIC_ISSUE="Welcome to the HSDK Platform"
BR2_SYSTEM_DHCP="eth0"
BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/synopsys/hsdk/genimage.cfg"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.17.13"
BR2_LINUX_KERNEL_DEFCONFIG="hsdk"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/synopsys/hsdk/linux.fragment"
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_STRACE=y
BR2_PACKAGE_NTP=y
BR2_PACKAGE_NTP_NTPDATE=y
BR2_PACKAGE_OPENSSH=y
BR2_PACKAGE_RSYNC=y
BR2_PACKAGE_COREUTILS=y
BR2_PACKAGE_HTOP=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.07"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="hsdk"
BR2_TARGET_UBOOT_NEEDS_DTC=y
BR2_TARGET_UBOOT_FORMAT_ELF=y
BR2_TARGET_UBOOT_ENVIMAGE=y
BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/synopsys/hsdk/uboot.env.txt"
BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000"
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
- On Linux hosts, use
ddcommand as follows:sudo dd if=sdcard.img of=/dev/mmcblk0 bs=1M - On Windows hosts, use
Win32 Disk Imagerutility, available here: https://sourceforge.net/projects/win32diskimager/
-
Make native tools available for a target, i.e. copy it over to target's
/opt -
Create a smlink from native GCC to CC (Perl configuration scripts looks strictly for
cc):cd /opt/arc_gnu_2018.03_prebuilt_uclibc_le_archs_native_install/bin/ ln -s gcc cc -
Perl's Errno module tries to find
errno.honly in/usr/includeor/usr/local/include(see https://perl5.git.perl.org/perl.git/blob/HEAD:/ext/Errno/Errno_pm.PL), satisfy this requirement with symlink this way:ln -s /opt/arc_gnu_2018.03_prebuilt_uclibc_le_archs_native_install/ /usr/local -
Build SPEC tools:
cd tools/src ./buildtools -
Run SPEC. This will first build benchmarks an then execute them:
. ./shrc runspec --config linux-arc-gcc.cfg --reportable intNote Busybox has no
sourceapplet so we use.instead. -
Rerun SPEC keeping eveything built
runspec --config linux-arc-gcc.cfg --reportable int --make_no_clobberOtherwise all previously produced binaries will be nuked and we'll start over from scratch.