toolchain: update to 7.4.0

upstream ref eb72b4eb1ded5492ba839cb1aa33cbe9f5f11584
This commit is contained in:
Maxim Anisimov
2018-12-19 11:21:03 +00:00
parent e108453d79
commit c811367ae4
128 changed files with 4083 additions and 2576 deletions

View File

@ -1,45 +0,0 @@
# Add current directory to PATH
export PATH="$(pwd):$PATH"
# Manage the travis build
ct-ng_travis_build()
{
# Override the log behaviour
sed -i -e 's/^.*\(CT_LOG_ERROR\).*$/# \1 is not set/' \
-e 's/^.*\(CT_LOG_WARN\).*$/# \1 is not set/' \
-e 's/^.*\(CT_LOG_INFO\).*$/# \1 is not set/' \
-e 's/^.*\(CT_LOG_EXTRA\).*$/\1=y/' \
-e 's/^.*\(CT_LOG_ALL\).*$/# \1 is not set/' \
-e 's/^.*\(CT_LOG_DEBUG\).*$/# \1 is not set/' \
-e 's/^.*\(CT_LOG_LEVEL_MAX\).*$/\1="EXTRA"/' \
-e 's/^.*\(CT_LOG_PROGRESS_BAR\).*$/# \1 is not set/' \
-e 's/^.*\(CT_LOCAL_TARBALLS_DIR\).*$/\1="${HOME}\/src"/' \
-e 's/^.*\(CT_SAVE_TARBALLS\).*$/\1=y/' \
.config
# Build the sample
ct-ng build.8 &
local build_pid=$!
# Start a runner task to print a "still running" line every 5 minutes
# to avoid travis to think that the build is stuck
{
while true
do
sleep 300
printf "Crosstool-NG is still running ...\r"
done
} &
local runner_pid=$!
# Wait for the build to finish and get the result
wait $build_pid 2>/dev/null
local result=$?
# Stop the runner task
kill $runner_pid
wait $runner_pid 2>/dev/null
# Return the result
return $result
}

View File

@ -1,56 +0,0 @@
# Using container-based infrastructure
dist: trusty
sudo: false
# 'bash' will define a generic environment without interfering environment
# settings like "CC=gcc"
language: bash
# Only build the master branch
branches:
only:
- master
# Caching the downloaded src packages between several builds to save travis-ci
# download time and bandwidth
cache:
directories:
- $HOME/src
# Installing needed dependencies
addons:
apt:
packages:
- bison
- flex
- libncurses5-dev
- texinfo
- help2man
- g++
# Building crosstool-NG core
install:
- ./bootstrap
- ./configure --enable-local
- make
# Here is the list of all the standard samples tracked
# by the continuous integration system
env:
- CT_SAMPLE=arm-unknown-eabi
- CT_SAMPLE=arm-unknown-linux-musleabi
- CT_SAMPLE=aarch64-unknown-linux-gnu
- CT_SAMPLE=mips64el-multilib-linux-uclibc
- CT_SAMPLE=powerpc-e500v2-linux-gnuspe
- CT_SAMPLE=x86_64-unknown-linux-uclibc
- CT_SAMPLE=xtensa-fsf-linux-uclibc
# Building the standard samples
script:
- . ./.travis.sh # Load the travis environment
- ct-ng $CT_SAMPLE # Configure the build
- ct-ng_travis_build # Build the sample
# On failure displaying the last lines of the log file
after_failure:
- tail -n 1000 build.log

View File

@ -8,7 +8,8 @@ SUBDIRS = kconfig
bin_SCRIPTS = ct-ng
CLEANFILES = ct-ng bash-completion/ct-ng docs/ct-ng.1
EXTRA_DIST = bootstrap ct-ng.in bash-completion/ct-ng.in \
docs/ct-ng.1.in packages maintainer
config/configure.in.in \
docs/ct-ng.1.in packages maintainer testing
if INSTALL_BASH_COMPLETION
compdir = @BASH_COMPLETION_DIR@
@ -18,7 +19,8 @@ endif
man1_MANS = docs/ct-ng.1
# paths.sh generated by configure
nobase_dist_pkgdata_DATA = $(verbatim_data) paths.sh
nobase_dist_pkgdata_DATA = $(verbatim_data)
nobase_nodist_pkgdata_DATA = paths.sh
# ct-ng, as renamed by the installation
ctng_progname = `echo ct-ng | sed '$(transform)'`
@ -76,12 +78,16 @@ endif
uninstall-hook:
rm -f $(DESTDIR)$(man1dir)/$(ctng_progname).1.gz
dist-hook: fetch-docs gen-tarball-version
dist-hook: fetch-docs create-symlinks gen-tarball-version
.PHONY: fetch-docs
fetch-docs: maintainer/download-docs.sh
$< $(top_distdir) $(USER_MANUAL_FILES)
.PHONY: create-symlinks
create-symlinks:
ln -s COPYING $(top_distdir)/LICENSE
.PHONY: gen-tarball-version
gen-tarball-version:
echo $(VERSION) > $(distdir)/.tarball-version

View File

@ -153,15 +153,4 @@ Report issues at [the project site on GitHub](https://github.com/crosstool-ng/cr
We have a [mailing list](mailto:crossgcc@sourceware.org). Archive and subscription info can be found here: [https://sourceware.org/ml/crossgcc/](https://sourceware.org/ml/crossgcc/)
We are also available on IRC: irc.freenode.net #crosstool-ng.
Aloha! :-)
[![Build Status][travis-status]][travis]
[![Throughput Graph](https://graphs.waffle.io/crosstool-ng/crosstool-ng/throughput.svg)](https://waffle.io/crosstool-ng/crosstool-ng/metrics/throughput)
[![Stories in Ready](https://badge.waffle.io/crosstool-ng/crosstool-ng.png?label=ready&title=Ready)](https://waffle.io/crosstool-ng/crosstool-ng) [![Stories in Waiting For Response](https://badge.waffle.io/crosstool-ng/crosstool-ng.png?label=waiting%20for%20response&title=Waiting%20For%20Response)](https://waffle.io/crosstool-ng/crosstool-ng) [![Stories in In Progress](https://badge.waffle.io/crosstool-ng/crosstool-ng.png?label=in%20progress&title=In%20Progress)](https://waffle.io/crosstool-ng/crosstool-ng)
[travis]: https://travis-ci.org/crosstool-ng/crosstool-ng
[travis-status]: https://travis-ci.org/crosstool-ng/crosstool-ng.svg

View File

@ -22,6 +22,19 @@ fi
# Iterate over NAME entities (the iterator must be set up first
# using the set_iter function), processing the lines until the matching
# #!end-foreach line.
#
# Also, several forms of @@VAR@@ expansions are possible:
#
# @@VAR@@
# Just the value of the variable VAR
# @@VAR|@@
# The value of VAR made into Kconfig-name: all non-alphanumeric character
# replaced with underscores; upper-cased.
# @@VAR?val@@
# If VAR is non-empty, insert value "val". Otherwise, insert nothing.
# @@*ITER@@
# Expands to a space separated list of values for the iterator ITER.
# Postprocess operations, if any, are applied to each value.
declare -A info
@ -183,7 +196,8 @@ run_lines()
{
local start="${1}"
local end="${2}"
local l lnext s s1 v vp pp p val
local l lnext s s1 v vn vp pp p val val0 is_iter pp_saved
local -a vpl
debug "Running lines ${start}..${end}"
l=${start}
@ -199,33 +213,53 @@ run_lines()
*@@*@@*)
v="${s#*@@}"
v="${v%%@@*}"
# $v now includes variable name + any postprocessing
vp="${v%%[|?]*}"
pp="${v#${vp}}"
# $vp is name of the variable proper, $pp is any postprocessing
if [ "${info[${vp}]+set}" != "set" ]; then
error "${template}:${l}: reference to undefined variable '${vp}'"
fi
# $v now has the complete reference. First check if it is cached already.
if [ "${info[${v}]+set}" != "set" ]; then
# We know the base variable, need to cache postprocessed value
val="${info[${vp}]}"
# Apply postprocessing(s)
while [ -n "${pp}" ]; do
case "${pp}" in
"|"*)
# Kconfigize
pp="${pp#|}"
val=${val//[^0-9A-Za-z_]/_}
val=${val^^}
;;
"?"*)
pp="${pp#?}"
p="${pp%%[|?]*}"
pp="${pp#${p}}"
val="${val:+${p}}"
;;
esac
case "${v}" in
"*"*) is_iter=y; vn="${v#\*}";;
*) is_iter=n; vn="${v}";;
esac
# $vn is now the reference without the preceding iterator
vp="${vn%%[|?]*}"
pp="${vn#${vp}}"
# $vp is name of the variable proper, $pp is any postprocessing
if [ "${is_iter}" = "n" ]; then
if [ "${info[${vp}]+set}" != "set" ]; then
error "${template}:${l}: reference to undefined variable '${vp}'"
fi
vpl=( "${info[${vp}]}" )
else
if [ "${info[iter_${vp}]+set}" != "set" ]; then
error "${template}:${l}: iterator over '${vp} is not defined"
fi
vpl=( ${info[iter_${vp}]} )
fi
# ${vpl[@]} now is an array of values to be transformed.
val=
pp_saved="${pp}"
for val0 in "${vpl[@]}"; do
debug "val0 [${val0}]"
pp="${pp_saved}"
# Apply postprocessing(s)
while [ -n "${pp}" ]; do
case "${pp}" in
"|"*)
# Kconfigize
pp="${pp#|}"
val0=${val0//[^0-9A-Za-z_]/_}
val0=${val0^^}
;;
"?"*)
pp="${pp#?}"
p="${pp%%[|?]*}"
pp="${pp#${p}}"
val0="${val0:+${p}}"
;;
esac
done
val="${val:+${val} }${val0}"
done
# Cache for future references.
info[${v}]="${val}"
fi
s1="${s1}${s%%@@*}\${info[${v}]}"
@ -745,12 +779,7 @@ msg "*** Gathering the list of data files to install"
find COPYING config contrib licenses.d packages samples scripts -type f | LANG=C sort | while read f; do
# Implement some kind of .installignore for these files?
case "${f}" in
# Skip certain files not needed at runtime (used above for generating kconfig
# fragments).
packages/*.help | packages/*.desc)
continue
;;
# And, some file automake insists we must have
# And, some files automake insists we must have
scripts/compile | scripts/missing | scripts/depcomp | scripts/ltmain.sh | scripts/install-sh)
continue
;;

View File

@ -6,6 +6,7 @@
## select ARCH_DEFAULT_32
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
## select ARCH_SUPPORTS_FLAT_FORMAT
## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_LE
## select ARCH_SUPPORTS_WITH_ARCH

View File

@ -4,6 +4,7 @@
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
## select ARCH_DEFAULT_BE
## select ARCH_SUPPORTS_FLAT_FORMAT
## select ARCH_SUPPORTS_WITH_CPU
##
## help The m68k architecture

View File

@ -9,6 +9,7 @@
## select ARCH_DEFAULT_BE
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
## select ARCH_SUPPORTS_FLAT_FORMAT
##
## help The MicroBlaze architecture, as defined by:
## help http://www.xilinx.com/

View File

@ -0,0 +1,11 @@
# Moxie soft-core architecture
## no-package
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_BE
## depends on EXPERIMENTAL
## help The Moxie soft-core architecture, as defined by:
## help http://moxielogic.org/blog/pages/architecture.html

View File

@ -6,6 +6,7 @@
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_LE
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_FLAT_FORMAT
##
## help The NIOS2 architecture, as defined by:
## help http://www.altera.com

View File

@ -3,7 +3,9 @@
## no-package
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
## select ARCH_SUPPORTS_FLAT_FORMAT
## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_LE
## select ARCH_REQUIRES_MULTILIB

View File

@ -4,7 +4,9 @@
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
## select ARCH_SUPPORTS_FLAT_FORMAT
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FLOAT

View File

@ -6,6 +6,7 @@
## select ARCH_DEFAULT_LE
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
## select ARCH_SUPPORTS_FLAT_FORMAT
## help The xtensa architecture
## help

View File

@ -17,7 +17,7 @@ config ARCH_BINFMT_ELF
config ARCH_BINFMT_FLAT
bool
prompt "Flat"
depends on ! ARCH_USE_MMU
depends on ! ARCH_USE_MMU && ARCH_SUPPORTS_FLAT_FORMAT
help
This will build flat binaries, suitable for
MMU-less architectures.

View File

@ -79,7 +79,7 @@ config BINUTILS_LINKER_LD_GOLD
config BINUTILS_LINKER_GOLD_LD
bool
prompt "gold, ld"
depends on !BINUTILS_FORCE_LD_BFD_ONLY
depends on !BINUTILS_FORCE_LD_BFD_DEFAULT && !BINUTILS_FORCE_LD_BFD_ONLY
depends on BINUTILS_GOLD_SUPPORT
select BINUTILS_GOLD_INSTALLED
select BINUTILS_LINKER_BOTH
@ -146,6 +146,16 @@ config BINUTILS_PLUGINS
Especially, gold can use the lto-plugin, as installed
by gcc, to handle LTO.
config BINUTILS_RELRO
tristate
prompt "Enable -z relro in ELF linker by default" if BINUTILS_2_27_or_later
default m
help
Setting this option forces "-z relro" by default in the ELF linker.
Clearing this option forces "-z norelro" by default in the ELF linker.
Setting this option to 'M' configures binutils with their internal
default for the selected architecture.
config BINUTILS_EXTRA_CONFIG_ARRAY
string
prompt "binutils extra config"

View File

@ -0,0 +1,6 @@
# Kernel.org's device tree compiler
## default y if !CONFIGURE_has_dtc && ARCH_MOXIE
config DTC_VERBOSE
bool "Verbose DTC build output"

View File

@ -9,12 +9,6 @@ config CONFIGURE_has_wget
config CONFIGURE_has_curl
@KCONFIG_curl@
config CONFIGURE_has_stat_flavor_BSD
@KCONFIG_stat_flavor_BSD@
config CONFIGURE_has_stat_flavor_GNU
@KCONFIG_stat_flavor_GNU@
config CONFIGURE_has_make_3_81_or_newer
@KCONFIG_make_3_81_or_newer@
@ -36,6 +30,9 @@ config CONFIGURE_has_automake_1_15_or_newer
config CONFIGURE_has_gnu_m4_1_4_12_or_newer
@KCONFIG_gnu_m4_1_4_12_or_newer@
config CONFIGURE_has_dtc
@KCONFIG_dtc@
config CONFIGURE_has_cvs
@KCONFIG_cvs@

View File

@ -1,6 +1,6 @@
# Linux kernel options
## depends on ! ARCH_AVR
## depends on !ARCH_AVR && !ARCH_MSP430 && !ARCH_MOXIE
## select KERNEL_SUPPORTS_SHARED_LIBS
## help Build a toolchain targeting systems running Linux as a kernel.

View File

@ -1,9 +1,13 @@
# avr-libc options
# Do not canonicalize the target tuple: avr-libc requires a non-canonical "avr" target.
#
## depends on ARCH_AVR
## depends on ! LINUX && ! WINDOWS && BARE_METAL
## depends on BARE_METAL
##
## select LIBC_SUPPORT_THREADS_NONE
## select OMIT_TARGET_VENDOR
## select TARGET_SKIP_CONFIG_SUB
##
## help The AVR Libc package provides a subset of the standard C library for
## help Atmel AVR 8-bit RISC microcontrollers. In addition, the library

View File

@ -42,6 +42,10 @@ config GLIBC_DEP_GCC
config THREADS
default "nptl"
config GLIBC_BUILD_SSP
def_bool y
depends on GLIBC_2_25_or_later
# Known add-ons and when they exist(ed)
# crypt external in 2.1, no longer an add-on since 2.2
# libidn external in 2.3.4 .. 2.10, still an add-on
@ -320,6 +324,45 @@ config GLIBC_MIN_KERNEL
default LINUX_VERSION if GLIBC_KERNEL_VERSION_AS_HEADERS
default GLIBC_MIN_KERNEL_VERSION if GLIBC_KERNEL_VERSION_CHOSEN
if GLIBC_BUILD_SSP
choice
bool "Stack-smashing protection (SSP) in glibc"
default GLIBC_SSP_DEFAULT
config GLIBC_SSP_DEFAULT
bool "default"
help
Glibc's configure script determines the stack protection level.
config GLIBC_SSP_NO
bool "no"
help
Glibc functions are not protected against stack-smashing.
config GLIBC_SSP_YES
bool "yes"
help
Glibc is compiled with -fstack-protector option.
config GLIBC_SSP_ALL
bool "all"
help
Glibc is compiled with -fstack-protector-all option.
config GLIBC_SSP_STRONG
bool "strong"
help
Glibc is compiled with -fstack-protector-strong option.
endchoice
config GLIBC_SSP
string
default "no" if GLIBC_SSP_NO
default "yes" if GLIBC_SSP_YES
default "all" if GLIBC_SSP_ALL
default "strong" if GLIBC_SSP_STRONG
# All supported versions of glibc build cleanly with GCC7 and earlier.
# GCC8-related fixes were only available in glibc 2.27.
config GLIBC_ENABLE_WERROR
@ -332,4 +375,6 @@ config GLIBC_ENABLE_WERROR
of the compiler than there were available at the time of a glibc
release (because newer compilers typically have better diagnostics).
endif
endif # KERNEL_LINUX

View File

@ -5,6 +5,7 @@
## select LIBC_SUPPORT_THREADS_NATIVE
## select LIBC_SUPPORT_THREADS_POSIX
## select CC_CORE_PASS_2_NEEDED
## select BINUTILS_FORCE_LD_BFD_DEFAULT
##
## help The de-facto standard for Mingw distributions.

View File

@ -0,0 +1,27 @@
# moxiebox options
# Moxie is distributed in non-bootstrapped form, so we really need
# autoconfig and automake.
## depends on ARCH_MOXIE
## depends on ARCH_LE
## depends on BARE_METAL
## select LIBC_NEWLIB_SHOW
## select LIBC_SUPPORT_THREADS_NONE
## select COMP_TOOLS_AUTOCONF if !CONFIGURE_has_autoconf_2_65_or_newer || !CONFIGURE_has_autoreconf_2_64_or_newer
## select COMP_TOOLS_AUTOMAKE if !CONFIGURE_has_automake_1_15_or_newer
## select CC_CORE_PASSES_NEEDED if CANADIAN
## select CC_CORE_PASS_2_NEEDED if ! CANADIAN
## select LIBELF_NEEDED
##
## help Secure execution runtime for Moxie architecture.
config MOXIEBOX_SHORT_TUPLE
bool "Use 'moxiebox-' as target tuple"
select OMIT_TARGET_ARCH
select OMIT_TARGET_VENDOR
select TARGET_SKIP_CONFIG_SUB
help
Moxiebox refers to the tools configured for 'moxie-unknown-moxiebox-' by
a short, 'moxiebox-' prefix. Though non-canonical, it seems to be officially
endorsed.

View File

@ -214,6 +214,23 @@ config LIBC_UCLIBC_RPC
help
Enable support for remote procedure calls (RPC) in uClibc.
config LIBC_UCLIBC_HAS_SSP
bool
prompt "Support stack smashing protection (SSP)"
default y
help
Enable support for building programs with -fstack-protector family
of options. If this option is disabled, one can also use a standalone
libssp library from GCC.
config LIBC_UCLIBC_BUILD_SSP
bool
prompt "Build uClibc with SSP"
depends on LIBC_UCLIBC_HAS_SSP
help
Build uClibc with -fstack-protector. This adds runtime overhead
to many function calls and is disabled by default.
if ARCH_ARM
config LIBC_UCLIBC_USE_GNU_SUFFIX
bool

View File

@ -19,6 +19,21 @@ config ARCH_SUFFIX
If you are not sure about what this is, leave it blank.
config OMIT_TARGET_ARCH
bool
help
Do not include architecture into the target tuple.
config OMIT_TARGET_VENDOR
bool "Omit vendor part of the target tuple"
help
Do not include vendor into the target tuple.
config TARGET_SKIP_CONFIG_SUB
bool
help
Skip canonicalization of the target tuple.
#--------------------------------------
comment "Generic target options"
@ -92,6 +107,10 @@ config ARCH_USE_MMU
lacks an MMU (eg. ARM Cortex-M3), while other variants
have one (eg. ARM Cortex-A8).
#--------------------------------------
config ARCH_SUPPORTS_FLAT_FORMAT
bool
#--------------------------------------
config ARCH_SUPPORTS_EITHER_ENDIAN
bool
@ -138,10 +157,12 @@ config ARCH_LE
config ARCH_BE_LE
bool
prompt "Both, default big endian"
depends on ARCH_SUPPORTS_BOTH_ENDIAN
config ARCH_LE_BE
bool
prompt "Both, default little endian"
depends on ARCH_SUPPORTS_BOTH_ENDIAN
endchoice
@ -264,7 +285,9 @@ config ARCH_ARCH
target CPU.
Leave blank if you don't know, or if your target architecture does not
offer this option.
offer this option. Must be specified for 32-bit x86 that uses some
C library (glibc, uClibc-ng, ...) - the default, "i386" is not supported
by these libraries.
config ARCH_ABI
string

View File

@ -121,7 +121,7 @@ comment "Tuple completion and aliasing"
config TARGET_VENDOR
string
prompt "Tuple's vendor string"
depends on !LIBC_AVR_LIBC
depends on !OMIT_TARGET_VENDOR
default "unknown"
help
Vendor part of the target tuple.
@ -190,14 +190,14 @@ config NATIVE
depends on EXPERIMENTAL
help
Build a native toolchain.
See: "docs/6 - Toolchain types.txt"
See: "docs/6_Toolchain_Types.md"
config CROSS
bool
prompt "Cross"
help
Build a cross-toolchain.
See: "docs/6 - Toolchain types.txt"
See: "docs/6_Toolchain_Types.md"
config CROSS_NATIVE
bool
@ -205,14 +205,14 @@ config CROSS_NATIVE
depends on EXPERIMENTAL
help
Build a cross-native toolchain.
See: "docs/6 - Toolchain types.txt"
See: "docs/6_Toolchain_Types.md"
config CANADIAN
bool
prompt "Canadian"
help
Build a canadian-toolchain.
See: "docs/6 - Toolchain types.txt"
See: "docs/6_Toolchain_Types.md"
endchoice

View File

@ -153,8 +153,6 @@ AC_CHECK_PROGS([curl], [curl])
CTNG_SET_KCONFIG_OPTION([curl])
AC_SUBST([curl])
CTNG_PROG_STAT
CTNG_CPU_COUNT
CTNG_PATH_TOOL_REQ([PATCH], [gpatch patch], [patch])
@ -232,6 +230,9 @@ CTNG_PROG_VERSION([M4],
AC_SUBST([kconfig_options])
AC_CHECK_PROGS([dtc], [dtc])
CTNG_SET_KCONFIG_OPTION([dtc])
AC_CHECK_PROGS([cvs], [cvs])
CTNG_SET_KCONFIG_OPTION([cvs])

View File

@ -254,7 +254,7 @@ CT_STEPS := \
kernel_headers \
libc_start_files \
cc_core_pass_2 \
libc \
libc_main \
cc_for_build \
cc_for_host \
libc_post_cc \

View File

@ -1,35 +0,0 @@
# Check that stat(1) is present and determine the syntax for the format
# string (BSD or GNU). Defines ac_cv_stat_flavor to either GNU or BSD;
# and evaluates either IF-GNU or IF-BSD expression.
# CTNG_PROG_STAT([IF-GNU], [IF-BSD])
AC_DEFUN([CTNG_PROG_STAT_FORMAT],
[AC_CACHE_CHECK([whether stat takes GNU or BSD format],
[ctng_cv_stat_flavor],
[touch conftest
chmod 642 conftest
attr_bsd=$(stat -f '%Lp' conftest 2>conftest.stderr.bsd)
CTNG_MSG_LOG_ENVVAR([attr_bsd], [stat -f output])
CTNG_MSG_LOG_FILE([conftest.stderr.bsd])
attr_gnu=$(stat -c '%a' conftest 2>conftest.stderr.gnu)
CTNG_MSG_LOG_ENVVAR([attr_gnu], [stat -c output])
CTNG_MSG_LOG_FILE([conftest.stderr.gnu])
rm -f conftest conftest.stderr.*
AS_IF([test "$attr_bsd" = "642"],
[ctng_cv_stat_flavor=BSD],
[test "$attr_gnu" = "642"],
[ctng_cv_stat_flavor=GNU],
[ctng_cv_stat_flavor=unknown])])
AS_IF([test "$ctng_cv_stat_flavor" = "GNU" ], [$1],
[test "$ctng_cv_stat_flavor" = "BSD" ], [$2],
[AC_MSG_ERROR([cannot determine stat(1) format option])])
])
AC_DEFUN([CTNG_PROG_STAT],
[AX_REQUIRE_DEFINED([CTNG_CHECK_PROGS_REQ])
CTNG_CHECK_PROGS_REQ([stat], [stat])
CTNG_PROG_STAT_FORMAT(
[CTNG_SET_KCONFIG_OPTION([stat_flavor_GNU], [y])
CTNG_SET_KCONFIG_OPTION([stat_flavor_BSD])],
[CTNG_SET_KCONFIG_OPTION([stat_flavor_BSD], [y])
CTNG_SET_KCONFIG_OPTION([stat_flavor_GNU])])
])

View File

@ -8,6 +8,7 @@ if [ -z "${topdir}" ]; then
do_abort "Not in the Git clone"
fi
cd "${topdir}"
git clean -fxdq
./bootstrap
./configure --enable-local
make dist-create-release

View File

@ -155,8 +155,8 @@ then
# directory, and "git describe" output looks sensible, use that to
# derive a version string.
elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
&& v=`git describe --abbrev=4 --match="$prefix*" HEAD 2>/dev/null \
|| git describe --abbrev=4 HEAD 2>/dev/null` \
&& v=`git describe --abbrev=7 --match="$prefix*" HEAD 2>/dev/null \
|| git describe --abbrev=7 HEAD 2>/dev/null` \
&& v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
&& case $v in
$prefix[0-9]*) ;;

View File

@ -32,7 +32,12 @@ config @@dir|@@_CHOICE_KSYM
#!end-foreach
#!foreach choice
if @@dir|@@_@@choice|@@
config @@dir|@@_@@choice|@@_SHOW
bool
default y if @@dir|@@_@@choice|@@
if @@dir|@@_@@choice|@@_SHOW
comment "Options for @@choice@@"
config @@dir|@@_@@choice|@@_PKG_KSYM
string
default "@@pkg|@@"
@ -44,3 +49,7 @@ source "config/@@dir@@/@@choice@@.in"
endif
#!end-foreach
config ALL_@@dir|@@_CHOICES
string
default "@@*choice|@@"

View File

@ -25,3 +25,7 @@ source "config/@@dir@@/@@choice@@.in"
endif
#!end-foreach
config ALL_@@dir|@@_CHOICES
string
default "@@*choice|@@"

View File

@ -1,6 +1,6 @@
repository='git git://sourceware.org/git/binutils-gdb.git'
mirrors='$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)'
origin='GNU'
milestones='2.23 2.25 2.30'
milestones='2.23 2.25 2.27 2.30'
archive_formats='.tar.xz .tar.bz2 .tar.gz'
signature_format='packed/.sig'

8
toolchain/packages/dtc/1.4.7/chksum vendored Normal file
View File

@ -0,0 +1,8 @@
md5 dtc-1.4.7.tar.xz cdf3bfae59374fdcd2bbc5ae4f0e835e
sha1 dtc-1.4.7.tar.xz f9724c51caae4fef4da0c8a5d52e9d4d9fc7e8af
sha256 dtc-1.4.7.tar.xz 6643e8f00ff86350f465bb54b2185058b5b1b7bac01a0842c81a52b86589cde7
sha512 dtc-1.4.7.tar.xz 01e0c88aee154d8ce8a5b84a299c98d12df9698e5eff572409e5e912236028532309fd21ca6a146dffef859c665d476bbbe13c371c621c1dee4abe546e5e6ebf
md5 dtc-1.4.7.tar.gz d51a50202d323fdafd0778f53e861cdd
sha1 dtc-1.4.7.tar.gz 1de4ad95e08efd6d04dae5f1a71ce18f26565bba
sha256 dtc-1.4.7.tar.gz 9f4ee98d402b55b4afd79a4bcfce52f891b160d16c0f46d9aee3c0f7e034516d
sha512 dtc-1.4.7.tar.gz d58855746d9d05f19b2cc091438901acf2dc8cb2b24191de6292abffadfd1fa62a32ea82c300cde51ce30ca5facb0553bed42741a41bc4f4c20c1b9221bdd164

View File

@ -0,0 +1,4 @@
repository='git git://git.kernel.org/pub/scm/utils/dtc/dtc.git'
mirrors='$(CT_Mirrors kernel.org dtc)'
archive_formats='.tar.xz .tar.gz'
signature_format='unpacked/.sign'

View File

@ -1,28 +0,0 @@
libgcc: xtensa: fix build with -mtext-section-literals
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
libgcc/config/xtensa/ieee754-df.S | 1 +
libgcc/config/xtensa/ieee754-sf.S | 1 +
2 files changed, 2 insertions(+)
--- a/libgcc/config/xtensa/ieee754-sf.S
+++ b/libgcc/config/xtensa/ieee754-sf.S
@@ -55,6 +55,7 @@
#ifdef L_addsubsf3
+ .literal_position
/* Addition */
__addsf3_aux:
--- a/libgcc/config/xtensa/ieee754-df.S
+++ b/libgcc/config/xtensa/ieee754-df.S
@@ -55,6 +55,7 @@
#ifdef L_addsubdf3
+ .literal_position
/* Addition */
__adddf3_aux:

View File

@ -1,98 +0,0 @@
commit dff73565df46267296c9bee0589e1f106a07a5e2
Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Wed Feb 14 07:21:11 2018 +0000
2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com>
PR target/79242
* machmode.def: Define a complex mode for PARTIAL_INT.
* genmodes.c (complex_class): Return MODE_COMPLEX_INT for
MODE_PARTIAL_INT.
* doc/rtl.texi: Document CSPImode.
* config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
handling.
(msp430_hard_regno_nregs_with_padding): Likewise.
PR target/79242
* gcc.target/msp430/pr79242.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257653 138bc75d-0d04-0410-961f-82ee72b054a4
---
gcc/config/msp430/msp430.c | 4 ++++
gcc/doc/rtl.texi | 5 +++--
gcc/genmodes.c | 1 +
gcc/machmode.def | 1 +
gcc/testsuite/gcc.target/msp430/pr79242.c | 11 +++++++++++
5 files changed, 20 insertions(+), 2 deletions(-)
--- a/gcc/config/msp430/msp430.c
+++ b/gcc/config/msp430/msp430.c
@@ -916,6 +916,8 @@
{
if (mode == PSImode && msp430x)
return 1;
+ if (mode == CPSImode && msp430x)
+ return 2;
return ((GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1)
/ UNITS_PER_WORD);
}
@@ -927,6 +929,8 @@
{
if (mode == PSImode)
return 2;
+ if (mode == CPSImode)
+ return 4;
return msp430_hard_regno_nregs (regno, mode);
}
--- a/gcc/doc/rtl.texi
+++ b/gcc/doc/rtl.texi
@@ -1291,10 +1291,11 @@
@findex CDImode
@findex CTImode
@findex COImode
-@item CQImode, CHImode, CSImode, CDImode, CTImode, COImode
+@findex CPSImode
+@item CQImode, CHImode, CSImode, CDImode, CTImode, COImode, CPSImode
These modes stand for a complex number represented as a pair of integer
values. The integer values are in @code{QImode}, @code{HImode},
-@code{SImode}, @code{DImode}, @code{TImode}, and @code{OImode},
+@code{SImode}, @code{DImode}, @code{TImode}, @code{OImode}, and @code{PSImode},
respectively.
@findex BND32mode
--- a/gcc/genmodes.c
+++ b/gcc/genmodes.c
@@ -116,6 +116,7 @@
switch (c)
{
case MODE_INT: return MODE_COMPLEX_INT;
+ case MODE_PARTIAL_INT: return MODE_COMPLEX_INT;
case MODE_FLOAT: return MODE_COMPLEX_FLOAT;
default:
error ("no complex class for class %s", mode_class_names[c]);
--- a/gcc/machmode.def
+++ b/gcc/machmode.def
@@ -243,6 +243,7 @@
/* Complex modes. */
COMPLEX_MODES (INT);
+COMPLEX_MODES (PARTIAL_INT);
COMPLEX_MODES (FLOAT);
/* Decimal floating point modes. */
--- /dev/null
+++ b/gcc/testsuite/gcc.target/msp430/pr79242.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { "*-*-*" } { "-mcpu=msp430" "-msmall" } { "" } } */
+/* { dg-options "-mcpu=msp430x" } */
+
+typedef _Complex __int20 C;
+
+C
+foo (C x, C y)
+{
+ return x + y;
+}

View File

@ -1,96 +0,0 @@
From 213fda1983bc80fbcc738ecd841a60a078f52111 Mon Sep 17 00:00:00 2001
From: jcmvbkbc <jcmvbkbc@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Tue, 19 Jun 2018 18:26:07 +0000
Subject: [PATCH] xtensa: fix PR target/65416
The issue is caused by reordering of stack pointer update after stack
space allocation with instructions that write to the allocated stack
space. In windowed ABI register spill area for the previous call frame
is located just below the stack pointer and may be reloaded back into
the register file on movsp.
Implement allocate_stack pattern for windowed ABI configuration and
insert an instruction that prevents reordering of frame memory access
and stack pointer update.
gcc/
2018-06-19 Max Filippov <jcmvbkbc@gmail.com>
* config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec
constant.
(allocate_stack, frame_blockage, *frame_blockage): New patterns.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@261755 138bc75d-0d04-0410-961f-82ee72b054a4
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
gcc/config/xtensa/xtensa.md | 46 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
--- a/gcc/config/xtensa/xtensa.md
+++ b/gcc/config/xtensa/xtensa.md
@@ -38,6 +38,7 @@
(UNSPEC_MEMW 11)
(UNSPEC_LSETUP_START 12)
(UNSPEC_LSETUP_END 13)
+ (UNSPEC_FRAME_BLOCKAGE 14)
(UNSPECV_SET_FP 1)
(UNSPECV_ENTRY 2)
@@ -1676,6 +1677,32 @@
;; Miscellaneous instructions.
+;; In windowed ABI stack pointer adjustment must happen before any access
+;; to the space allocated on stack is allowed, otherwise register spill
+;; area may be clobbered. That's what frame blockage is supposed to enforce.
+
+(define_expand "allocate_stack"
+ [(set (match_operand 0 "nonimmed_operand")
+ (minus (reg A1_REG) (match_operand 1 "add_operand")))
+ (set (reg A1_REG)
+ (minus (reg A1_REG) (match_dup 1)))]
+ "TARGET_WINDOWED_ABI"
+{
+ if (CONST_INT_P (operands[1]))
+ {
+ rtx neg_op0 = GEN_INT (-INTVAL (operands[1]));
+ emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, neg_op0));
+ }
+ else
+ {
+ emit_insn (gen_subsi3 (stack_pointer_rtx, stack_pointer_rtx,
+ operands[1]));
+ }
+ emit_move_insn (operands[0], virtual_stack_dynamic_rtx);
+ emit_insn (gen_frame_blockage ());
+ DONE;
+})
+
(define_expand "prologue"
[(const_int 0)]
""
@@ -1767,6 +1794,25 @@
[(set_attr "length" "0")
(set_attr "type" "nop")])
+;; Do not schedule instructions accessing memory before this point.
+
+(define_expand "frame_blockage"
+ [(set (match_dup 0)
+ (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))]
+ ""
+{
+ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
+ MEM_VOLATILE_P (operands[0]) = 1;
+ operands[1] = stack_pointer_rtx;
+})
+
+(define_insn "*frame_blockage"
+ [(set (match_operand:BLK 0 "" "")
+ (unspec:BLK [(match_operand:SI 1 "" "")] UNSPEC_FRAME_BLOCKAGE))]
+ ""
+ ""
+ [(set_attr "length" "0")])
+
(define_insn "trap"
[(trap_if (const_int 1) (const_int 0))]
""

View File

@ -1,8 +0,0 @@
md5 gcc-7.3.0.tar.xz be2da21680f27624f3a87055c4ba5af2
sha1 gcc-7.3.0.tar.xz 9689b9cae7b2886fdaa08449a26701f095c04e48
sha256 gcc-7.3.0.tar.xz 832ca6ae04636adbb430e865a1451adf6979ab44ca1c8374f61fba65645ce15c
sha512 gcc-7.3.0.tar.xz ad41a7e4584e40e92cdf860bc0288500fbaf5dfb7e8c3fcabe9eba809c87bcfa85b46c19c19921b0cdf6d05483faede8287bb9ea120c0d1559449a70e602c8d4
md5 gcc-7.3.0.tar.gz 747d5010b7c6938b480bc6e4d7c4be9a
sha1 gcc-7.3.0.tar.gz 8f11c52db81c30a1780c590bb7ab9a6e326ccea4
sha256 gcc-7.3.0.tar.gz fa06e455ca198ddc11ea4ddf2a394cf7cfb66aa7e0ab98cc1184189f1d405870
sha512 gcc-7.3.0.tar.gz 4e203f4ea5e8713e7b0e3d2a269f7a54f6d1074d572b93d39ed6961c82b3c310f389d7f78494f58309b7436d1e0744eba06c22a24747000dfd84e2b4376cbf73

View File

@ -53,7 +53,7 @@
if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
--- a/gcc/configure
+++ b/gcc/configure
@@ -29510,6 +29510,9 @@
@@ -29520,6 +29520,9 @@
pluginlibs=
@ -63,7 +63,7 @@
case "${host}" in
*-*-darwin*)
if test x$build = x$host; then
@@ -29520,6 +29523,11 @@
@@ -29530,6 +29533,11 @@
export_sym_check=
fi
;;
@ -75,7 +75,7 @@
*)
if test x$build = x$host; then
export_sym_check="objdump${exeext} -T"
@@ -29632,23 +29640,23 @@
@@ -29642,23 +29650,23 @@
case "${host}" in
*-*-darwin*)
CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`

View File

@ -9,6 +9,6 @@
#include "unix.h"
#include <limits.h>
+#include <stdlib.h>
typedef enum
{ CLOSE_DELETE, CLOSE_KEEP, CLOSE_UNSPECIFIED }
#if !HAVE_UNLINK_OPEN_FILE
#include <string.h>
#endif

View File

@ -52,7 +52,7 @@ Date: Wed Jul 29 11:28:29 2015 +0300
esac
aarch64_multilibs="${with_multilib_list}"
if test "$aarch64_multilibs" = "default"; then
@@ -2092,6 +2096,17 @@
@@ -2094,6 +2098,17 @@
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h"
extra_options="${extra_options} linux-android.opt"
case ${target} in
@ -152,7 +152,7 @@ Date: Wed Jul 29 11:28:29 2015 +0300
#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -1876,10 +1876,11 @@
@@ -1879,10 +1879,11 @@
#define CASE_VECTOR_PC_RELATIVE (TARGET_THUMB2 \
|| (TARGET_THUMB1 \
@ -167,7 +167,7 @@ Date: Wed Jul 29 11:28:29 2015 +0300
: min >= -256 && max < 256 \
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -8668,7 +8668,7 @@
@@ -8665,7 +8665,7 @@
(match_operand:SI 2 "const_int_operand" "") ; total range
(match_operand:SI 3 "" "") ; table label
(match_operand:SI 4 "" "")] ; Out of range label
@ -253,8 +253,8 @@ Date: Wed Jul 29 11:28:29 2015 +0300
+
#undef ASM_SPEC
#define ASM_SPEC \
- "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
+ "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}} " \
- "--32 %{msse2avx:%{!mavx:-msse2avx}}"
+ "--32 %{msse2avx:%{!mavx:-msse2avx}} " \
+ LINUX_OR_ANDROID_CC ("", ANDROID_ASM_SPEC)
#undef SUBTARGET_EXTRA_SPECS
@ -445,7 +445,7 @@ Date: Wed Jul 29 11:28:29 2015 +0300
#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -78536,6 +78536,12 @@
@@ -78577,6 +78577,12 @@
/* end confdefs.h. */
#include <sys/syscall.h>
int lk;
@ -458,7 +458,7 @@ Date: Wed Jul 29 11:28:29 2015 +0300
int
main ()
{
@@ -78594,6 +78600,12 @@
@@ -78635,6 +78641,12 @@
/* end confdefs.h. */
#include <sys/syscall.h>
int lk;

View File

@ -145,7 +145,7 @@ Date: Mon Apr 14 15:59:47 2014 -0700
--enable-linker-build-id
compiler will always pass --build-id to linker
--enable-default-ssp enable Stack Smashing Protection as default
@@ -28082,6 +28086,38 @@
@@ -28092,6 +28096,38 @@
$as_echo "#define HAVE_LD_EH_FRAME_HDR 1" >>confdefs.h
@ -186,7 +186,7 @@ Date: Mon Apr 14 15:59:47 2014 -0700
$as_echo "$gcc_cv_ld_eh_frame_hdr" >&6; }
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -4986,6 +4986,35 @@
@@ -4994,6 +4994,35 @@
if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
[Define if your linker supports .eh_frame_hdr.])

View File

@ -12,7 +12,7 @@ Date: Thu Aug 20 19:11:07 2015 +0300
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -16113,6 +16113,7 @@
@@ -16116,6 +16116,7 @@
else if (!SYMBOL_REF_FAR_ADDR_P (op0)
&& (SYMBOL_REF_LOCAL_P (op0)
|| (HAVE_LD_PIE_COPYRELOC

View File

@ -15,7 +15,7 @@ Date: Mon Apr 14 21:05:51 2014 -0700
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -22292,9 +22292,13 @@
@@ -22312,9 +22312,13 @@
memsize = MEM_SIZE (x);
/* Only certain alignment specifiers are supported by the hardware. */

View File

@ -0,0 +1,77 @@
commit 31285a20390a5e53a74a2a71d1b5c82f366ddd5a
Author: Felix Fietkau <nbd@openwrt.org>
Date: Tue May 6 11:49:05 2014 +0000
gcc: revert an upstream patch that is causing a regression on powerpc
https://forum.openwrt.org/viewtopic.php?pid=232494#p232494
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 40709
Revert of:
commit 275035b56823b26d5fb7e90fad945b998648edf2
Author: bergner <bergner@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Thu Sep 5 14:09:07 2013 +0000
PR target/58139
* reginfo.c (choose_hard_reg_mode): Scan through all mode classes
looking for widest mode.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@202286 138bc75d-0d04-0410-961f-82ee72b054a4
--- a/gcc/reginfo.c
+++ b/gcc/reginfo.c
@@ -637,35 +637,40 @@ choose_hard_reg_mode (unsigned int regno
mode = GET_MODE_WIDER_MODE (mode))
if ((unsigned) hard_regno_nregs[regno][mode] == nregs
&& HARD_REGNO_MODE_OK (regno, mode)
- && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))
- && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode))
+ && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)))
found_mode = mode;
+ if (found_mode != VOIDmode)
+ return found_mode;
+
for (mode = GET_CLASS_NARROWEST_MODE (MODE_FLOAT);
mode != VOIDmode;
mode = GET_MODE_WIDER_MODE (mode))
if ((unsigned) hard_regno_nregs[regno][mode] == nregs
&& HARD_REGNO_MODE_OK (regno, mode)
- && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))
- && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode))
+ && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)))
found_mode = mode;
+ if (found_mode != VOIDmode)
+ return found_mode;
+
for (mode = GET_CLASS_NARROWEST_MODE (MODE_VECTOR_FLOAT);
mode != VOIDmode;
mode = GET_MODE_WIDER_MODE (mode))
if ((unsigned) hard_regno_nregs[regno][mode] == nregs
&& HARD_REGNO_MODE_OK (regno, mode)
- && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))
- && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode))
+ && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)))
found_mode = mode;
+ if (found_mode != VOIDmode)
+ return found_mode;
+
for (mode = GET_CLASS_NARROWEST_MODE (MODE_VECTOR_INT);
mode != VOIDmode;
mode = GET_MODE_WIDER_MODE (mode))
if ((unsigned) hard_regno_nregs[regno][mode] == nregs
&& HARD_REGNO_MODE_OK (regno, mode)
- && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))
- && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode))
+ && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)))
found_mode = mode;
if (found_mode != VOIDmode)

View File

@ -0,0 +1,24 @@
commit 81cc26c706b2bc8c8c1eb1a322e5c5157900836e
Author: Felix Fietkau <nbd@openwrt.org>
Date: Sun Oct 19 21:45:51 2014 +0000
gcc: do not assume that the Mac OS X filesystem is case insensitive
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 42973
--- a/include/filenames.h
+++ b/include/filenames.h
@@ -43,11 +43,6 @@ extern "C" {
# define IS_DIR_SEPARATOR(c) IS_DOS_DIR_SEPARATOR (c)
# define IS_ABSOLUTE_PATH(f) IS_DOS_ABSOLUTE_PATH (f)
#else /* not DOSish */
-# if defined(__APPLE__)
-# ifndef HAVE_CASE_INSENSITIVE_FILE_SYSTEM
-# define HAVE_CASE_INSENSITIVE_FILE_SYSTEM 1
-# endif
-# endif /* __APPLE__ */
# define HAS_DRIVE_SPEC(f) (0)
# define IS_DIR_SEPARATOR(c) IS_UNIX_DIR_SEPARATOR (c)
# define IS_ABSOLUTE_PATH(f) IS_UNIX_ABSOLUTE_PATH (f)

View File

@ -0,0 +1,35 @@
commit 098bd91f5eae625c7d2ee621e10930fc4434e5e2
Author: Luka Perkov <luka@openwrt.org>
Date: Tue Feb 26 16:16:33 2013 +0000
gcc: don't build documentation
This closes #13039.
Signed-off-by: Luka Perkov <luka@openwrt.org>
SVN-Revision: 35807
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -3121,18 +3121,10 @@ doc/gcc.info: $(TEXI_GCC_FILES)
doc/gccint.info: $(TEXI_GCCINT_FILES)
doc/cppinternals.info: $(TEXI_CPPINT_FILES)
-doc/%.info: %.texi
- if [ x$(BUILD_INFO) = xinfo ]; then \
- $(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(gcc_docdir) \
- -I $(gcc_docdir)/include -o $@ $<; \
- fi
+doc/%.info:
# Duplicate entry to handle renaming of gccinstall.info
-doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES)
- if [ x$(BUILD_INFO) = xinfo ]; then \
- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \
- -I $(gcc_docdir)/include -o $@ $<; \
- fi
+doc/gccinstall.info:
doc/cpp.dvi: $(TEXI_CPP_FILES)
doc/gcc.dvi: $(TEXI_GCC_FILES)

View File

@ -0,0 +1,20 @@
Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84790.
MIPS16 functions have a static assembler prologue which clobbers
registers v0 and v1. Add these register clobbers to function call
instructions.
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -3098,6 +3098,12 @@ mips_emit_call_insn (rtx pattern, rtx or
emit_insn (gen_update_got_version ());
}
+ if (TARGET_MIPS16 && TARGET_USE_GOT)
+ {
+ clobber_reg (&CALL_INSN_FUNCTION_USAGE (insn), MIPS16_PIC_TEMP);
+ clobber_reg (&CALL_INSN_FUNCTION_USAGE (insn), MIPS_PROLOGUE_TEMP (word_mode));
+ }
+
if (TARGET_MIPS16
&& TARGET_EXPLICIT_RELOCS
&& TARGET_CALL_CLOBBERED_GP)

View File

@ -0,0 +1,28 @@
commit 1877bc9d8f2be143fbe530347a945850d0ecd234
Author: Steven Barth <cyrus@openwrt.org>
Date: Mon Jun 22 10:31:07 2015 +0000
gcc/musl: rework SSP-support
Make musl provide libssp_nonshared.a and make GCC link it unconditionally
if musl is used. This should be a no-op if SSP is disabled and seems to be
the only reliable way of dealing with SSP over all packages due to the mess
that is linkerflags handling in packages.
Signed-off-by: Steven Barth <steven@midlink.org>
SVN-Revision: 46108
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -861,7 +861,9 @@ proper position among the other output f
#endif
#ifndef LINK_SSP_SPEC
-#ifdef TARGET_LIBC_PROVIDES_SSP
+#if DEFAULT_LIBC == LIBC_MUSL
+#define LINK_SSP_SPEC "-lssp_nonshared"
+#elif defined(TARGET_LIBC_PROVIDES_SSP)
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
"|fstack-protector-strong|fstack-protector-explicit:}"
#else

View File

@ -0,0 +1,21 @@
commit ecf7671b769fe96f7b5134be442089f8bdba55d2
Author: Felix Fietkau <nbd@nbd.name>
Date: Thu Aug 4 20:29:45 2016 +0200
gcc: add a patch to generate better code with Os on mips
Also happens to reduce compressed code size a bit
Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -19790,7 +19790,7 @@ mips_option_override (void)
flag_pcc_struct_return = 0;
/* Decide which rtx_costs structure to use. */
- if (optimize_size)
+ if (0 && optimize_size)
mips_cost = &mips_rtx_cost_optimize_size;
else
mips_cost = &mips_rtx_cost_data[mips_tune];

View File

@ -0,0 +1,32 @@
commit b050f87d13b5dc7ed82feb9a90f4529de58bdf25
Author: Felix Fietkau <nbd@openwrt.org>
Date: Wed Feb 19 19:20:10 2014 +0000
gcc: prevent the use of LDRD/STRD on ARMv5TE
These instructions are for 64-bit load/store. On ARMv5TE, the CPU
requires addresses to be aligned to 64-bit. When misaligned, behavior is
undefined (effectively either loads the same word twice on LDRD, or
corrupts surrounding memory on STRD).
On ARMv6 and newer, unaligned access is safe.
Removing these instructions for ARMv5TE is necessary, because GCC
ignores alignment information in pointers and does unsafe optimizations
that have shown up as bugs in various places.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 39638
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -150,7 +150,7 @@ extern tree arm_fp16_type_node;
/* Thumb-1 only. */
#define TARGET_THUMB1_ONLY (TARGET_THUMB1 && !arm_arch_notm)
-#define TARGET_LDRD (arm_arch5e && ARM_DOUBLEWORD_ALIGN \
+#define TARGET_LDRD (arm_arch6 && ARM_DOUBLEWORD_ALIGN \
&& !TARGET_THUMB1)
#define TARGET_CRC32 (arm_arch_crc)

View File

@ -0,0 +1,44 @@
commit c96312958c0621e72c9b32da5bc224ffe2161384
Author: Felix Fietkau <nbd@openwrt.org>
Date: Mon Oct 19 23:26:09 2009 +0000
gcc: create a proper libgcc_pic.a static library for relinking (4.3.3+ for now, backport will follow)
SVN-Revision: 18086
--- a/libgcc/Makefile.in
+++ b/libgcc/Makefile.in
@@ -920,11 +920,12 @@ $(libgcov-driver-objects): %$(objext): $
# Static libraries.
libgcc.a: $(libgcc-objects)
+libgcc_pic.a: $(libgcc-s-objects)
libgcov.a: $(libgcov-objects)
libunwind.a: $(libunwind-objects)
libgcc_eh.a: $(libgcc-eh-objects)
-libgcc.a libgcov.a libunwind.a libgcc_eh.a:
+libgcc.a libgcov.a libunwind.a libgcc_eh.a libgcc_pic.a:
-rm -f $@
objects="$(objects)"; \
@@ -945,7 +946,7 @@ all: libunwind.a
endif
ifeq ($(enable_shared),yes)
-all: libgcc_eh.a libgcc_s$(SHLIB_EXT)
+all: libgcc_eh.a libgcc_pic.a libgcc_s$(SHLIB_EXT)
ifneq ($(LIBUNWIND),)
all: libunwind$(SHLIB_EXT)
libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_EXT)
@@ -1151,6 +1152,10 @@ install-shared:
chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
$(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
+ $(INSTALL_DATA) libgcc_pic.a $(mapfile) $(DESTDIR)$(inst_libdir)/
+ chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_pic.a
+ $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_pic.a
+
$(subst @multilib_dir@,$(MULTIDIR),$(subst \
@shlib_base_name@,libgcc_s,$(subst \
@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIB_INSTALL))))

View File

@ -0,0 +1,28 @@
commit 7edc8ca5456d9743dd0075eb3cc5b04f4f24c8cc
Author: Imre Kaloz <kaloz@openwrt.org>
Date: Wed Feb 2 19:34:36 2011 +0000
add armv4 fixup patches
SVN-Revision: 25322
--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -88,10 +88,15 @@
#define MUSL_DYNAMIC_LINKER \
"/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
+/* For armv4 we pass --fix-v4bx to linker to support EABI */
+#undef TARGET_FIX_V4BX_SPEC
+#define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*"\
+ "|march=armv4|mcpu=fa526|mcpu=fa626:--fix-v4bx}"
+
/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
use the GNU/Linux version, not the generic BPABI version. */
#undef LINK_SPEC
-#define LINK_SPEC EABI_LINK_SPEC \
+#define LINK_SPEC EABI_LINK_SPEC TARGET_FIX_V4BX_SPEC \
LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC, \
LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)

View File

@ -0,0 +1,54 @@
commit dcfc40358b5a3cae7320c17f8d1cebd5ad5540cd
Author: Felix Fietkau <nbd@openwrt.org>
Date: Sun Feb 12 20:25:47 2012 +0000
gcc 4.6: port over the missing patch 850-use_shared_libgcc.patch to prevent libgcc crap from leaking into every single binary
SVN-Revision: 30486
--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -126,10 +126,6 @@
"%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} " \
LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
-/* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
- do not use -lfloat. */
-#undef LIBGCC_SPEC
-
/* Clear the instruction cache from `beg' to `end'. This is
implemented in lib1funcs.S, so ensure an error if this definition
is used. */
--- a/gcc/config/linux.h
+++ b/gcc/config/linux.h
@@ -53,6 +53,10 @@ see the files COPYING3 and COPYING.RUNTI
builtin_assert ("system=posix"); \
} while (0)
+#ifndef LIBGCC_SPEC
+#define LIBGCC_SPEC "%{static|static-libgcc:-lgcc}%{!static:%{!static-libgcc:-lgcc_s}}"
+#endif
+
/* Determine which dynamic linker to use depending on whether GLIBC or
uClibc or Bionic or musl is the default C library and whether
-muclibc or -mglibc or -mbionic or -mmusl has been passed to change
--- a/libgcc/mkmap-symver.awk
+++ b/libgcc/mkmap-symver.awk
@@ -136,5 +136,5 @@ function output(lib) {
else if (inherit[lib])
printf("} %s;\n", inherit[lib]);
else
- printf ("\n local:\n\t*;\n};\n");
+ printf ("\n\t*;\n};\n");
}
--- a/gcc/config/rs6000/linux.h
+++ b/gcc/config/rs6000/linux.h
@@ -60,6 +60,9 @@
#undef CPP_OS_DEFAULT_SPEC
#define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)"
+#undef LIBGCC_SPEC
+#define LIBGCC_SPEC "%{!static:%{!static-libgcc:-lgcc_s}} -lgcc"
+
#undef LINK_SHLIB_SPEC
#define LINK_SHLIB_SPEC "%{shared:-shared} %{!shared: %{static:-static}}"

View File

@ -0,0 +1,22 @@
commit 64661de100da1ec1061ef3e5e400285dce115e6b
Author: Felix Fietkau <nbd@openwrt.org>
Date: Sun May 10 13:16:35 2015 +0000
gcc: add some size optimization patches
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 45664
--- a/libgcc/config/t-libunwind
+++ b/libgcc/config/t-libunwind
@@ -2,8 +2,7 @@
HOST_LIBGCC2_CFLAGS += -DUSE_GAS_SYMVER
-LIB2ADDEH = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c \
- $(srcdir)/unwind-compat.c $(srcdir)/unwind-dw2-fde-compat.c
+LIB2ADDEH = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
LIB2ADDEHSTATIC = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
# Override the default value from t-slibgcc-elf-ver and mention -lunwind

View File

@ -0,0 +1,18 @@
commit d8c570a1531035c3e26bcd94741e5f5b9c36b5d9
Author: Felix Fietkau <nbd@openwrt.org>
Date: Mon Mar 5 00:51:01 2012 +0000
gcc: do not emit references to _savegpr_* and _restgpr_* on powerpc, as they are tricky to deal with wrt. libgcc. they cannot be linked dynamically
SVN-Revision: 30814
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -26981,7 +26981,7 @@ rs6000_savres_strategy (rs6000_stack_t *
/* Define cutoff for using out-of-line functions to save registers. */
if (DEFAULT_ABI == ABI_V4 || TARGET_ELF)
{
- if (!optimize_size)
+ if (1)
{
strategy |= SAVE_INLINE_FPRS | REST_INLINE_FPRS;
strategy |= SAVE_INLINE_GPRS | REST_INLINE_GPRS;

View File

@ -0,0 +1,22 @@
commit 565988ab47bd9b96b50608564aee2104aeb4b7ae
Author: Felix Fietkau <nbd@nbd.name>
Date: Tue Dec 13 14:20:49 2016 +0100
gcc: rip out transactional memory related bloat from crtbegin
Slightly improves compression for each executable, saving about 4k from
the default ar71xx rootfs
Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/libgcc/crtstuff.c
+++ b/libgcc/crtstuff.c
@@ -152,7 +152,7 @@ call_ ## FUNC (void) \
#endif
#if !defined(USE_TM_CLONE_REGISTRY) && defined(OBJECT_FORMAT_ELF)
-# define USE_TM_CLONE_REGISTRY 1
+# define USE_TM_CLONE_REGISTRY 0
#endif
/* We do not want to add the weak attribute to the declarations of these

View File

@ -0,0 +1,30 @@
commit 9dc38e48f7a6f88b7ac7bfaced91f53660204e46
Author: Florian Fainelli <florian@openwrt.org>
Date: Fri Apr 5 12:36:06 2013 +0000
toolchain/gcc: .init and .fini need to pick one ISA
The .init and .fini sections are built by concatenating code
fragments. Putting mips16 code in the middle of a mips32 code block
doesn't work. Make gcc built the magic crt stuff in no-mips16 mode.
This is specific to 4.6-linaro but is probably portable to other gcc
flavors. Adding this to the t-libgcc-mips16 makefile fragment is a
hack not suitable for pushing upstream, but there is no mips/t-linux
or mips/t-uclibc and I am not going to touch gcc/configure for two
lines.
Signed-off-by: Jay Carlson <nop@nop.com>
Signed-off-by: Florian Fainelli <florian@openwrt.org>
SVN-Revision: 36200
--- a/libgcc/config/mips/t-mips16
+++ b/libgcc/config/mips/t-mips16
@@ -43,3 +43,6 @@ SYNC_CFLAGS = -mno-mips16
# Version these symbols if building libgcc.so.
SHLIB_MAPFILES += $(srcdir)/config/mips/libgcc-mips16.ver
+
+CRTSTUFF_T_CFLAGS += -mno-mips16
+CRTSTUFF_T_CFLAGS_S += -mno-mips16

View File

@ -0,0 +1,146 @@
commit 99368862e44740ff4fd33760893f04e14f9dbdf1
Author: Felix Fietkau <nbd@openwrt.org>
Date: Tue Jul 31 00:52:27 2007 +0000
Port the mbsd_multi patch from freewrt, which adds -fhonour-copts. This will emit warnings in packages that don't use our target cflags properly
SVN-Revision: 8256
This patch brings over a feature from MirBSD:
* -fhonour-copts
If this option is not given, it's warned (depending
on environment variables). This is to catch errors
of misbuilt packages which override CFLAGS themselves.
This patch was authored by Thorsten Glaser <tg at mirbsd.de>
with copyright assignment to the FSF in effect.
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -108,6 +108,9 @@ static int class_dump_flags;
/* Whether any standard preincluded header has been preincluded. */
static bool done_preinclude;
+/* Check if a port honours COPTS. */
+static int honour_copts = 0;
+
static void handle_OPT_d (const char *);
static void set_std_cxx98 (int);
static void set_std_cxx11 (int);
@@ -456,6 +459,12 @@ c_common_handle_option (size_t scode, co
flag_no_builtin = !value;
break;
+ case OPT_fhonour_copts:
+ if (c_language == clk_c) {
+ honour_copts++;
+ }
+ break;
+
case OPT_fconstant_string_class_:
constant_string_class_name = arg;
break;
@@ -1084,6 +1093,47 @@ c_common_init (void)
return false;
}
+ if (c_language == clk_c) {
+ char *ev = getenv ("GCC_HONOUR_COPTS");
+ int evv;
+ if (ev == NULL)
+ evv = -1;
+ else if ((*ev == '0') || (*ev == '\0'))
+ evv = 0;
+ else if (*ev == '1')
+ evv = 1;
+ else if (*ev == '2')
+ evv = 2;
+ else if (*ev == 's')
+ evv = -1;
+ else {
+ warning (0, "unknown GCC_HONOUR_COPTS value, assuming 1");
+ evv = 1; /* maybe depend this on something like MIRBSD_NATIVE? */
+ }
+ if (evv == 1) {
+ if (honour_copts == 0) {
+ error ("someone does not honour COPTS at all in lenient mode");
+ return false;
+ } else if (honour_copts != 1) {
+ warning (0, "someone does not honour COPTS correctly, passed %d times",
+ honour_copts);
+ }
+ } else if (evv == 2) {
+ if (honour_copts == 0) {
+ error ("someone does not honour COPTS at all in strict mode");
+ return false;
+ } else if (honour_copts != 1) {
+ error ("someone does not honour COPTS correctly, passed %d times",
+ honour_copts);
+ return false;
+ }
+ } else if (evv == 0) {
+ if (honour_copts != 1)
+ inform (0, "someone does not honour COPTS correctly, passed %d times",
+ honour_copts);
+ }
+ }
+
return true;
}
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -1412,6 +1412,9 @@ C++ ObjC++ Optimization Alias(fexception
fhonor-std
C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
+fhonour-copts
+C ObjC C++ ObjC++ RejectNegative
+
fhosted
C ObjC
Assume normal C execution environment.
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -1510,6 +1510,9 @@ fguess-branch-probability
Common Report Var(flag_guess_branch_prob) Optimization
Enable guessing of branch probabilities.
+fhonour-copts
+Common RejectNegative
+
; Nonzero means ignore `#ident' directives. 0 means handle them.
; Generate position-independent code for executables if possible
; On SVR4 targets, it also controls whether or not to emit a
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -1954,6 +1954,9 @@ common_handle_option (struct gcc_options
opts, opts_set, loc, dc);
break;
+ case OPT_fhonour_copts:
+ break;
+
case OPT_Wlarger_than_:
opts->x_larger_than_size = value;
opts->x_warn_larger_than = value != -1;
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -6572,6 +6572,17 @@ This option is only supported for C and
@option{-Wall} and by @option{-Wpedantic}, which can be disabled with
@option{-Wno-pointer-sign}.
+@item -fhonour-copts
+@opindex fhonour-copts
+If @env{GCC_HONOUR_COPTS} is set to 1, abort if this option is not
+given at least once, and warn if it is given more than once.
+If @env{GCC_HONOUR_COPTS} is set to 2, abort if this option is not
+given exactly once.
+If @env{GCC_HONOUR_COPTS} is set to 0 or unset, warn if this option
+is not given exactly once.
+The warning is quelled if @env{GCC_HONOUR_COPTS} is set to @samp{s}.
+This flag and environment variable only affect the C language.
+
@item -Wstack-protector
@opindex Wstack-protector
@opindex Wno-stack-protector

View File

@ -0,0 +1,22 @@
Author: Jo-Philipp Wich <jow@openwrt.org>
Date: Sat Apr 21 03:02:39 2012 +0000
gcc: add patch to make the getenv() spec function nonfatal if requested environment variable is unset
SVN-Revision: 31390
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -9281,8 +9281,10 @@ getenv_spec_function (int argc, const ch
value = varname;
if (!value)
- fatal_error (input_location,
- "environment variable %qs not defined", varname);
+ {
+ warning (input_location, "environment variable %qs not defined", varname);
+ value = "";
+ }
/* We have to escape every character of the environment variable so
they are not interpreted as active spec characters. A

View File

@ -0,0 +1,111 @@
From da45b3fde60095756f5f6030f6012c23a3d34429 Mon Sep 17 00:00:00 2001
From: Andrew McDonnell <bugs@andrewmcdonnell.net>
Date: Fri, 3 Oct 2014 19:09:00 +0930
Subject: Add .note.GNU-stack section
See http://lists.busybox.net/pipermail/uclibc/2014-October/048671.html
Below copied from https://gcc.gnu.org/ml/gcc-patches/2014-09/msg02430.html
Re: [Patch, MIPS] Add .note.GNU-stack section
From: Steve Ellcey <sellcey at mips dot com>
On Wed, 2014-09-10 at 10:15 -0700, Eric Christopher wrote:
>
>
> On Wed, Sep 10, 2014 at 9:27 AM, <pinskia@gmail.com> wrote:
> This works except you did not update the assembly files in
> libgcc or glibc. We (Cavium) have the same patch in our tree
> for a few released versions.
> Mind just checking yours in then Andrew?
> Thanks!
> -eric
I talked to Andrew about what files he changed in GCC and created and
tested this new patch. Andrew also mentioned changing some assembly
files in glibc but I don't see any use of '.section .note.GNU-stack' in
any assembly files in glibc (for any platform) so I wasn't planning on
creating a glibc to add them to mips glibc assembly language files.
OK to check in this patch?
Steve Ellcey
sellcey@mips.com
2014-09-26 Steve Ellcey <sellcey@mips.com>
---
gcc/config/mips/mips.c | 3 +++
libgcc/config/mips/crti.S | 4 ++++
libgcc/config/mips/crtn.S | 3 +++
libgcc/config/mips/mips16.S | 4 ++++
libgcc/config/mips/vr4120-div.S | 4 ++++
5 files changed, 18 insertions(+)
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -22567,6 +22567,9 @@ mips_promote_function_mode (const_tree t
#undef TARGET_CUSTOM_FUNCTION_DESCRIPTORS
#define TARGET_CUSTOM_FUNCTION_DESCRIPTORS 2
+#undef TARGET_ASM_FILE_END
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-mips.h"
--- a/libgcc/config/mips/crti.S
+++ b/libgcc/config/mips/crti.S
@@ -21,6 +21,10 @@ a copy of the GCC Runtime Library Except
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
+
+/* An executable stack is *not* required for these functions. */
+ .section .note.GNU-stack,"",%progbits
+
/* 4 slots for argument spill area. 1 for cpreturn, 1 for stack.
Return spill offset of 40 and 20. Aligned to 16 bytes for n32. */
--- a/libgcc/config/mips/crtn.S
+++ b/libgcc/config/mips/crtn.S
@@ -21,6 +21,9 @@ a copy of the GCC Runtime Library Except
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
+/* An executable stack is *not* required for these functions. */
+ .section .note.GNU-stack,"",%progbits
+
/* 4 slots for argument spill area. 1 for cpreturn, 1 for stack.
Return spill offset of 40 and 20. Aligned to 16 bytes for n32. */
--- a/libgcc/config/mips/mips16.S
+++ b/libgcc/config/mips/mips16.S
@@ -48,6 +48,10 @@ see the files COPYING3 and COPYING.RUNTI
values using the soft-float calling convention, but do the actual
operation using the hard floating point instructions. */
+/* An executable stack is *not* required for these functions. */
+ .section .note.GNU-stack,"",%progbits
+ .previous
+
#if defined _MIPS_SIM && (_MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIO64)
/* This file contains 32-bit assembly code. */
--- a/libgcc/config/mips/vr4120-div.S
+++ b/libgcc/config/mips/vr4120-div.S
@@ -26,6 +26,10 @@ see the files COPYING3 and COPYING.RUNTI
-mfix-vr4120. div and ddiv do not give the correct result when one
of the operands is negative. */
+/* An executable stack is *not* required for these functions. */
+ .section .note.GNU-stack,"",%progbits
+ .previous
+
.set nomips16
#define DIV \

View File

@ -0,0 +1,175 @@
From c0c62fa4256f805389f16ebfc4a60cf789129b50 Mon Sep 17 00:00:00 2001
From: BangLang Huang <banglang.huang@foxmail.com>
Date: Wed, 9 Nov 2016 10:36:49 +0800
Subject: [PATCH] libffi: fix MIPS softfloat build issue
Backported from github.com/libffi/libffi#272
Signed-off-by: BangLang Huang <banglang.huang@foxmail.com>
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
---
libffi/src/mips/n32.S | 17 +++++++++++++++++
libffi/src/mips/o32.S | 17 +++++++++++++++++
2 files changed, 34 insertions(+)
diff --git a/libffi/src/mips/n32.S b/libffi/src/mips/n32.S
index c6985d30a6f..8f25994773c 100644
--- a/libffi/src/mips/n32.S
+++ b/libffi/src/mips/n32.S
@@ -107,6 +107,16 @@ loadregs:
REG_L t6, 3*FFI_SIZEOF_ARG($fp) # load the flags word into t6.
+#ifdef __mips_soft_float
+ REG_L a0, 0*FFI_SIZEOF_ARG(t9)
+ REG_L a1, 1*FFI_SIZEOF_ARG(t9)
+ REG_L a2, 2*FFI_SIZEOF_ARG(t9)
+ REG_L a3, 3*FFI_SIZEOF_ARG(t9)
+ REG_L a4, 4*FFI_SIZEOF_ARG(t9)
+ REG_L a5, 5*FFI_SIZEOF_ARG(t9)
+ REG_L a6, 6*FFI_SIZEOF_ARG(t9)
+ REG_L a7, 7*FFI_SIZEOF_ARG(t9)
+#else
and t4, t6, ((1<<FFI_FLAG_BITS)-1)
REG_L a0, 0*FFI_SIZEOF_ARG(t9)
beqz t4, arg1_next
@@ -193,6 +203,7 @@ arg7_next:
arg8_doublep:
l.d $f19, 7*FFI_SIZEOF_ARG(t9)
arg8_next:
+#endif
callit:
# Load the function pointer
@@ -214,6 +225,7 @@ retint:
b epilogue
retfloat:
+#ifndef __mips_soft_float
bne t6, FFI_TYPE_FLOAT, retdouble
jal t9
REG_L t4, 4*FFI_SIZEOF_ARG($fp)
@@ -272,6 +284,7 @@ retstruct_f_d:
s.s $f0, 0(t4)
s.d $f2, 8(t4)
b epilogue
+#endif
retstruct_d_soft:
bne t6, FFI_TYPE_STRUCT_D_SOFT, retstruct_f_soft
@@ -429,6 +442,7 @@ ffi_closure_N32:
REG_S a6, A6_OFF2($sp)
REG_S a7, A7_OFF2($sp)
+#ifndef __mips_soft_float
# Store all possible float/double registers.
s.d $f12, F12_OFF2($sp)
s.d $f13, F13_OFF2($sp)
@@ -438,6 +452,7 @@ ffi_closure_N32:
s.d $f17, F17_OFF2($sp)
s.d $f18, F18_OFF2($sp)
s.d $f19, F19_OFF2($sp)
+#endif
# Call ffi_closure_mips_inner_N32 to do the real work.
LA t9, ffi_closure_mips_inner_N32
@@ -458,6 +473,7 @@ cls_retint:
b cls_epilogue
cls_retfloat:
+#ifndef __mips_soft_float
bne v0, FFI_TYPE_FLOAT, cls_retdouble
l.s $f0, V0_OFF2($sp)
b cls_epilogue
@@ -500,6 +516,7 @@ cls_retstruct_f_d:
l.s $f0, V0_OFF2($sp)
l.d $f2, V1_OFF2($sp)
b cls_epilogue
+#endif
cls_retstruct_small2:
REG_L v0, V0_OFF2($sp)
diff --git a/libffi/src/mips/o32.S b/libffi/src/mips/o32.S
index eb279813a76..1aff4b14814 100644
--- a/libffi/src/mips/o32.S
+++ b/libffi/src/mips/o32.S
@@ -82,13 +82,16 @@ sixteen:
ADDU $sp, 4 * FFI_SIZEOF_ARG # adjust $sp to new args
+#ifndef __mips_soft_float
bnez t0, pass_d # make it quick for int
+#endif
REG_L a0, 0*FFI_SIZEOF_ARG($sp) # just go ahead and load the
REG_L a1, 1*FFI_SIZEOF_ARG($sp) # four regs.
REG_L a2, 2*FFI_SIZEOF_ARG($sp)
REG_L a3, 3*FFI_SIZEOF_ARG($sp)
b call_it
+#ifndef __mips_soft_float
pass_d:
bne t0, FFI_ARGS_D, pass_f
l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args
@@ -130,6 +133,7 @@ pass_f_d:
# bne t0, FFI_ARGS_F_D, call_it
l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args
l.d $f14, 2*FFI_SIZEOF_ARG($sp) # passing double and float
+#endif
call_it:
# Load the function pointer
@@ -158,14 +162,23 @@ retfloat:
bne t2, FFI_TYPE_FLOAT, retdouble
jalr t9
REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp)
+#ifndef __mips_soft_float
s.s $f0, 0(t0)
+#else
+ REG_S v0, 0(t0)
+#endif
b epilogue
retdouble:
bne t2, FFI_TYPE_DOUBLE, noretval
jalr t9
REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp)
+#ifndef __mips_soft_float
s.d $f0, 0(t0)
+#else
+ REG_S v1, 4(t0)
+ REG_S v0, 0(t0)
+#endif
b epilogue
noretval:
@@ -261,9 +274,11 @@ $LCFI7:
li $13, 1 # FFI_O32
bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT
+#ifndef __mips_soft_float
# Store all possible float/double registers.
s.d $f12, FA_0_0_OFF2($fp)
s.d $f14, FA_1_0_OFF2($fp)
+#endif
1:
# Call ffi_closure_mips_inner_O32 to do the work.
la t9, ffi_closure_mips_inner_O32
@@ -281,6 +296,7 @@ $LCFI7:
li $13, 1 # FFI_O32
bne $16, $13, 1f # Skip fp restore if FFI_O32_SOFT_FLOAT
+#ifndef __mips_soft_float
li $9, FFI_TYPE_FLOAT
l.s $f0, V0_OFF2($fp)
beq $8, $9, closure_done
@@ -288,6 +304,7 @@ $LCFI7:
li $9, FFI_TYPE_DOUBLE
l.d $f0, V0_OFF2($fp)
beq $8, $9, closure_done
+#endif
1:
REG_L $3, V1_OFF2($fp)
REG_L $2, V0_OFF2($fp)
--
2.16.3

View File

@ -0,0 +1,33 @@
commit 548d9a008ff265e9eaa3c7e0e6e301c6bd5645e6
Author: Felix Fietkau <nbd@openwrt.org>
Date: Fri Dec 12 17:01:57 2014 +0000
gcc: don't clobber stamp-bits with a symlink to itself
Several versions of gcc have an issue in libstdc++v3 where the build may
clobber stamp-bits with a link to itself. This doesn't manifest itself
on all systems. On several Ubuntu systems, this doesn't appear to be a
problem, but it is an issue on Fedora 16 systems.
To fix the issue, we'll simply filter out stamp-bits from the symlinks
to be generated.
Note: gcc 4.4.7 is unaffected by this issue, so no fix is necessary
there.
Signed-off-by: John Szakmeister <john@szakmeister.net>
SVN-Revision: 43669
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -1474,7 +1474,7 @@ stamp-bits: ${bits_headers}
@$(STAMP) stamp-bits
stamp-bits-sup: stamp-bits ${bits_sup_headers}
- @-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
+ @-cd ${bits_builddir} && $(LN_S) $(filter-out stamp-bits,$?) . 2>/dev/null
@$(STAMP) stamp-bits-sup
stamp-c_base: ${c_base_headers}

View File

@ -0,0 +1,181 @@
commit 331735a357a73c7b8adc205241ac3cc6543d985e
Author: Felix Fietkau <nbd@openwrt.org>
Date: Tue Nov 17 12:38:22 2015 +0000
gcc: add a patch to 5.x that supports translation of __FILE__ paths
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 47490
Forward ported from attachment to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47047
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -588,6 +588,10 @@ c_common_handle_option (size_t scode, co
add_path (xstrdup (arg), SYSTEM, 0, true);
break;
+ case OPT_iremap:
+ add_cpp_remap_path (arg);
+ break;
+
case OPT_iwithprefix:
add_prefixed_path (arg, SYSTEM);
break;
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -1825,6 +1825,10 @@ iquote
C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
-iquote <dir> Add <dir> to the end of the quote include path.
+iremap
+C ObjC C++ ObjC++ Joined Separate
+-iremap <src:dst> Convert <src> to <dst> if it occurs as prefix in __FILE__.
+
iwithprefix
C ObjC C++ ObjC++ Joined Separate
-iwithprefix <dir> Add <dir> to the end of the system include path.
--- a/gcc/doc/cpp.texi
+++ b/gcc/doc/cpp.texi
@@ -4272,6 +4272,7 @@ Refer to the GCC manual for full documen
@c man begin SYNOPSIS
cpp [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
[@option{-I}@var{dir}@dots{}] [@option{-iquote}@var{dir}@dots{}]
+ [@option{-iremap}@var{src}:@var{dst}]
[@option{-M}|@option{-MM}] [@option{-MG}] [@option{-MF} @var{filename}]
[@option{-MP}] [@option{-MQ} @var{target}@dots{}]
[@option{-MT} @var{target}@dots{}]
--- a/gcc/doc/cppopts.texi
+++ b/gcc/doc/cppopts.texi
@@ -220,6 +220,12 @@ extensions @samp{.i}, @samp{.ii} or @sam
extensions that GCC uses for preprocessed files created by
@option{-save-temps}.
+@item -iremap @var{src}:@var{dst}
+@opindex iremap
+Replace the prefix @var{src} in __FILE__ with @var{dst} at expansion time.
+This option can be specified more than once. Processing stops at the first
+match.
+
@item -fdirectives-only
@opindex fdirectives-only
When preprocessing, handle directives, but do not expand macros.
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -11871,6 +11871,12 @@ by @option{-fplugin=@var{name}} instead
@option{-fplugin=@var{path}/@var{name}.so}. This option is not meant
to be used by the user, but only passed by the driver.
+@item -iremap @var{src}:@var{dst}
+@opindex iremap
+Replace the prefix @var{src} in __FILE__ with @var{dst} at expansion time.
+This option can be specified more than once. Processing stops at the first
+match.
+
@item -L@var{dir}
@opindex L
Add directory @var{dir} to the list of directories to be searched
--- a/libcpp/include/cpplib.h
+++ b/libcpp/include/cpplib.h
@@ -820,6 +820,9 @@ extern void cpp_set_lang (cpp_reader *,
/* Set the include paths. */
extern void cpp_set_include_chains (cpp_reader *, cpp_dir *, cpp_dir *, int);
+/* Provide src:dst pair for __FILE__ remapping. */
+extern void add_cpp_remap_path (const char *);
+
/* Call these to get pointers to the options, callback, and deps
structures for a given reader. These pointers are good until you
call cpp_finish on that reader. You can either edit the callbacks
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -227,6 +227,64 @@ static const char * const monthnames[] =
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
+static size_t remap_pairs;
+static char **remap_src;
+static char **remap_dst;
+
+void
+add_cpp_remap_path (const char *arg)
+{
+ const char *arg_dst;
+ size_t len;
+
+ arg_dst = strchr(arg, ':');
+ if (arg_dst == NULL)
+ {
+ fprintf(stderr, "Invalid argument for -iremap\n");
+ exit(1);
+ }
+
+ len = arg_dst - arg;
+ ++arg_dst;
+
+ remap_src = (char **) xrealloc(remap_src, sizeof(char *) * (remap_pairs + 1));
+ remap_dst = (char **) xrealloc(remap_dst, sizeof(char *) * (remap_pairs + 1));
+
+ remap_src[remap_pairs] = (char *) xmalloc(len + 1);
+ memcpy(remap_src[remap_pairs], arg, len);
+ remap_src[remap_pairs][len] = '\0';
+ remap_dst[remap_pairs] = xstrdup(arg_dst);
+ ++remap_pairs;
+}
+
+static const char *
+cpp_remap_file (const char *arg, char **tmp_name)
+{
+ char *result;
+ size_t i, len;
+
+ for (i = 0; i < remap_pairs; ++i)
+ {
+ len = strlen (remap_src[i]);
+ if (strncmp (remap_src[i], arg, len))
+ continue;
+ if (arg[len] == '\0')
+ return xstrdup (remap_dst[i]);
+ if (arg[len] != '/')
+ continue;
+ arg += len;
+ len = strlen (remap_dst[i]);
+ result = (char *) xmalloc (len + strlen (arg) + 1);
+ memcpy(result, remap_dst[i], len);
+ strcpy(result + len, arg);
+ *tmp_name = result;
+
+ return result;
+ }
+
+ return arg;
+}
+
/* Helper function for builtin_macro. Returns the text generated by
a builtin macro. */
const uchar *
@@ -290,6 +348,7 @@ _cpp_builtin_macro_text (cpp_reader *pfi
{
unsigned int len;
const char *name;
+ char *tmp_name = NULL;
uchar *buf;
if (node->value.builtin == BT_FILE)
@@ -301,6 +360,7 @@ _cpp_builtin_macro_text (cpp_reader *pfi
if (!name)
abort ();
}
+ name = cpp_remap_file (name, &tmp_name);
len = strlen (name);
buf = _cpp_unaligned_alloc (pfile, len * 2 + 3);
result = buf;
@@ -308,6 +368,7 @@ _cpp_builtin_macro_text (cpp_reader *pfi
buf = cpp_quote_string (buf + 1, (const unsigned char *) name, len);
*buf++ = '"';
*buf = '\0';
+ free (tmp_name);
}
break;

View File

@ -0,0 +1,73 @@
From dda6b050cd74a352670787a294596a9c56c21327 Mon Sep 17 00:00:00 2001
From: Yousong Zhou <yszhou4tech@gmail.com>
Date: Fri, 4 May 2018 18:20:53 +0800
Subject: [PATCH] gotools: fix compilation when making cross compiler
libgo is "the runtime support library for the Go programming language.
This library is intended for use with the Go frontend."
gccgo will link target files with libgo.so which depends on libgcc_s.so.1, but
the linker will complain that it cannot find it. That's because shared libgcc
is not present in the install directory yet. libgo.so was made without problem
because gcc will emit -lgcc_s when compiled with -shared option. When gotools
were being made, it was supplied with -static-libgcc thus no link option was
provided. Check LIBGO in gcc/go/gcc-spec.c for how gccgo make a builtin spec
for linking with libgo.so
- GccgoCrossCompilation, https://github.com/golang/go/wiki/GccgoCrossCompilation
- Cross-building instructions, http://www.eglibc.org/archives/patches/msg00078.html
When 3-pass GCC compilation is used, shared libgcc runtime libraries will be
available after gcc pass2 completed and will meet the gotools link requirement
at gcc pass3
---
gotools/Makefile.am | 4 +++-
gotools/Makefile.in | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/gotools/Makefile.am b/gotools/Makefile.am
index 5f3940a278b..9c22f5df103 100644
--- a/gotools/Makefile.am
+++ b/gotools/Makefile.am
@@ -26,6 +26,7 @@ PWD_COMMAND = $${PWDCMD-pwd}
STAMP = echo timestamp >
libgodir = ../$(target_noncanonical)/libgo
+libgccdir = ../$(target_noncanonical)/libgcc
LIBGODEP = $(libgodir)/libgo.la
if NATIVE
@@ -38,7 +39,8 @@ endif
GOCFLAGS = $(CFLAGS_FOR_TARGET)
GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
-AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
+AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs \
+ -L $(libgccdir) -L $(libgccdir)/.libs -lgcc_s
GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
cmdsrcdir = $(srcdir)/../libgo/go/cmd
diff --git a/gotools/Makefile.in b/gotools/Makefile.in
index 4386576b011..0bdd9290e01 100644
--- a/gotools/Makefile.in
+++ b/gotools/Makefile.in
@@ -252,13 +252,15 @@ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
PWD_COMMAND = $${PWDCMD-pwd}
STAMP = echo timestamp >
libgodir = ../$(target_noncanonical)/libgo
+libgccdir = ../$(target_noncanonical)/libgcc
LIBGODEP = $(libgodir)/libgo.la
@NATIVE_FALSE@GOCOMPILER = $(GOC)
# Use the compiler we just built.
@NATIVE_TRUE@GOCOMPILER = $(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET)
GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
-AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
+AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs \
+ -L $(libgccdir) -L $(libgccdir)/.libs -lgcc_s
GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
cmdsrcdir = $(srcdir)/../libgo/go/cmd
go_cmd_go_files = \
--
2.16.3

8
toolchain/packages/gcc/7.4.0/chksum vendored Normal file
View File

@ -0,0 +1,8 @@
md5 gcc-7.4.0.tar.xz 6e9d754638ff03d2e9b2aff55aed82b4
sha1 gcc-7.4.0.tar.xz bf09553cfa08ae6e29dfbbd541e5c69c3cbc6c66
sha256 gcc-7.4.0.tar.xz eddde28d04f334aec1604456e536416549e9b1aa137fc69204e65eb0c009fe51
sha512 gcc-7.4.0.tar.xz 8864d8e4b97c2e1a4f17422f6e68120172ebefeab97b1757734f7185ca68a6b9a89011c6833c03fa454c17b0ac35b15e1d284881e6971035948ac6100f3aa45e
md5 gcc-7.4.0.tar.gz 2f1f2df93e2777299b366070cd1b0ced
sha1 gcc-7.4.0.tar.gz ebbaf0be68a22d30cd74cab67d38a056a3b86e5a
sha256 gcc-7.4.0.tar.gz cb8df68237b0bea3307217697ad749a0a0565584da259e8a944ef6cfc4dc4d3d
sha512 gcc-7.4.0.tar.gz 6824b5c8fdb3151d8dd517911d3d975f7808525f52db32b5c25e9354b562792d6d2f1e8cc5aa019ff250df65b4f29b43f65ab6d769a070fd0015b13a3a9d6bf9

View File

View File

@ -1,6 +1,6 @@
origin='GNU'
repository='git git://sourceware.org/git/glibc.git'
mirrors='$(CT_Mirrors GNU glibc)'
milestones='2.14 2.17 2.20 2.23 2.24 2.26 2.27'
milestones='2.14 2.17 2.20 2.23 2.24 2.25 2.26 2.27'
archive_formats='.tar.xz .tar.bz2 .tar.gz'
signature_format='packed/.sig'

View File

@ -0,0 +1,29 @@
From a59675779247f544695959646a1615a033ca2d8d Mon Sep 17 00:00:00 2001
From: Alexey Neyman <stilor@att.net>
Date: Tue, 20 Nov 2018 10:54:40 -0800
Subject: [PATCH] Remove PKG_CONFIG check
... it is not used afterwards anyway, and causes errors if pkg-config
is not installed (since one cannot just run configure - one has to
run autogen.sh first).
Signed-off-by: Alexey Neyman <stilor@att.net>
---
configure.ac | 1 -
1 file changed, 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index aeadb36..1925a88 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,6 @@ AC_PATH_TOOL(STRIP, strip)
AC_CHECK_PROG(MOX_AS, moxiebox-as, moxiebox-as)
AC_CHECK_PROG(MOX_AR, moxiebox-ar, moxiebox-ar)
AC_CHECK_PROG(MOX_GCC, moxiebox-gcc, moxiebox-gcc)
-PKG_PROG_PKG_CONFIG
AC_LANG_PUSH([C++])
--
2.14.1

View File

@ -0,0 +1,2 @@
repository='git https://github.com/jgarzik/moxiebox.git'
repository_cset='9a79ac546faa4196b66e279f8017814ba8d6fd4b'

View File

@ -0,0 +1,23 @@
/*
Wrapper around moxiebox'es implementation of SHA256 digest that
mimics the API of the OpenSSL implementation.
*/
#ifndef __SHA_H_
#define __SHA_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "../runtime/sandboxrt_crypto.h"
#define SHA256_DIGEST_LENGTH SHA256_BLOCK_SIZE
void SHA256_Init(SHA256_CTX *ctx);
void SHA256_Update(SHA256_CTX *ctx, const void *data, size_t len);
void SHA256_Final(unsigned char *md, SHA256_CTX *ctx);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -0,0 +1,25 @@
/*
Wrapper around moxiebox'es implementation of SHA256 digest that
mimics the API of the OpenSSL implementation.
*/
#include "sha.h"
#include "../runtime/sha256.c"
void
SHA256_Init(SHA256_CTX *ctx)
{
sha256_init(ctx);
}
void
SHA256_Update(SHA256_CTX *ctx, const void *data, size_t len)
{
sha256_update(ctx, data, len);
}
void
SHA256_Final(unsigned char *md, SHA256_CTX *ctx)
{
sha256_final(ctx, md);
}

View File

@ -0,0 +1,94 @@
commit b89a69dec27cf638df0e17db80ed937c3e1abf77
Author: Dmitry V. Levin <ldv@altlinux.org>
Date: Sat Aug 18 07:22:47 2018 +0000
xlat: workaround V4L2_CID_USER_IMX_BASE Linux kernel ABI breakage
Linux kernel commit v4.18-rc2-106-g421860b9d47053badce4b247576fa48df9ab4c48
has changed the value of V4L2_CID_USER_IMX_BASE constant introduced
by commit v4.13-rc1~141^2~121 because the old value was already used
by V4L2_CID_USER_MAX217X_BASE.
This is of course an ABI breakage that affects Linux kernels starting
with 4.13 and up to 4.18, as well as their LTS derivatives.
Since the imx driver didn't provide any public control ID definitions,
it looks like the best way to handle this situation is to pretend that
the old value of V4L2_CID_USER_IMX_BASE didn't exist.
* xlat/v4l2_control_id_bases.in (V4L2_CID_USER_IMX_BASE): Redefine.
Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
diff --git a/xlat/v4l2_control_id_bases.in b/xlat/v4l2_control_id_bases.in
index a0359be9..f3fd9255 100644
--- a/xlat/v4l2_control_id_bases.in
+++ b/xlat/v4l2_control_id_bases.in
@@ -2,7 +2,22 @@ V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
V4L2_CID_USER_MEYE_BASE (V4L2_CID_BASE + 0x1000)
V4L2_CID_USER_BTTV_BASE (V4L2_CID_BASE + 0x1010)
V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_BASE + 0x1050)
-V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x1090)
+#ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+# define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+/*
+ * Linux kernel commit v4.18-rc2-106-g421860b9d47053badce4b247576fa48df9ab4c48
+ * has changed the value of V4L2_CID_USER_IMX_BASE constant introduced
+ * by commit v4.13-rc1~141^2~121 because the old value was already used
+ * by V4L2_CID_USER_MAX217X_BASE.
+ * This is of course an ABI breakage that affects Linux kernels starting
+ * with 4.13 and up to 4.18, as well as their LTS derivatives.
+ * Since the imx driver didn't provide any public control ID definitions,
+ * it looks like the best way to handle this situation is to pretend that
+ * the old value of V4L2_CID_USER_IMX_BASE didn't exist.
+ */
+# undef V4L2_CID_USER_IMX_BASE
+#endif
+V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x10b0)
V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
V4L2_CID_MPEG_MFC51_BASE (V4L2_CTRL_CLASS_MPEG | 0x1100)
diff -urpN a/xlat/v4l2_control_id_bases.h b/xlat/v4l2_control_id_bases.h
--- a/xlat/v4l2_control_id_bases.h
+++ b/xlat/v4l2_control_id_bases.h
@@ -31,12 +31,16 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_BASE + 0x1050)
#endif
+#ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+# define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+# undef V4L2_CID_USER_IMX_BASE
+#endif
#if defined(V4L2_CID_USER_IMX_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_IMX_BASE) && HAVE_DECL_V4L2_CID_USER_IMX_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((V4L2_CID_USER_IMX_BASE) == ((V4L2_CID_BASE + 0x1090)), "V4L2_CID_USER_IMX_BASE != (V4L2_CID_BASE + 0x1090)");
+static_assert((V4L2_CID_USER_IMX_BASE) == ((V4L2_CID_BASE + 0x10b0)), "V4L2_CID_USER_IMX_BASE != (V4L2_CID_BASE + 0x10b0)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
-# define V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x1090)
+# define V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x10b0)
#endif
#if defined(V4L2_CID_MPEG_BASE) || (defined(HAVE_DECL_V4L2_CID_MPEG_BASE) && HAVE_DECL_V4L2_CID_MPEG_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
@@ -146,6 +150,21 @@ const struct xlat v4l2_control_id_bases[
XLAT(V4L2_CID_USER_MEYE_BASE),
XLAT(V4L2_CID_USER_BTTV_BASE),
XLAT(V4L2_CID_USER_TI_VPE_BASE),
+#ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+# define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+/*
+* Linux kernel commit v4.18-rc2-106-g421860b9d47053badce4b247576fa48df9ab4c48
+* has changed the value of V4L2_CID_USER_IMX_BASE constant introduced
+* by commit v4.13-rc1~141^2~121 because the old value was already used
+* by V4L2_CID_USER_MAX217X_BASE.
+* This is of course an ABI breakage that affects Linux kernels starting
+* with 4.13 and up to 4.18, as well as their LTS derivatives.
+* Since the imx driver didn't provide any public control ID definitions,
+* it looks like the best way to handle this situation is to pretend that
+* the old value of V4L2_CID_USER_IMX_BASE didn't exist.
+*/
+# undef V4L2_CID_USER_IMX_BASE
+#endif
XLAT(V4L2_CID_USER_IMX_BASE),
XLAT(V4L2_CID_MPEG_BASE),
XLAT(V4L2_CID_MPEG_CX2341X_BASE),

View File

@ -0,0 +1,94 @@
commit b89a69dec27cf638df0e17db80ed937c3e1abf77
Author: Dmitry V. Levin <ldv@altlinux.org>
Date: Sat Aug 18 07:22:47 2018 +0000
xlat: workaround V4L2_CID_USER_IMX_BASE Linux kernel ABI breakage
Linux kernel commit v4.18-rc2-106-g421860b9d47053badce4b247576fa48df9ab4c48
has changed the value of V4L2_CID_USER_IMX_BASE constant introduced
by commit v4.13-rc1~141^2~121 because the old value was already used
by V4L2_CID_USER_MAX217X_BASE.
This is of course an ABI breakage that affects Linux kernels starting
with 4.13 and up to 4.18, as well as their LTS derivatives.
Since the imx driver didn't provide any public control ID definitions,
it looks like the best way to handle this situation is to pretend that
the old value of V4L2_CID_USER_IMX_BASE didn't exist.
* xlat/v4l2_control_id_bases.in (V4L2_CID_USER_IMX_BASE): Redefine.
Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
diff --git a/xlat/v4l2_control_id_bases.in b/xlat/v4l2_control_id_bases.in
index a0359be9..f3fd9255 100644
--- a/xlat/v4l2_control_id_bases.in
+++ b/xlat/v4l2_control_id_bases.in
@@ -2,7 +2,22 @@ V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
V4L2_CID_USER_MEYE_BASE (V4L2_CID_BASE + 0x1000)
V4L2_CID_USER_BTTV_BASE (V4L2_CID_BASE + 0x1010)
V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_BASE + 0x1050)
-V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x1090)
+#ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+# define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+/*
+ * Linux kernel commit v4.18-rc2-106-g421860b9d47053badce4b247576fa48df9ab4c48
+ * has changed the value of V4L2_CID_USER_IMX_BASE constant introduced
+ * by commit v4.13-rc1~141^2~121 because the old value was already used
+ * by V4L2_CID_USER_MAX217X_BASE.
+ * This is of course an ABI breakage that affects Linux kernels starting
+ * with 4.13 and up to 4.18, as well as their LTS derivatives.
+ * Since the imx driver didn't provide any public control ID definitions,
+ * it looks like the best way to handle this situation is to pretend that
+ * the old value of V4L2_CID_USER_IMX_BASE didn't exist.
+ */
+# undef V4L2_CID_USER_IMX_BASE
+#endif
+V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x10b0)
V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
V4L2_CID_MPEG_MFC51_BASE (V4L2_CTRL_CLASS_MPEG | 0x1100)
diff -urpN a/xlat/v4l2_control_id_bases.h b/xlat/v4l2_control_id_bases.h
--- a/xlat/v4l2_control_id_bases.h
+++ b/xlat/v4l2_control_id_bases.h
@@ -31,12 +31,16 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_BASE + 0x1050)
#endif
+#ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+# define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+# undef V4L2_CID_USER_IMX_BASE
+#endif
#if defined(V4L2_CID_USER_IMX_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_IMX_BASE) && HAVE_DECL_V4L2_CID_USER_IMX_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((V4L2_CID_USER_IMX_BASE) == ((V4L2_CID_BASE + 0x1090)), "V4L2_CID_USER_IMX_BASE != (V4L2_CID_BASE + 0x1090)");
+static_assert((V4L2_CID_USER_IMX_BASE) == ((V4L2_CID_BASE + 0x10b0)), "V4L2_CID_USER_IMX_BASE != (V4L2_CID_BASE + 0x10b0)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
-# define V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x1090)
+# define V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x10b0)
#endif
#if defined(V4L2_CID_MPEG_BASE) || (defined(HAVE_DECL_V4L2_CID_MPEG_BASE) && HAVE_DECL_V4L2_CID_MPEG_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
@@ -146,6 +150,21 @@ const struct xlat v4l2_control_id_bases[
XLAT(V4L2_CID_USER_MEYE_BASE),
XLAT(V4L2_CID_USER_BTTV_BASE),
XLAT(V4L2_CID_USER_TI_VPE_BASE),
+#ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+# define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
+/*
+* Linux kernel commit v4.18-rc2-106-g421860b9d47053badce4b247576fa48df9ab4c48
+* has changed the value of V4L2_CID_USER_IMX_BASE constant introduced
+* by commit v4.13-rc1~141^2~121 because the old value was already used
+* by V4L2_CID_USER_MAX217X_BASE.
+* This is of course an ABI breakage that affects Linux kernels starting
+* with 4.13 and up to 4.18, as well as their LTS derivatives.
+* Since the imx driver didn't provide any public control ID definitions,
+* it looks like the best way to handle this situation is to pretend that
+* the old value of V4L2_CID_USER_IMX_BASE didn't exist.
+*/
+# undef V4L2_CID_USER_IMX_BASE
+#endif
XLAT(V4L2_CID_USER_IMX_BASE),
XLAT(V4L2_CID_MPEG_BASE),
XLAT(V4L2_CID_MPEG_CX2341X_BASE),

View File

@ -1,4 +1,4 @@
repository='git https://git.code.sf.net/p/strace/code'
repository='git https://github.com/strace/strace.git'
bootstrap='./bootstrap'
mirrors='https://strace.io/files/${CT_STRACE_VERSION}'
archive_formats='.tar.xz'

View File

@ -10,11 +10,11 @@ CT_EXTRA_CFLAGS_FOR_HOST="-O2"
CT_ARCH_MIPS=y
CT_ARCH_TUNE="mips32r2"
CT_ARCH_SUFFIX="el"
CT_OMIT_TARGET_VENDOR=y
CT_ARCH_LE=y
CT_ARCH_FLOAT_HW=y
CT_TARGET_CFLAGS="-pipe -O2 -mips32r2"
CT_TOOLCHAIN_BUGURL="https://github.com/Linaro1985/padavan-ng/issues"
CT_TARGET_VENDOR=""
CT_KERNEL_LINUX=y
CT_LINUX_SRC_CUSTOM=y
CT_LINUX_CUSTOM_LOCATION="${CT_TOP_DIR}/../trunk/linux-3.4.x"
@ -29,7 +29,8 @@ CT_LIBC_UCLIBC_CONFIG_FILE="${CT_TOP_DIR}/../trunk/configs/boards/uclibc-mipsel.
CT_LIBC_UCLIBC_LIBICONV=y
CT_LIBC_UCLIBC_IPV6=y
CT_LIBC_UCLIBC_WCHAR=y
CT_GCC_V_7_3_0=y
# CT_LIBC_UCLIBC_HAS_SSP is not set
CT_GCC_V_7_4_0=y
CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--with-gnu-ld"
CT_CC_GCC_EXTRA_CONFIG_ARRAY="--with-gnu-ld"
CT_CC_GCC_CONFIG_TLS=y

View File

@ -1,31 +1,36 @@
# This file provides the default implementations of arch-specific functions.
# Set up the target tuple
CT_DoArchTupleValues() {
:;
CT_DoArchTupleValues()
{
:
}
# Adjust the list of multilibs for the target
CT_DoArchMultilibList() {
:;
CT_DoArchMultilibList()
{
:
}
# Multilib: change the target triplet according to CFLAGS
# Usage: CT_DoArchGlibcAdjustTuple <variable-name> <CFLAGS>
CT_DoArchMultilibTarget() {
:;
CT_DoArchMultilibTarget()
{
:
}
# Multilib: Adjust target tuple for GLIBC
# Usage: CT_DoArchGlibcAdjustTuple <variable-name>
CT_DoArchGlibcAdjustTuple() {
:;
CT_DoArchGlibcAdjustTuple()
{
:
}
# Multilib: Adjust configure arguments for GLIBC
# Usage: CT_DoArchGlibcAdjustConfigure <configure-args-array-name> <cflags>
CT_DoArchGlibcAdjustConfigure() {
:;
CT_DoArchGlibcAdjustConfigure()
{
:
}
# Helper for uClibc configurators: select the architecture
@ -41,14 +46,16 @@ CT_DoArchUClibcSelectArch() {
# uClibc: Adjust configuration file according to the CT-NG configuration
# Usage: CT_DoArchUClibcConfig <config-file>
CT_DoArchUClibcConfig() {
CT_DoArchUClibcConfig()
{
CT_DoLog WARN "Support for '${CT_ARCH}' is not implemented in uClibc config tweaker."
CT_DoLog WARN "Exact configuration file must be provided."
}
# Multilib/uClibc: Adjust configuration file for given CFLAGS
# Usage: CT_DoArchUClibcCflags <config-file> <cflags>
CT_DoArchUClibcCflags() {
CT_DoArchUClibcCflags()
{
local cfg="${1}"
local cflags="${2}"
@ -63,21 +70,24 @@ CT_DoArchUClibcCflags() {
# Multilib/uClibc: Adjust header installation path for given CFLAGS
# Usage: CT_DoArchUClibcHeaderDir <path-variable> <cflags>
CT_DoArchUClibcHeaderDir() {
CT_DoArchUClibcHeaderDir()
{
# Only needed if a given architecture may select different uClibc architectures.
:;
:
}
# Multilib/MUSL: Adjust header installation path for given CFLAGS
# Usage: CT_DoArchMUSLHeaderDir <path-variable> <cflags>
CT_DoArchMUSLHeaderDir() {
CT_DoArchMUSLHeaderDir()
{
# Only needed if a given architecture may select different MUSL architectures.
:;
:
}
# MUSL: Perform any final adjustments on the installed libc/headers
CT_DoArchMUSLPostInstall() {
:;
CT_DoArchMUSLPostInstall()
{
:
}
# Override from the actual arch implementation as needed.

View File

@ -1,23 +1,20 @@
# Compute ARC-specific values
CT_DoArchTupleValues() {
CT_DoArchTupleValues()
{
# The architecture part of the tuple:
CT_TARGET_ARCH="${CT_ARCH}${CT_ARCH_SUFFIX:-${target_endian_eb}}"
# The system part of the tuple:
case "${CT_LIBC}" in
glibc) CT_TARGET_SYS=gnu;;
uClibc) CT_TARGET_SYS=uclibc;;
esac
}
CT_DoArchUClibcConfig() {
CT_DoArchUClibcConfig()
{
local cfg="${1}"
CT_DoArchUClibcSelectArch "${cfg}" "arc"
}
CT_DoArchUClibcCflags() {
CT_DoArchUClibcCflags()
{
local cfg="${1}"
local cflags="${2}"
local f

View File

@ -0,0 +1,16 @@
# Moxie-specific arch callbacks
# No arch-specific overrides yet
CT_DoArchTupleValues()
{
case "${CT_ARCH_ENDIAN}" in
big) CT_ARCH_ENDIAN_CFLAG=-meb;;
little) CT_ARCH_ENDIAN_CFLAG=-mel;;
esac
case "${CT_LIBC}" in
moxiebox)
CT_TARGET_SYS=moxiebox
;;
esac
}

View File

@ -10,7 +10,11 @@ CT_DoArchTupleValues() {
arch="${CT_ARCH_ARCH}"
[ -z "${arch}" ] && arch="${CT_ARCH_TUNE}"
case "${arch}" in
"") CT_TARGET_ARCH=i386;;
"")
CT_DoLog WARN "Architecture level is not specified for 32-bit x86; defaulting to i386."
CT_DoLog WARN "This may not be supported by the C library."
CT_TARGET_ARCH=i386
;;
i386|i486|i586|i686) CT_TARGET_ARCH="${arch}";;
winchip*) CT_TARGET_ARCH=i486;;
pentium|pentium-mmx|c3*) CT_TARGET_ARCH=i586;;

Some files were not shown because too many files have changed in this diff Show More