GCC and Clang are able to check the format arguments given to a
function and warn the user if there is a error in the format arguments
or if there is a potential uncontrolled format string security problem
in the code. GCC does this automatically for some functions like
printf(), but it is also possible to annotate other functions in a way
that it will check them too. This feature is used by glibc for many
functions. This patch adds the attribute to the some functions of musl
expect for these functions where gcc automatically adds it.
GCC automatically adds checks for these functions: printf, fprintf,
sprintf, scanf, fscanf, sscanf, strftime, vprintf, vfprintf and
vsprintf.
The documentation from gcc is here:
https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
The documentation from Clang is here:
http://clang.llvm.org/docs/AttributeReference.html#format-gnu-format
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
SVN-Revision: 48467
vdso support is available on mips starting with kernel 4.4, see kernel
commit a7f4df4e21 "MIPS: VDSO: Add implementations of gettimeofday()
and clock_gettime()" for details.
These are my micro benchmark results for 1.000.000 calls to
clock_gettime(CLOCK_MONOTONIC, &tp)
without vdso:
root@OpenWrt:/# time ./vdso-test
real 0m 0.95s
user 0m 0.24s
sys 0m 0.70s
with vdso:
root@OpenWrt:/# time /usr/bin/vdso-test
real 0m 0.35s
user 0m 0.34s
sys 0m 0.00s
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
SVN-Revision: 48466
This will make adding future glibc versions easier because the
conditionals won't have to be modified again.
Signed-off-by: Michael Marley <michael@michaelmarley.com>
SVN-Revision: 48399
Fixes: commit f17e56eff5b9 ("gcc: remove version 4.6, it is no longer needed")
CC: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Sedat Dilek <sedat.dilek@gmail.com>
SVN-Revision: 47965
With bump of upstream GDB from 7.9 to 7.10 at least
100-no_extern_inline.patch became incompatible with
ARC gdb (which is still based on upstream 7.9 branch).
So until ARC support is not completely upstreamed
(which we expect to happen in coming months) we'll need to have
separate patches for ARC gdb.
This time clean build-tested for Netgear WNDRMAC & AXS101.
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Felix Fietkau <nbd@openwrt.org>
Cc: John Crispin <blogic@openwrt.org>
Cc: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 47491
Current musl reports the peer (remote) address of a point-to-point
interface and does not store the local address at all.
Apply the same special treatment of IFA_LOCAL to musl's getifaddrs() which
is also used in glibc and uclibc.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47488
This includes binutils, gcc, gdb and uClibc-ng.
Latest release of ARC gcc (as of today it is "arc-2015.06")
is based on upstream gcc 4.8.4.
Sources are available on GitHub, see:
https://github.com/foss-for-synopsys-dwc-arc-processors/gcc
Latest release of ARC binutils (as of today it is "arc-2015.06")
is based on upstream binutils 2.23.
Sources are available on GitHub, see:
https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/releases/tag/arc-2015.06
Latest release of ARC GDB (as of today this is "arc-2015.06-gdb")
is based on upstream gdb 7.9.1.
Sources are available on GitHub, see:
https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/releases/tag/arc-2015.06-gdb
Note that for binutils and gdb that come from unified git repository
(which is the case for upstream binutils/gdb today) we need to disable
building of gdb in binutils and binutils in gdb hence in binutils:
------>8------
--disable-sim
--disable-gdb
------>8------
and in gdb:
------>8------
--disable-binutils
--disable-ld
--disable-gas
------>8------
Also in gdb we disable sim because if the following breakage while
building with it:
------------>8------------
/usr/bin/env bash ./../common/genmloop.sh -shell /usr/bin/env bash \
-mono -fast -pbb -switch sem5-switch.c \
-cpu a5f -infile ./mloop5.in \
-outfile-suffix 5
unknown option: bash
Makefile:699: recipe for target 'stamp-5mloop' failed
make[7]: *** [stamp-5mloop] Error 1
------------>8------------
Cc: Felix Fietkau <nbd@openwrt.org>
Cc: John Crispin <blogic@openwrt.org>
Cc: Jonas Gorski <jogo@openwrt.org>
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
SVN-Revision: 47438
2 new architectures were added in between 1.0.6 and 1.0.8 in uClibc-ng,
these are:
* lm32
* or1k
Even thought both are not yet supported in OpenWRT it's important to
disable them both in default config file otherwise user prompt will
appear during uClibc configuration asking to select desired
architecture.
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Waldemar Brodkorb <wbx@uclibc-ng.org>
Cc: Mathieu Olivari <mathieu@codeaurora.org>
Cc: Felix Fietkau <nbd@openwrt.org>
Cc: John Crispin <blogic@openwrt.org>
SVN-Revision: 47356
This patch fixes corner case in open_memstrem, when stream is created,
but nothing is written.
This case is present in tgtadm, tgtd management tool.
Signed-off-by: Maxim Storchak <m.storchak@gmail.com>
SVN-Revision: 47339
Size increase is about 3-4k: this is how big xattr.os in uClibc after stripping is.
Signed-off-by: Maxim Storchak <m.storchak@gmail.com>
SVN-Revision: 47271
uClibc-ng is a spin-off of original uClibc, see http://www.uclibc-ng.org/
We try to regularly add changes from uClibc to uClibc-ng.
We even sent patches and bug reports to the uClibc mailing list.
The config file is compatible between uClibc-ng 1.0 and uClibc git master.
This might change in the future.
Our main goal is to provide regularly a stable and tested release
to make embedded system developers happy.
The main advantage of uClibc-ng over olde good uClibc is regular releases
so there's no need to keep tons of patches on top of years old
0.9.33.2
Build-tested for
[1] ARM: Sunxi generic
[2] MIPS: Netgear WNDR3600/3700/3800
Run-tested for [yet out of the tree] Synopsys Designware ARC AXS101.
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Waldemar Brodkorb <wbx@uclibc-ng.org>
Cc: Mathieu Olivari <mathieu@codeaurora.org>
Cc: Felix Fietkau <nbd@openwrt.org>
Cc: John Crispin <blogic@openwrt.org>
SVN-Revision: 47077
musl fails to build when compiled with gcc on sh3 (GCC target/#67260).
Work it around.
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
SVN-Revision: 47012
The Binutils version 2.25.1 was not a Linaro version, but a normal
upstream Binutils version, fix the name.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Reported-by: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
SVN-Revision: 46946
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
Currently the OpenWRT boot scripts write the timezone configuration to
/tmp/TZ, relying on the behaviour of uClibc that the timezone is read
from /etc/TZ if no TZ env variable is found.
This works because /etc/TZ is a symlink to /tmp/TZ.
Musl libc however only reads the timezone from the TZ env variable and
if it doesn't find it or it's empty, it will look for a zoneinfo
file, that doesn't exist.
So in musl builds no timezone is ever set.
This patch fixes the issue by having musl libc behave like uClibc: if no
TZ env variable is found it will try to load it from /etc/TZ.
Signed-off-by: Gianluca Anzolin <gianluca at sottospazio.it>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 46069
Patch to 2015-06-04 to fix ldso related regressions on PPC and MIPS.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 45886
uClibc doesn't define signal info for the SIGSYS signal which is issued
in case of hitting a syscall prohibited by seccomp.
This is sad as it makes debugging seccomp filter policies impossible on
some architectures (at least ARM and PowerPC, maybe also others) which
do not coincidentally set si_value.sival_int as the syscall number.
To fix this, import the definitions and macros needed from glibc.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
SVN-Revision: 45720
It's the eglibc packaging with a bit of spit-polishing. And testing. :-)
[blogic: merged glibc and eglibc into 1 and made eglibc a glibc variant]
Signed-off-by: Jeff Waugh <jdub@bethesignal.org>
Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 44701
Patch from the uClibc master.
Fixes the package fastd on PowerPC.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
SVN-Revision: 44694
Introduce configuration options to build an "hardened" OpenWRT.
Options to enable Stack-Smashing Protection, FORTIFY_SOURCE and RELRO
have been introduced.
uClibc makefile now automatically detects if SSP support is necessary.
hostapd makefile has been fixed to use "^" as sed separator since
using a comma was problematic when using "-Wl,-z,now" and the like in
TARGET_CFLAGS.
Currently enabling SSP on user space depends on enabling SSP kernel
side, this is due to the fact that TARGET_CFLAGS are used to build
kernel modules (at least). Suggestions on how to avoid this are welcome.
Using "select" instead of "depends on" doesn't seem to work with choice
entries.
Tested with a lantiq (WBMR) router, GCC 4.8, uClibc and a subset of
the available packages.
Needs to be tested with GCC 4.9 and the remaining packages.
PIE not currently included.
Signed-off-by: Alessandro Di Federico <ale+owrt@clearmind.me>
SVN-Revision: 44005
fixes compiler error after a binutils rebuild/reinstall without
rebuilding the rest of the toolchain
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 43785
--enable-plugin is necessary for gcc-ar, gcc-nm and gcc-ranlib to work, which
must be used with GCC 4.9 for LTO to work.
Without this option, gcc-ar etc. will just fail with
sorry - this program has been built without plugin support
Using the normal ar from binutils with GCC 4.9 and -flto will cause linking
with static "convenience" libraries to fail.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
SVN-Revision: 43783
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
Kernel 3.15's asm.h includes eva-asm.h, so copy it also, else lzma-loader
won't compile due to a missing include.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 43460
When building with CONFIG_BUILD_NLS=y, uClibc fails to compile with following
message (or similar, according to https://dev.openwrt.org/ticket/13095):
-snip-
...
Warning: adding UNDEFINED entry for ar_AE
Warning: adding UNDEFINED entry for am_ET
Warning: adding UNDEFINED entry for af_ZA
grep "^#define" extra/locale/locale_tables.h > extra/locale/lt_defines.h
grep "^#define __lc" extra/locale/locale_collate.h >> extra/locale/lt_defines.h
gcc extra/locale/gen_wctype.c -o extra/locale/gen_wctype -Os -Wall -D__UCLIBC_GEN_LOCALE -I./
extra/locale/gen_wctype.c: In function 'main':
extra/locale/gen_wctype.c:684:2: warning: #warning fix the upper bound on the upper/lower tables... save 200 bytes or so [-Wcpp]
for locale in en_US en_GB; do \
extra/locale/gen_wctype $locale > extra/locale/wctables.h || \
extra/locale/gen_wctype $locale.UTF-8 > extra/locale/wctables.h || \
extra/locale/gen_wctype $locale.iso8859-1 > extra/locale/wctables.h && break; \
done
make[4]: *** [extra/locale/wctables.h] Error 1
-snap-
This seems to also depend on the host system used, e.g. running a fresh
checkout on a Debian 7.6 system triggered this error, while running the
very same stuff on an Ubuntu 12.10 Quantal Quetzal does not trigger it.
This is the configuration I used:
-snip-
buildbot@buildbot:~/openwrt-nls.git$ scripts/diffconfig.sh
CONFIG_TARGET_ar71xx=y
CONFIG_TARGET_ar71xx_generic=y
CONFIG_TARGET_ar71xx_generic_Default=y
CONFIG_DEVEL=y
CONFIG_BUILD_NLS=y
CONFIG_DOWNLOAD_FOLDER="/srv/downloads/downloads"
-snap-
In the ticket mentioned above, a patch is referenced which solves this issue.
Note, that this issue is also present on 14.07.
Signed-off-by: Michael Heimpold <mhei@heimpold.de>
SVN-Revision: 43446
Without this patch, selecting "Compile with full language support"
results in the following question during build:
...
Locale Support (UCLIBC_HAS_LOCALE) [Y/n/?] y
Locale data
> 1. All locales (UCLIBC_BUILD_ALL_LOCALE) (NEW)
2. Only selected locales (UCLIBC_BUILD_MINIMAL_LOCALE) (NEW)
3. Use Pre-generated Locale Data (UCLIBC_PREGENERATED_LOCALE_DATA) (NEW)
choice[1-3]:
Signed-off-by: Michael Heimpold <mhei@heimpold.de>
SVN-Revision: 43445
Since we updated autoconf in r42855 we also need to enforce its use
while building eglibc to allow it to build successfully.
Signed-off-by: Florian Fainelli <florian@openwrt.org>
SVN-Revision: 43352
musl libc doesn't support the GNU getopt extension to parse non-option
arguments when the optstring starts with '-'.
This extension is used by some utilities, notably iptables, that
currently return with errors even with perfectly valid invocations.
The patch adds the code needed by getopt.c and getopt_long.c to
implement that extension.
Signed-off-by: Gianluca Anzolin <gianluca@sottospazio.it>
SVN-Revision: 43309
The Makefile for binutils creates a broken symlink to "binutils-linaro" in
"trunk/build_dir/toolchain-<target>_gcc-4.9-linaro_uClibc-0.9.33.2".
Modify the Makefile to point the symlink to the correct directory.
Signed-off-by: Nathan Hintz <nlhintz@hotmail.com>
SVN-Revision: 42954
This patch adds missing architecture-specific headers for use with
eventfd(2). Fixes#16679.
Signed-off-by: Luis Dallos <ld@nkvd.ignorelist.com>
SVN-Revision: 42916
This patch ensures that libgcc_s.so properly honours the NOEXECSTACK flag
for MIPS builds, when gcc-linaro-4.8 or 4.9 is the chosen C compiler.
Signed-off-by: Andrew McDonnell <bugs@andrewmcdonnell.net>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 42769
Non-functional edits to toolchain/Config.in:
* fix spelling mistake ("us" -> "is")
* Overly long help lines shortened to avoid line wrap
* Standardize help info to use tab(s), then two spaces
Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
SVN-Revision: 42518
This fixes eglibc build failure. More information about the bug can be found on
the link below.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61796
Signed-off-by: Luka Perkov <luka@openwrt.org>
SVN-Revision: 41657
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 small system like the common home router doesn't have 40 MiB per process for
a dirty stack cache. This can easily lead to an overbooking OOM problem and
caused a lot of hangs+reboots on 32 MiB systems running nodogsplash.
Not using a stack cache can increase the time to spawn new threads. This is
hopefully no problem for system not running a lot of parallel computations.
Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
SVN-Revision: 38851