Message ID | 1542595067-45972-1-git-send-email-matthew.weber@rockwellcollins.com |
---|---|
State | Superseded |
Headers | show |
Series | [v3,1/6] package/compiler-rt: new package | expand |
Hi Matt, > This patch adds support for the compiler-rt (CLANG runtime) library. > It builds a set of static libraries and installs them into the > CLANG/LLVM toolchain resource folder. > > Signed-off-by: Matthew Weber<matthew.weber@rockwellcollins.com> > Cc: Romain Naour<romain.naour@smile.fr> > Cc: Ricardo Martincoski<ricardo.martincoski@gmail.com> > --- > Changes > v1 -> v2 > [Romain > - Removed unnecessary host-cmake dependency > > v2 -> v3 > [Romain > - Update to use COMPILER_RT_INSTALL_PATH for library install > [Ricardo > - Fixed check-package extra line > - Spelling in commit message > --- I've just tried to build compiler-rt for arm with uclibc and got the following: buildroot/test/build/compiler-rt-7.0.0/lib/interception/interception_linux.cc: In function ‘void* __interception::GetFuncAddrVer(const char*, const char*)’: buildroot/test/build/compiler-rt-7.0.0/lib/interception/interception_linux.cc:48:10: error: ‘dlvsym’ was not declared in this scope return dlvsym(RTLD_NEXT, func_name, ver); ^~~~~~ buildroot/test/build/compiler-rt-7.0.0/lib/interception/interception_linux.cc:48:10: note: suggested alternative: ‘dlsym’ return dlvsym(RTLD_NEXT, func_name, ver); ^~~~~~ dlsym buildroot/test/build/compiler-rt-7.0.0/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:141:10: fatal error: obstack.h: No such file or directory #include <obstack.h> ^~~~~~~~~~~ compilation terminated. It seems we depend on glibc, haven't tried with musl yet. Best regards, Valentin <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body text="#000000" bgcolor="#FFFFFF"> <pre>Hi Matt,</pre> <blockquote type="cite" cite="mid:1542595067-45972-1-git-send-email-matthew.weber@rockwellcollins.com"> <pre class="moz-quote-pre" wrap="">This patch adds support for the compiler-rt (CLANG runtime) library. It builds a set of static libraries and installs them into the CLANG/LLVM toolchain resource folder. Signed-off-by: Matthew Weber <a class="moz-txt-link-rfc2396E" href="mailto:matthew.weber@rockwellcollins.com"><matthew.weber@rockwellcollins.com></a> Cc: Romain Naour <a class="moz-txt-link-rfc2396E" href="mailto:romain.naour@smile.fr"><romain.naour@smile.fr></a> Cc: Ricardo Martincoski <a class="moz-txt-link-rfc2396E" href="mailto:ricardo.martincoski@gmail.com"><ricardo.martincoski@gmail.com></a> --- Changes v1 -> v2 [Romain - Removed unnecessary host-cmake dependency v2 -> v3 [Romain - Update to use COMPILER_RT_INSTALL_PATH for library install [Ricardo - Fixed check-package extra line - Spelling in commit message --- </pre> </blockquote> <pre>I've just tried to build compiler-rt for arm with uclibc and got the following: buildroot/test/build/compiler-rt-7.0.0/lib/interception/interception_linux.cc: In function ‘void* __interception::GetFuncAddrVer(const char*, const char*)’: buildroot/test/build/compiler-rt-7.0.0/lib/interception/interception_linux.cc:48:10: error: ‘dlvsym’ was not declared in this scope return dlvsym(RTLD_NEXT, func_name, ver); ^~~~~~ buildroot/test/build/compiler-rt-7.0.0/lib/interception/interception_linux.cc:48:10: note: suggested alternative: ‘dlsym’ return dlvsym(RTLD_NEXT, func_name, ver); ^~~~~~ dlsym buildroot/test/build/compiler-rt-7.0.0/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:141:10: fatal error: obstack.h: No such file or directory #include <obstack.h> ^~~~~~~~~~~ compilation terminated. It seems we depend on glibc, haven't tried with musl yet. Best regards, Valentin </pre> </body> </html>
Valentin, On Wed, Nov 21, 2018 at 12:48 AM Valentin Korenblit <valentinkorenblit@gmail.com> wrote: > > Hi Matt, > > This patch adds support for the compiler-rt (CLANG runtime) library. > It builds a set of static libraries and installs them into the > CLANG/LLVM toolchain resource folder. > > Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com> > Cc: Romain Naour <romain.naour@smile.fr> > Cc: Ricardo Martincoski <ricardo.martincoski@gmail.com> > --- > Changes > v1 -> v2 > [Romain > - Removed unnecessary host-cmake dependency > > v2 -> v3 > [Romain > - Update to use COMPILER_RT_INSTALL_PATH for library install > [Ricardo > - Fixed check-package extra line > - Spelling in commit message > --- > > I've just tried to build compiler-rt for arm with uclibc and got the following: > > buildroot/test/build/compiler-rt-7.0.0/lib/interception/interception_linux.cc: > In function ‘void* __interception::GetFuncAddrVer(const char*, const char*)’: > buildroot/test/build/compiler-rt-7.0.0/lib/interception/interception_linux.cc:48:10: error: > ‘dlvsym’ was not declared in this scope > return dlvsym(RTLD_NEXT, func_name, ver); > ^~~~~~ > buildroot/test/build/compiler-rt-7.0.0/lib/interception/interception_linux.cc:48:10: note: > suggested alternative: ‘dlsym’ > return dlvsym(RTLD_NEXT, func_name, ver); > ^~~~~~ > dlsym > > > buildroot/test/build/compiler-rt-7.0.0/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:141:10: > fatal error: obstack.h: No such file or directory > #include <obstack.h> > ^~~~~~~~~~~ > compilation terminated. > > > It seems we depend on glibc, haven't tried with musl yet. > Ah yes. I've only tested with glibc. I'll kickoff some builds. I didn't realize llvm and clang could build with uclibc. I expect musl to work. Matt
diff --git a/DEVELOPERS b/DEVELOPERS index 53467da..e78d649 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1360,6 +1360,7 @@ F: package/bridge-utils/ F: package/checkpolicy/ F: package/checksec/ F: package/cgroupfs-mount/ +F: package/compiler-rt/ F: package/crda/ F: package/devmem2/ F: package/dnsmasq/ diff --git a/package/Config.in b/package/Config.in index b60e770..73ddc2d 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1602,6 +1602,7 @@ menu "Other" source "package/clapack/Config.in" source "package/classpath/Config.in" source "package/cmocka/Config.in" + source "package/compiler-rt/Config.in" source "package/cppcms/Config.in" source "package/cracklib/Config.in" source "package/dawgdic/Config.in" diff --git a/package/compiler-rt/Config.in b/package/compiler-rt/Config.in new file mode 100644 index 0000000..e15d3aa --- /dev/null +++ b/package/compiler-rt/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_COMPILER_RT + bool "compiler-rt" + depends on BR2_PACKAGE_LLVM + help + A collection of runtime libraries primarily used by clang and + llvm to provide builtins, sanitizer runtimes, and profiling + at runtime. + + https://compiler-rt.llvm.org/ + +comment "compiler-rt requires llvm to be enabled" + depends on !BR2_PACKAGE_LLVM diff --git a/package/compiler-rt/compiler-rt.hash b/package/compiler-rt/compiler-rt.hash new file mode 100644 index 0000000..df6ed19 --- /dev/null +++ b/package/compiler-rt/compiler-rt.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 bdec7fe3cf2c85f55656c07dfb0bd93ae46f2b3dd8f33ff3ad6e7586f4c670d6 compiler-rt-7.0.0.src.tar.xz +sha256 417541d990edb3f96327ac03cb67e52eac80fc5c3e7afc69213cd04d7c3b9b27 LICENSE.TXT diff --git a/package/compiler-rt/compiler-rt.mk b/package/compiler-rt/compiler-rt.mk new file mode 100644 index 0000000..fc64707 --- /dev/null +++ b/package/compiler-rt/compiler-rt.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# compiler-rt +# +################################################################################ + +# Compiler-RT should be bumped together with LLVM and Clang as the run-time is +# tied to the version of those tools +COMPILER_RT_VERSION = 7.0.0 +COMPILER_RT_SOURCE = compiler-rt-$(COMPILER_RT_VERSION).src.tar.xz +COMPILER_RT_SITE = http://llvm.org/releases/$(COMPILER_RT_VERSION) +COMPILER_RT_LICENSE = NCSA MIT +COMPILER_RT_LICENSE_FILES = LICENSE.TXT +COMPILER_RT_DEPENDENCIES = host-clang llvm + +COMPILER_RT_INSTALL_STAGING = YES +COMPILER_RT_INSTALL_TARGET = NO + +# The installation of the target runtime libraries is currently into the +# host-{clang,llvm} resources directory. The "resources" directory is loosely +# document and this location will probably need revisited when making the +# llvm/clang tools SDK relocatable. +COMPILER_RT_CONF_OPTS=-DCOMPILER_RT_INCLUDE_TESTS=ON \ + -DCOMPILER_RT_STANDALONE_BUILD=ON \ + -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=$(GNU_TARGET_NAME) \ + -DLLVM_CONFIG_PATH=$(HOST_DIR)/usr/bin/llvm-config \ + -DCOMPILER_RT_INSTALL_PATH=$(HOST_DIR)/lib/clang/$(HOST_CLANG_VERSION)/ + +define COMPILER_RT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install/fast +endef + +$(eval $(cmake-package))
This patch adds support for the compiler-rt (CLANG runtime) library. It builds a set of static libraries and installs them into the CLANG/LLVM toolchain resource folder. Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com> Cc: Romain Naour <romain.naour@smile.fr> Cc: Ricardo Martincoski <ricardo.martincoski@gmail.com> --- Changes v1 -> v2 [Romain - Removed unnecessary host-cmake dependency v2 -> v3 [Romain - Update to use COMPILER_RT_INSTALL_PATH for library install [Ricardo - Fixed check-package extra line - Spelling in commit message --- DEVELOPERS | 1 + package/Config.in | 1 + package/compiler-rt/Config.in | 12 ++++++++++++ package/compiler-rt/compiler-rt.hash | 3 +++ package/compiler-rt/compiler-rt.mk | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 50 insertions(+) create mode 100644 package/compiler-rt/Config.in create mode 100644 package/compiler-rt/compiler-rt.hash create mode 100644 package/compiler-rt/compiler-rt.mk