Skip to content

Commit

Permalink
Merge branch 'master' into janitorial
Browse files Browse the repository at this point in the history
  • Loading branch information
KirillSmirnov committed Oct 4, 2016
2 parents 8c04681 + 3ec2211 commit c7cb030
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 2 deletions.
5 changes: 5 additions & 0 deletions config/cc/gcc.in
Expand Up @@ -160,6 +160,7 @@ config CC_GCC_5
select CC_GCC_HAS_LNK_HASH_STYLE
select CC_GCC_HAS_LIBQUADMATH
select CC_GCC_HAS_LIBSANITIZER
select CC_GCC_HAS_LIBMPX
select CC_SUPPORT_GOLANG

config CC_GCC_5_or_later
Expand All @@ -178,6 +179,7 @@ config CC_GCC_6
select CC_GCC_HAS_LNK_HASH_STYLE
select CC_GCC_HAS_LIBQUADMATH
select CC_GCC_HAS_LIBSANITIZER
select CC_GCC_HAS_LIBMPX
select CC_SUPPORT_GOLANG

config CC_GCC_6_or_later
Expand Down Expand Up @@ -276,6 +278,9 @@ config CC_GCC_HAS_LIBQUADMATH
config CC_GCC_HAS_LIBSANITIZER
bool

config CC_GCC_HAS_LIBMPX
bool

if ! CC_GCC_CUSTOM

config CC_GCC_VERSION
Expand Down
10 changes: 10 additions & 0 deletions config/cc/gcc.in.2
Expand Up @@ -182,6 +182,16 @@ config CC_GCC_LIBSANITIZER

The default is 'N'. Say 'Y' if you need it, and report success/failure.

config CC_GCC_LIBMPX
bool
default y
prompt "Compile libmpx"
depends on CC_GCC_HAS_LIBMPX
depends on ARCH_x86
depends on !LIBC_musl # MUSL does not define libc types that GCC requires
help
Enable GCC support for Intel Memory Protection Extensions (MPX).

#-----------------------------------------------------------------------------

comment "Misc. obscure options."
Expand Down
38 changes: 36 additions & 2 deletions scripts/build/cc/100-gcc.sh
Expand Up @@ -436,6 +436,7 @@ do_gcc_core_backend() {

extra_config+=(--disable-libgomp)
extra_config+=(--disable-libmudflap)
extra_config+=(--disable-libmpx)

if [ "${CT_CC_GCC_LIBSSP}" = "y" ]; then
extra_config+=(--enable-libssp)
Expand Down Expand Up @@ -769,6 +770,23 @@ do_gcc_for_build() {
CT_EndStep
}

gcc_movelibs() {
local multi_flags multi_dir multi_os_dir multi_root multi_index multi_count
local gcc_dir

for arg in "$@"; do
eval "${arg// /\\ }"
done

# Move only files, directories are for other multilibs
gcc_dir="${CT_PREFIX_DIR}/${CT_TARGET}/lib/${multi_os_dir}"
ls "${gcc_dir}" | while read f; do
if [ -f "${gcc_dir}/${f}" ]; then
CT_DoExecLog ALL mv "${gcc_dir}/${f}" "${multi_root}/lib/${multi_os_dir}/${f}"
fi
done
}

#------------------------------------------------------------------------------
# Build final gcc to run on host
do_gcc_for_host() {
Expand Down Expand Up @@ -800,10 +818,18 @@ do_gcc_for_host() {

CT_DoStep INFO "Installing final gcc compiler"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final"

"${final_backend}" "${final_opts[@]}"

CT_Popd

# GCC installs stuff (including libgcc) into its own /lib dir,
# outside of sysroot, breaking linking with -static-libgcc.
# Fix up by moving the libraries into the sysroot.
if [ "${CT_USE_SYSROOT}" = "y" ]; then
CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final-movelibs"
CT_IterateMultilibs gcc_movelibs movelibs
CT_Popd
fi

CT_EndStep
}

Expand Down Expand Up @@ -904,6 +930,14 @@ do_gcc_backend() {
fi
fi

if [ "${CT_CC_GCC_HAS_LIBMPX}" = "y" ]; then
if [ "${CT_CC_GCC_LIBMPX}" = "y" ]; then
extra_config+=(--enable-libmpx)
else
extra_config+=(--disable-libmpx)
fi
fi

final_LDFLAGS+=("${ldflags}")

# *** WARNING ! ***
Expand Down

0 comments on commit c7cb030

Please sign in to comment.