pread/pwrite: handle renamed syscalls in common/ppc/xtensa code

Some arches got this fix, but many did not.  So copy the ifdef logic to
the ones that missed it to fix behavior in linux-2.6+.

URL: https://bugs.busybox.net/show_bug.cgi?id=5258
Reported-by: David Laight <david.laight@aculab.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
pread/pwrite: drop fallback funcs

Linux has provided these functions since the 2.1.x era, so no need to
keep these around.  We'd rather find out when things are missing (and
fix that) than fall back to the unsafe hacks.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Clean up DSBT support

The existing DSBT support relies on the kernel to provide DSBT info
as part of the load maps passed to user space. The problem with this
approach is that the DSBT info is in the dynamic section, so the
kernel must access a userspace mapping of the dynamic section (or
separately read a copy for the kernel) in order to retrieve the
information needed by userspace.

This patch reworks the DSBT support to remove the reliance on DSBT
info coming from the kernel. Instead, ldso reads the info itself from
the dynamic section. One other benefit of this is that it allows the
existing kernel FDPIC loader to also load DSBT binaries.

Signed-off-by: Mark Salter <msalter@redhat.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
ldso: preload standard path library with setuid bit set

For set-user-ID/set-group-ID ELF binaries, only libraries in the standard
search directories that are also set-user-ID must be loaded.
This patch fixes existing logic according to the above statement.
Furthermore if either library setuid bit isn't set or it cannot be found in
the standard search path, the library won't be preloaded but execution go
ahead with default one.

Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
MIPS: Convert __syscall_error() callers to use $a0 for argument

Some callers passed the first argument in $v0, while others used $a0.
Change the callers to use $a0 consistently.

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
MIPS: Use $a0 instead of $v0 for __syscall_error() argument

$a0 is saved across _dl_runtime_resolve(); $v0 is not.  Unfortunately,
__syscall_error() uses $v0 for its argument, not $a0 as is the MIPS ABI
standard.  This means that if lazy binding was used for __syscall_error(),
the errno value in $v0 could get corrupted.

The problem can be easily seen in testcases where syscalls in librt fail;
when librt tries to call __syscall_error() in libc, the argument gets
lost and errno gets set to a bogus value:

    # ./tst-mqueue1 ; echo $?
    mq_receive on O_WRONLY mqd_t did not fail with EBADF: Unknown error 2004684208
    1
    # ./tst-mqueue2 ; echo $?
    mq_timedreceive with too small msg_len did not fail with EMSGSIZE: Unknown error 1997360560
    1
    # ./tst-mqueue4 ; echo $?
    mq_timedsend did not fail with ETIMEDOUT: Unknown error 2008747440
    1

When _dl_runtime_resolve() was taken out of the equation, the same test
cases passed:

    # LD_BIND_NOW=y ./tst-mqueue1 ; echo $?
    0
    # LD_BIND_NOW=y ./tst-mqueue2 ; echo $?
    0
    # LD_BIND_NOW=y ./tst-mqueue4 ; echo $?
    0

Changing __syscall_error() to look at $a0 instead of $v0 fixed the
problem.

(Note that there is also a "__syscall_error.c" file which presumably
uses the standard C calling conventions, but I do not think it is used
on MIPS.)

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
eventfd: Implement eventfd2 and fix eventfd

eventfd: evntfd assumes to take two arguments instead it
should be one evntfd expects two therefore implement both syscalls with
correct parameters

Thanks Eugene Rudoy for reporting it and also providing the patch

Signed-off-by: Khem Raj <raj.khem@gmail.com>
buildsys: fix typo in help

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
libubacktrace: arm: Fix typo in assert

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Update C6X support

This patch updates the C6X support to work with latest uClibc code and
uses reworked DSBT support to allow using kernel FDPIC loader.

Signed-off-by: Mark Salter <msalter@redhat.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
buildsys: clean up libubacktrace linker script handling

Currently, the installed libubacktrace linker script entry always uses
HARDWIRED_ABSPATH semantics, even if HARDWIRED_ABSPATH is disabled:

    $ grep GROUP $PREFIX/mipsel-linux-uclibc/sys-root/usr/lib/libc.so
    GROUP ( libc.so.0 uclibc_nonshared.a AS_NEEDED ( ld-uClibc.so.0 ) )
    GROUP ( AS_NEEDED ( /lib/libubacktrace.so.0 ) )

This causes problems when building a non-sysroot toolchain.

Move the AS_NEEDED insertion into libc/Makefile.in, and add a case to
the HARDWIRED_ABSPATH substitution command so libubacktrace is handled
the same way as the other libraries listed in the script.

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
buildsys: prune pthread bits from arch headers

Pickup the correct version of e.g. local_lim.h as seen on ppc

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
libc: sh: fixed typo in ucontext header

Fixed typo in ucontext header, NFPREG wrongly defined twice instead of
NGREG for general registers and NFPREG for floating point register.

Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com>
Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
ldso: use .arm mode for resolver unconditionally

as per comment in the file.
Fixes runtime with __THUMB_INTERWORK__ enabled.

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
wordexp.c, sysconf.c: include ctype.h for isspace

Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
dirent.h: s:__XOPEN_2K8:__USE_XOPEN2K8:

glibc has it wrong as well

Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
dirent.h: disable getdirentries not provided by uClibc

Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
remove unneeded hiddens for rtime, basename, strtof* and wcstof*

Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
no need for hidden inet_ntoa_r

it is reused within the same file, solve it through a static function

Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
crypt.h: use __const instead of const

Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>