Commit Graph

931 Commits

Author SHA1 Message Date
John Crispin
491f3fc048 Support for building an hardened OpenWRT
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
2015-01-17 14:31:30 +00:00
Felix Fietkau
8e20e09d1b musl: update to version 1.1.6
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43977
2015-01-15 21:40:44 +00:00
Felix Fietkau
63176d7e1e musl: merge changes from git, includes further getopt fixes
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43939
2015-01-11 18:25:23 +00:00
Felix Fietkau
f38436f607 binutils: run install twice instead of overwriting the final toolchain with the initial one
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
2014-12-27 13:00:09 +00:00
Felix Fietkau
7d808a325d binutils: enable plugin support
--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
2014-12-27 12:59:53 +00:00
Felix Fietkau
35a9cb833c build: ensure tools are built before building the toolchain
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43693
2014-12-13 11:57:14 +00:00
Felix Fietkau
548d9a008f 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
2014-12-12 17:01:57 +00:00
Felix Fietkau
b2bdea8ad4 uClibc: fix ptrace header files for powerpc
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43617
2014-12-11 14:38:50 +00:00
Jonas Gorski
100e2feb22 toolchain-headers: also copy asm-eva.h for mips(el) for 3.15+
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
2014-12-01 13:27:06 +00:00
Felix Fietkau
309cdd6101 toolchain: uClibc: fix compile with full language support enabled (fixes #13095)
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
2014-11-30 22:22:24 +00:00
Felix Fietkau
3f130f7a45 toolchain: uClibc: fix build with CONFIG_BUILD_NLS selected
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
2014-11-30 22:22:14 +00:00
Florian Fainelli
dd8d7188ee aarch64: add initial support
Add initial support for the AArch64 architecture

Signed-off-by: Florian Fainelli <florian@openwrt.org>

SVN-Revision: 43353
2014-11-24 06:33:13 +00:00
Florian Fainelli
d6da770a80 eglibc: enforce use of autoconf-2.69
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
2014-11-24 02:06:20 +00:00
John Crispin
d49f9039f7 musl: add getopt support for non-option arguments
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
2014-11-19 09:21:02 +00:00
Florian Fainelli
afa36fe3bc toolchain: fix mips64 musl linker names
Signed-off-by: Florian Fainelli <florian@openwrt.org>

SVN-Revision: 43035
2014-10-24 00:15:58 +00:00
Felix Fietkau
4d5218e083 musl: fix getopt optional argument processing
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43009
2014-10-21 11:03:20 +00:00
Felix Fietkau
9d1b619cb1 binutils: remove linaro version string, it confuses gcc lto support detection
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43004
2014-10-20 11:43:08 +00:00
Felix Fietkau
20e7ccc3a2 gcc: update 4.9 to linaro 2014.10
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43003
2014-10-20 11:42:59 +00:00
Felix Fietkau
939d0869cc toolchain: mark musl as non-broken
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42977
2014-10-19 21:57:28 +00:00
Felix Fietkau
81cc26c706 gcc: do not assume that the Mac OS X filesystem is case insensitive
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42973
2014-10-19 21:45:51 +00:00
Felix Fietkau
296563018c musl: update to version 1.1.5
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42971
2014-10-19 21:45:41 +00:00
Felix Fietkau
1f85497423 gcc: update, split and rework 4.9 musl patches
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42970
2014-10-19 21:45:36 +00:00
Felix Fietkau
69c1568779 gcc: update, split and rework 4.8 musl patches
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42969
2014-10-19 21:45:28 +00:00
Felix Fietkau
663ddf8f17 gcc: backport an upstream fix for extern vars with local weak definitions
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42962
2014-10-19 16:18:56 +00:00
Felix Fietkau
b537205ea2 toolchain: fix binutils broken symlink
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
2014-10-18 19:25:24 +00:00
John Crispin
70be73e153 uClibc: Backport uClibc master git commit fd355bc1dbcb794ae1abf0fad1459e28d8567ba0 (eventfd.h: Use new "bits/" scheme for arch-specific flags)
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
2014-10-14 12:57:39 +00:00
Felix Fietkau
b6fb77ebfe gcc: remove version 4.8.0
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42777
2014-10-05 18:40:43 +00:00
Felix Fietkau
c7bc3ad908 binutils: remove old versions
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42776
2014-10-05 18:40:38 +00:00
Felix Fietkau
646dfde826 Fix broken implementation of NOEXECSTACK flag for MIPS architectures for gcc-linaro-4.8
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
2014-10-05 15:21:30 +00:00
Felix Fietkau
749d865aa4 gcc: gcc 4.9.x disable libsanitize
gcc 4.9.x enables building of libsanitize

- libsanitize needs some headers that are not available
  in uclibc (netrom/netrom.h)

according to buildroot project:
- build fail with musl
- need wordexp with uclibc which increases uclibc size
http://git.buildroot.net/buildroot/commit/?id=5f4d658d888b539de9a6247ae5b1a0999de5d4ec
http://git.buildroot.net/buildroot/commit/?id=554e29e267e6b36a0fd78c82cbad2c82d939eb7f

Signed-off-by: Dirk Neukirchen <dirkneukirchen@web.de>

SVN-Revision: 42767
2014-10-05 14:59:45 +00:00
Felix Fietkau
cb119e2a69 gcc: add 4.9-linaro based on the 2014.09 release
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42706
2014-09-30 21:36:28 +00:00
Felix Fietkau
1637363e95 binutils: select linaro 2.24 version by default
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42705
2014-09-30 21:36:17 +00:00
Felix Fietkau
3959555e29 binutils: update -linaro to 2.24.0-2014.09
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42704
2014-09-30 21:36:12 +00:00
Felix Fietkau
c4fb88720e toolchain: remove another bogus copy of libiberty.a
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42624
2014-09-20 11:11:48 +00:00
Hauke Mehrtens
40dde1ca67 Kconfig: Aesthetic/formatting fixes to toolchain/Config.in.
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
2014-09-13 20:26:51 +00:00
Jonas Gorski
68fcb15f90 toolchain/binutils: do not install host libiberty.a into target lib dir
Binutils target build will pick it up and break build on e.g. arm:

libtool: link: arm-openwrt-linux-uclibcgnueabi-gcc -shared  .libs/archive.o .libs/archures.o .libs/bfd.o .libs/bfdio.o .libs/bfdwin.o .libs/cache.o .libs/coffgen.o .libs/corefile.o .libs/format.o .libs/init.o .libs/libbfd.o .libs/opncls.o .libs/reloc.o .libs/section.o .libs/syms.o .libs/targets.o .libs/hash.o .libs/linker.o .libs/srec.o .libs/binary.o .libs/tekhex.o .libs/ihex.o .libs/stabs.o .libs/stab-syms.o .libs/merge.o .libs/dwarf2.o .libs/simple.o .libs/compress.o .libs/verilog.o .libs/elf32-arm.o .libs/elf32.o .libs/elf-nacl.o .libs/elf-vxworks.o .libs/elf.o .libs/elflink.o .libs/elf-attrs.o .libs/elf-strtab.o .libs/elf-eh-frame.o .libs/dwarf1.o .libs/elf32-gen.o .libs/cpu-arm.o   -L/mnt/dl/slave/at91/build/staging_dir/target-arm_arm926ej-s_uClibc-0.9.33.2_eabi/usr/lib -L/mnt/dl/slave/at91/build/staging_dir/target-arm_arm926ej-s_uClibc-0.9.33.2_eabi/lib -L/mnt/dl/slave/at91/build/staging_dir/toolchain-arm_arm926ej-s_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/usr/lib -L/mnt/dl/slave/at91/build/staging_dir/toolchain-arm_arm926ej-s_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/lib -L/mnt/dl/slave/at91/build/build_dir/target-arm_arm926ej-s_uClibc-0.9.33.2_eabi/binutils-2.24/bfd/../libiberty/pic -liberty -lz  -march=armv5te -mtune=arm926ej-s -mfloat-abi=soft -Wl,-lc -Wl,--as-needed -Wl,-lm -Wl,--no-as-needed   -Wl,-soname -Wl,libbfd-2.24.so -o .libs/libbfd-2.24.so
/mnt/dl/slave/at91/build/staging_dir/toolchain-arm_arm926ej-s_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/lib/libiberty.a: could not read symbols: File format not recognized

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 42430
2014-09-07 09:38:10 +00:00
Felix Fietkau
4e074eac21 toolchain/musl: update to version 1.1.4
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 41954
2014-08-02 20:27:52 +00:00
John Crispin
96a4d6fb54 octeon: select gcc 4.6 by default
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 41843
2014-07-27 14:52:00 +00:00
Luka Perkov
8e4f0ec38d toolchain/gcc: pass proper flags for arm hard float build
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
2014-07-14 20:28:53 +00:00
Felix Fietkau
9c51ab13d3 toolchain: switch back to uClibc for octeon, it actually works now
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 41576
2014-07-10 20:48:31 +00:00
Felix Fietkau
7a324ed4c1 uClibc: fix copy&pasted typo in the stat fix
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 41573
2014-07-10 20:14:58 +00:00
Felix Fietkau
ded4c0675d uClibc: add a whole bunch of mips64 related fixes
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 41570
2014-07-10 19:28:45 +00:00
Felix Fietkau
a44b4e3ffb gcc: backport a fix for issues with accessing weak data references
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 41569
2014-07-10 19:28:40 +00:00
John Crispin
1aeb77b9ee toolchain: only default eglibc for octeon and not all of mips64
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 41559
2014-07-10 19:16:09 +00:00
Felix Fietkau
0a30b910e4 musl: add sgidefs.h
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 41399
2014-06-29 22:25:51 +00:00
Felix Fietkau
d7cf23694e musl: add a few more glibc types to includes
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 41398
2014-06-29 22:25:46 +00:00
Felix Fietkau
4beaccc7d0 musl: remove fake glibc defines
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 41396
2014-06-29 22:25:40 +00:00
Felix Fietkau
4618044a52 musl: update to version 1.1.3
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 41394
2014-06-29 22:25:32 +00:00
Felix Fietkau
e602a4d4ea eglibc: temporarily disable parallel build until fixed
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 41374
2014-06-29 11:03:42 +00:00
John Crispin
f98b58fcec toolchain: make the default eglibc selection work even if TOOLCHAINOPTS is not enabled
default config build fail on octeon without this.

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 41273
2014-06-19 14:13:16 +00:00