No description
Find a file
Jo-Philipp Wich ef1cafa736 build: fix invocation of bundled ld.so in SDK and Imagebuilder
Commit 72d751cba9 "build: rework library bundling" introduced a new helper
binary "runas" whose sole purpose was mangling the argv vector passed to
the actual called ELF image so that the renamed executable could obtain the
proper name from argv[0].

This approach, however totally defeated the purpose of calling bundled ELF
executables through the shipped ld.so loader since the execv() invocation
performed by "runas" would cause the kernel the interprete the final program
image through the system ELF loader again.

To solve the problem, use an alternative approach of shipping a shared object
"runas.so" which uses an ELF ".init_array" function pointer to obtain the
argv[] vector of the to-be-executed main() function and mangle it in-place.

The actual argv[0] value to use is communicated out-of-band using an
environment variable "RUNAS_ARG0" by the shell wrapper script. The wrapper
script also takes care of setting LD_PRELOAD to instruct the shipped ELF
loader to preload the actual ELF program image with the "runas.so" helper
library.

Fixes FS#909.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-07-21 08:09:45 +02:00
.github github: include pull request template 2017-03-12 17:38:31 +01:00
config build: enable gzipping of images on x86 even if ext4 is disabled 2017-07-06 11:30:33 +02:00
include kernel: do not try to probe builtin modules on empty kmod package install 2017-07-20 12:49:09 +02:00
package base-files: upgrade: don't loop forever trying to kill processes 2017-07-20 21:41:33 +02:00
scripts build: fix invocation of bundled ld.so in SDK and Imagebuilder 2017-07-21 08:09:45 +02:00
target brcm47xx: fix switch port mapping on Asus RT-N12 and RT-N16 models 2017-07-21 08:09:45 +02:00
toolchain toolchain/arc: update to the most recent release arc-2017.03 2017-07-18 23:23:27 +02:00
tools tools: expat: fix build on older host systems 2017-07-18 23:00:45 +02:00
.gitattributes add .gitattributes to prevent the git autocrlf option from messing with CRLF/LF in files 2012-05-08 13:30:49 +00:00
.gitignore gitignore: add /overlay 2017-01-15 18:16:29 +01:00
BSDmakefile add missing copyright header 2007-02-26 01:05:09 +00:00
Config.in branding: add LEDE branding 2016-03-24 22:40:13 +01:00
feeds.conf.default Add video feed to feeds.conf.default 2017-01-25 16:04:39 +01:00
LICENSE finally move buildroot-ng to trunk 2016-03-20 17:29:15 +01:00
Makefile build: prepare config.seed before package compilation 2017-03-18 12:08:04 +01:00
README README: Update project README 2016-05-12 03:29:36 +02:00
rules.mk rules.mk: make PKG_CONFIG_DEPENDS properly track string values 2017-02-27 23:46:53 +01:00

This is the buildsystem for the LEDE Linux distribution.

Please use "make menuconfig" to choose your preferred
configuration for the toolchain and firmware.

You need to have installed gcc, binutils, bzip2, flex, python, perl, make,
find, grep, diff, unzip, gawk, getopt, subversion, libz-dev and libc headers.

Run "./scripts/feeds update -a" to get all the latest package definitions
defined in feeds.conf / feeds.conf.default respectively
and "./scripts/feeds install -a" to install symlinks of all of them into
package/feeds/.

Use "make menuconfig" to configure your image.

Simply running "make" will build your firmware.
It will download all sources, build the cross-compile toolchain, 
the kernel and all choosen applications.

To build your own firmware you need to have access to a Linux, BSD or MacOSX system
(case-sensitive filesystem required). Cygwin will not be supported because of
the lack of case sensitiveness in the file system.


Sunshine!
	Your LEDE Community
	http://www.lede-project.org