openwrt/scripts
Jo-Philipp Wich 338968a170 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>
(cherry picked from commit ef1cafa736)
2017-12-13 16:23:39 +01:00
..
config scripts/config: properly handle select on symbols with unmet direct dependencies 2016-08-03 20:03:36 +02:00
flashing build: remove absolute path to perl and replace with /usr/bin/env perl 2017-12-13 15:21:02 +01:00
arm-magic.sh scripts/arm-magic.sh: make the generated kernels also include $IMG_PREFIX 2015-05-28 10:48:23 +00:00
brcmImage.pl scripts: avoid hard-coded paths in scripts 2016-04-28 16:43:28 +02:00
bundle-libraries.sh build: fix invocation of bundled ld.so in SDK and Imagebuilder 2017-12-13 16:23:39 +01:00
checkpatch.pl build: remove absolute path to perl and replace with /usr/bin/env perl 2017-12-13 15:21:02 +01:00
clang-gcc-wrapper build: fix build on Mac OS X 10.9 2013-10-28 15:15:09 +00:00
clean-package.sh build: clean up stale files from a previous build when installing a package build to the staging dir 2013-05-29 10:31:45 +00:00
cleanfile build: remove absolute path to perl and replace with /usr/bin/env perl 2017-12-13 15:21:02 +01:00
cleanpatch build: remove absolute path to perl and replace with /usr/bin/env perl 2017-12-13 15:21:02 +01:00
combined-ext-image.sh build: use mkhash to replace various quirky md5sum/openssl calls 2017-01-05 11:09:12 +01:00
combined-image.sh build: use mkhash to replace various quirky md5sum/openssl calls 2017-01-05 11:09:12 +01:00
config.guess update config.guess & config.sub 2015-11-02 18:12:45 +00:00
config.rpath add config.rpath and link it in autotools.mk if missing, some packages might need it, especially users of lib-link.m4 or iconv.m4 2011-02-27 15:39:27 +00:00
config.sub update config.guess & config.sub 2015-11-02 18:12:45 +00:00
deptest.sh scripts: avoid hard-coded paths in scripts 2016-04-28 16:43:28 +02:00
diffconfig.sh scripts/diffconfig.sh: fix output if TARGET_PER_DEVICE_ROOTFS is set 2016-10-06 22:00:10 +02:00
dl_cleanup.py dl_cleanup: Fix linux blacklist 2015-10-07 10:51:18 +00:00
download.pl scripts/download.pl: print the command used to download files 2017-12-13 15:42:08 +01:00
env env: allow passing a commit message on save 2015-05-01 17:23:15 +00:00
ext-toolchain.sh scripts: Probe external toolchains for libthread-db 2017-12-13 15:28:29 +01:00
feeds feeds: add option to force feed update despite modified files 2017-04-28 17:02:48 +02:00
fixup-makefile.pl build: add FIXUP option for make check 2016-12-17 10:36:45 +01:00
gen-dependencies.sh gen-dependencies.sh: fix handling variations in "file" output 2017-03-01 20:37:36 +01:00
get_source_date_epoch.sh scripts: get_source_date_epoch.sh: fix mercurial support, add mtime fallback 2017-03-01 20:37:36 +01:00
getver.sh scripts/getver.sh: append short git hash based on upstream commit 2017-03-01 20:37:35 +01:00
ipkg-build scripts: ipkg-build: do not require git or svn 2016-08-15 13:33:32 +02:00
ipkg-make-index.sh build: use mkhash to replace various quirky md5sum/openssl calls 2017-01-05 11:09:12 +01:00
kconfig.pl treewide: replace nbd@openwrt.org with nbd@nbd.name 2016-06-07 08:58:42 +02:00
make-ipkg-dir.sh branding: add LEDE branding 2016-03-24 22:40:13 +01:00
md5sum improve support for building on mac os x by improving detection of missing components 2009-01-25 19:00:43 +00:00
metadata.pm scripts/package-metadata.pl: fix kmod pakage dependencies within the SDK 2016-07-07 12:47:04 +02:00
mkhash.c build: add a small standalone utility for calculating md5/sha256 hash 2017-01-05 11:09:12 +01:00
mkits.sh scripts: avoid hard-coded paths in scripts 2016-04-28 16:43:28 +02:00
om-fwupgradecfg-gen.sh treewide: fix shellscript syntax errors/typos 2017-09-13 08:07:39 +02:00
openbsd.sh branding: add LEDE branding 2016-03-24 22:40:13 +01:00
package-metadata.pl scripts/package-metadata.pl: fix overriding conditional dependencies with conditional select 2017-01-11 18:24:39 +01:00
pad_image scripts: avoid hard-coded paths in scripts 2016-04-28 16:43:28 +02:00
patch-kernel.sh scripts/patch-kernel.sh: remove -E flag to preserve empty files touched by patches 2015-08-25 07:46:32 +00:00
patch-specs.sh patch-specs.sh: gcc 3.4.6 has an additional "(OpenWrt-2.0)" after the version tag, cope with that 2012-01-29 20:19:06 +00:00
portable_date.sh scripts: fix GNU data invocation 2016-02-01 10:43:27 +00:00
redboot-script.pl scripts: avoid hard-coded paths in scripts 2016-04-28 16:43:28 +02:00
relink-lib.sh base-files: relink uclibc and libgcc libraries to remove leftovers of the statically linked initial libgcc saves a few kb and gets rid of unused not exported functions as well should also improve the reliability of mklibs 2011-03-01 05:40:38 +00:00
remote-gdb scripts: fix remote-gdb with CONFIG_BUILD_SUFFIX 2016-08-01 22:02:49 +02:00
rstrip.sh rstrip.sh: fix handling variations in "file" output 2017-03-01 20:37:36 +01:00
slugimage.pl use #!/usr/bin/env perl instead of #!/usr/bin/perl in openwrt scripts (fixes #2998) 2008-09-23 18:29:44 +00:00
srecimage.pl treewide: replace jow@openwrt.org with jo@mein.io 2016-06-07 11:42:52 +02:00
strip-kmod.sh scripts/strip-kmod.sh: remove a few extra sections to slightly reduce kernel module size 2016-02-01 13:33:33 +00:00
symlink-tree.sh docs: remove all refrences in Makefiles/scripts 2016-11-30 10:13:14 +01:00
sysupgrade-tar.sh build: rename sysupgrade-nand to sysupgrade-tar 2016-07-29 16:53:03 +02:00
target-metadata.pl scripts: only generate config from feature flag if fully match 2017-12-13 14:48:10 +01:00
timestamp.pl fix timestamp checks for build system paths which have '.svn' in their directory name 2010-04-14 22:21:15 +00:00
ubinize-image.sh scripts/ubinize-image.sh: add support for adding custom partitions 2016-08-31 13:05:19 +02:00