Commit Graph

59 Commits

Author SHA1 Message Date
Elliott Hughes
fc9ac9f173 Fix libportable build breakage.
Change-Id: Ic85e36cf55b7486b50fc9f1513f10a8ade5e86e9
2014-06-07 22:24:44 -07:00
Elliott Hughes
caebfa9b50 Fix MIPS build.
We really ought to remove libportable.

Bug: 14903517
Change-Id: Id96b24bfe329096adffd94d452f440295d8aa83a
2014-05-23 14:24:15 -07:00
Pavel Chupin
4120ceca07 Update signal.h from bionic with transition from SIGRTMIN to __SIGRTMIN
Update signal.c for build with old platforms

Change-Id: Ica87465a73004c0885d51e384acd4f42947cc19b
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2014-05-08 15:34:45 +04:00
Brian Carlstrom
fb9c4e0c9f Track transition from SIGRTMIN to __SIGRTMIN
Change-Id: I69064edf1a7e95c91f90d9b05c1cf3f9c8c46747
2014-04-30 17:58:41 -07:00
WenHan Gu
70174f1084 Update libportable to catch up bionic changes.
Note __open should not be used anymore.
Also, fix a x86 fenv bug.

Change-Id: I8430ccfdb7d7685e1ee6e71333d65590c09e3d6c
2014-04-23 21:47:49 +08:00
Elliott Hughes
72af45c116 Insulate libportable from bionic changes.
Really libportable should take its own copy of BSD's <machine/asm.h>,
rather than relying on bionic's hacked-about copies.

Change-Id: I02248045a903dc4ca0d6ed1054ecb1cd54da335e
2014-02-20 11:19:32 -08:00
Elliott Hughes
dfb6545c6b MIPS hasn't supported SA_RESTORER since 2.5 kernels.
Change-Id: Ia3500168ab5ba5ba381d0195e9ecc26a618bf505
2013-11-20 11:34:53 -08:00
Andrew Hsieh
4abacac32d Merge "Fix prototype of poll" 2013-11-04 00:30:46 +00:00
Elliott Hughes
0d86e637f6 Fix build.
Change-Id: If09775ab21fef5b1df0222f07443a55190ae7a1c
2013-10-31 18:41:52 -07:00
Andrew Hsieh
61097c7e51 Fix prototype of poll
from poll(struct pollfd *, nfds_t, long) to
poll(struct pollfd *, nfds_t, int)

See 11952073af22568bba0b661f7a9d4402c443a888
and ebfbb367fb

Change-Id: Idba600d4b172404f0a1d5d715febcba8a495a770
2013-11-01 08:33:08 +08:00
Elliott Hughes
ebfbb367fb Fix incorrect extern declaration of poll(2).
Change-Id: I9ed5136a6b7d20fd0520e09d455a0447ea73e122
2013-10-25 09:07:42 -07:00
Andrew Hsieh
16af6afb9a Refresh include/sys/vfs.h
1. Sync bionic's, remove mips-specific one
2. Fix statfs.c to transfer the new f_flags too
3. Revise comment about --wrap=symbol

Change-Id: If68818e3dcb2a4056cd0b2e100fcfb8b2156c33a
2013-10-07 15:39:47 +08:00
Andrew Hsieh
85f9f76450 Merge "Workaround for libportable wait4 implementation." 2013-07-22 19:11:18 +00:00
Lai Wei-Chih
db279bedd6 [MIPS] Add missing REAL macros.
Change-Id: If396e16a759d90f94213deb536f3d1c9dcb6c132
2013-07-15 10:09:06 +08:00
WenHan Gu
3d4172fa77 Workaround for libportable wait4 implementation.
Follow https://android-review.googlesource.com/#/c/55573 and
this should be revert once being solved.

Change-Id: Ib9dabc1effaf59d541bc80bfce3f250a3d5fc8b2
2013-06-20 12:15:40 +08:00
Lai Wei-Chih
7e7f8b295f Implement optimized __swap16md and __swap32md. 2013-05-15 21:04:52 +08:00
Andrew Hsieh
13dfb24d10 Merge "[MIPS] Cleaned up sig_0 error messages and added a few more checks." 2013-04-07 01:07:31 +00:00
Pete Delaney
b294db4498 [MIPS] Cleaned up sig_0 error messages and added a few more checks.
Change-Id: I316e60d891af99c18fc4b838b35a6d8977d0e7c8
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
2013-04-05 16:00:35 -07:00
Chris Dearman
8663dd74ad [MIPS] Add portable versions of wait(), wait3() and wait4()
Added logging and refactored the code

Change-Id: Idcd2a9e8fbe933d410e9d67f0789fa074e89baef
2013-04-05 15:19:30 -07:00
Lai Wei-Chih
521bcfb17a [libportable] Add fenv support.
Fix ndk/tests/device/fenv.

Change-Id: I46e1b47c3bec5213e827fabe311ef9e29a28195b
2013-03-26 22:09:17 +08:00
Andrew Hsieh
78175cbcc5 Don't use errno directly
errno in MIPS is macro for "*__errno)()".  Use of errno inside
WRAP(__errno)() cause infinite loop.  This may happen in other
wrapper functions which access errno.

Change all error to *REAL(__error)()

Change-Id: I1c09d84a58855bd7896fcd4e70f740b8a0f0b386
2013-03-19 18:06:30 -07:00
Andrew Hsieh
6433ec22b1 Use linker -Wl,--wrap=symbol
Linker --wrap option resolves to __wrap_symbol for undefined symbol.
During the compilation of host libportable.a, __HOST__ is defined
to rename all portable functions to  __wrap_symbol, and the
real function to __real_symbol.  This way libportable.a can be
validated at host w/o changes of user's source code.

See http://sourceware.org/binutils/docs/ld/Options.html

Change-Id: Idcbe53dd642536f3dc2be85a875f95535b9dc0b1
2013-03-18 21:55:39 -07:00
Pete Delaney
858086ef5f [MIPS] Fixed mmap_portable()
mmap_portable() was calling madvise() and disrupting errno.
The call to madvise() has been dropped in bionic's version of
mmap() and now we just call that.

Updated helper functions to use the newer <class>_pton() style.

Added logging calls; like the rest of Lib-Portable,
it frequently helps save time.


Change-Id: I39f77899f0808e3af5fd2f6610355d2e33c09d85
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
2013-02-25 21:45:47 -08:00
Pete Delaney
183963db80 [MIPS] Portable versions of setjmp, sigsetjmp, ...
The portable (ARM) jmp_buf and sigjmp_buf structures are smaller than the native
(MIPS) structures so it is not safe to simply call the standard bionic routines.

Luckily there is a lot of redundant space in the standard MIPS structures
and it is possible to save all of the needed registers in the area provided by the
ARM application.

Change-Id: I694a90516cdf96d581863e833776092830afe3cc
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:07:33 -08:00
Pete Delaney
860342e989 [MIPS] Added support for STDIO sflags().
sflags() returns open() flags via a pointer passed to sflags().

Change-Id: I854dc4302bf09318e97eb3129a8debf98dbe8735
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:06:46 -08:00
Pete Delaney
998548881e [MIPS] Fixed a bug and improved fcntl_portable.
Improved Logging, tweaked func names, fixed double mappings
of mips_command.

While debugging the LTP fcntl07* set of failures I modified
a few ALOGV() calls to make logging more helpful in
fcntl_cmd_pton().

Change-Id: Idc9a7c8dd27883dff1e555769d6a8e331f4fdeb9
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:06:13 -08:00
Pete Delaney
b7b5e9d3fb [MIPS] Extend Signal Mapping to include RT Signals.
Both MIPS and ARM use signals 32 to 64 for real-time signals.
ARM signals 32 to 64 can't be masked due to the signal
mask being limited to 32 bits. MIPS signals 32 to 64 can be
masked, and Lib-Portable correctly supports this feature.

Fixes LTP tests rt_sigaction01 and ptrace05.

Fixed a few signal problems; Ex last Real Time Signal

1.  The signal handler for signal number 64, the last real
    time signal, wasn't being intercepted. Now catching
    signal number 64.

2.  sigaction() to only change *oldact when return
    value is zero.

3.  Fixed rt_sigqueue_portable() to set errno when
    returning a -1.

4.  Fixed a few cases where signal 0 was being added
    to the table of signal handlers for signal remapping.
    Harmless but a bit silly.

Change-Id: I1a71113d7ce4b60f3a587dae4e243dc88dd6d6bc
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:05:46 -08:00
Pete Delaney
c684613e19 [MIPS] Added support for file descriptor related system calls.
Specifically these functions are now supported:
    signalfd4(), eventfd(), timerfd_create(),
    pipe(), and inotify_init1()

Modified syscall_portable() to call signalfd4_portable(),
eventfd_portable(), eventfd2_portable(), and timerfd_create().
These system calls enable the read system calls to access
kernel data structures.

The signalfd4() enables read to return a signalfd_siginfo structure
which have the signal number and errno mapped until an execve().
This is similar to the maintaining a table of signal handlers to
map the signal numbers done earlier. This mapping is extended to
the process after an execve() by passing the final set of mapped
file descriptors via a pair of environment variables.

Disabling signal and file descriptor read mapping in parent
if the child would break the mapping algorithms.

This code passes at least all of the non-POSIX LTP tests,
including an updated LTP signalfd4 test that posts SIGNALS
and uses this read() mechanism to get signal info.

inotify_init1 is similar to signalfd(), timerfd() and other
filefd functions which map read() calls. Unlike signalfd(), and
similar to timerfd(), the reads don't appear to need to be mapped.

The members of the inotify_event structure appear to be generic.
The mask bits like IN_MOVE_FROM and IN_MOVE_TO are defined in
generic files. The LTP test in testcases/kernel/syscalls/inotify
test for the inotify_event structure being inotify_event structure
being read and does seem to check it contents being correct.

Change-Id: I3f2dcd4e33437ac953cd9f67f56dccc6ec6e5e6f
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:05:19 -08:00
Pete Delaney
dbbf0045b6 [MIPS] Fixed LTP Tests 9 and 20 of getaddrinfo_01.
Just mapping struct addrinfo socktype member; everything else is
identical in ARM vs MIPS cpp comparison.

Lots of tests in getaddrinfo_01 fail on Android, but test 9 and 20
were breaking with lib-portable only. This fix corrects that
difference in the test results.

Change-Id: I93c7948cc206ec60b867844857e3e19350c5f5e9
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:04:01 -08:00
Pete Delaney
a89a549987 [MIPS] Added missing _NR_* system call support and cleaned up.
Change-Id: I18499a73ad3732a16edb941c4db9fc2811dfe5d5
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:03:24 -08:00
Pete Delaney
6732a917fd [MIPS] Add Real Time Signal Functions and minor bug fixes.
1. Added:
        rt_sigaction(),
        rt_sigprocmask(), and
        rt_sigtimedwait portable syscalls.

    2. Fixed a bug in signal.c.

    3. Added a new pair of functions to map siginfo_t
       between portable and native formats.

    4. Fixed LTP rt_siqqueueinfo01 and siqqueue() test failures.

    5. Using these new siginfo_t mapping functions in functions
       that were previously doing this functionality internally:
          a. mips_sigaction_handler()
          b. __rt_sigtimedwait_portable()

    6. Modified rt_sigqueueinfo_portable():
      a. Added a call to this new siginfo_pton() function.
      b. Fixed native_sig calculation; it was converting
         with the wrong function (ntop instead of pton).

    7. Added the Thread Group Flavor of Real Time version of
       sigqueueinfo().

    8. Added and tested the sigqueue() implementation thought it's
       not supported by Android yet. Using a LTP library function
       to implement it via syscall for now.  Android has a
       sysconf() regression that will be addressed in a separate
       commit.

    9. Modified some of the variable names in:

          __rt_sigtimedwait_portable()

       to make it easier/faster to read.

    10. Fixed a SIGTERM --> SIGTERM_PORTABLE mapping bug.

Most LTP Posix sigqueue() tests and the rt_sigqueueinfo01() test
now pass with this commit.

Change-Id: I5a2c28c4f5863cc013fe0c7fce819fa5b7a6dcc7
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Douglas Leung <douglas.leung@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:02:52 -08:00
Pete Delaney
4977f77e79 [MIPS] Unify around a consistent *_ntop/*_pton style.
Unifying around the <class>_ntop() style;
changing ntop_*() and pton_* to *_ntop() and *_pton().

Also added portable versions of strerror() and strerror_r()
while updating the errno.c file.

Change-Id: I2a0f40963f293ef9387b0dbcb3426276d301a17c
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:02:09 -08:00
Pete Delaney
2928edfab9 [MIPS] Tighten up code to fit within 100 characters lines.
File poll.c had a wide line and the reason for the asymmetric
mapping of the event flags wasn't obvious on my reviewing
this code. Seemed to justify adding some clarification.

Both signal.c and socket.c were using lengthy function names
for Portable <--> Native mappings. Switch to the newer *_ntop()
style in wide files and made the ALOGV() messages more useful.

Also changed mapping of portable SIGSTKFLT to native SIGEMT
while editing a wide line in the signal.c file.  MIPS has no
SIGSTKFLT signal, nor ARM a signal SIGEMT. Using SIGEMT as a
proxy for SIGSTKFLT_PORTABLE for Lib-Portable applications.
This makes the signal mapping reversible during signal handling.

Fixed ALOGV() Entry/Exit brackets to match.

Change-Id: I9a91992e67ab24322db608424bf69c47fad8e18d
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:01:15 -08:00
Pete Delaney
8930ac5534 [MIPS] Expand TABS and remove redundant return parenthesis.
Also fixed syscall.c to use curly brackets in case
statements to be more like bionic.

Change-Id: I20ffab9a474a2132b47fb4e765966c956aab2aff
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:00:23 -08:00
Pete Delaney
bf03a1b304 [MIPS] Add support for waitpid.
Change-Id: I7b3b90f9a64d40c5aa72c74cac6881f1189c1462
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Pete Delaney  <piet@mips.com>
2012-10-05 02:18:27 -07:00
Pete Delaney
79d42207b8 [MIPS] Add Support pthread library functions.
Signals needed to be mapped.

Change-Id: I946308f17cf7bc945287f716d0da50f515ac8fc4
Signed-off-by: Pete Delaney  <piet@mips.com>\
Signed-off-by: Chris Dearman <chris@mips.com>
2012-10-05 02:18:04 -07:00
Pete Delaney
fbedea894c [MIPS] Add Support clone.
Change-Id: I3320c38e4228ba0aba37fe5af93e6f467c2e1b12
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Pete Delaney  <piet@mips.com>
2012-10-05 02:17:39 -07:00
Pete Delaney
9ea8cc7e99 [MIPS] Updated support for statfs and fstatfs.
Change-Id: I0d8385cdb6599c572b25abae28498166582b33ca
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Pete Delaney  <piet@mips.com>
2012-10-05 02:17:22 -07:00
Pete Delaney
2c4605a5a4 [MIPS] Updated support for stat.
Change-Id: Ica3b92edb6718c19308da7370ced145ccaeb8d6d
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Pete Delaney  <piet@mips.com>
2012-10-05 02:16:59 -07:00
Pete Delaney
e3e0db1051 [MIPS] Updated support for socket and added support for socket_pair.
Socket type can also contain SOCK_NONBLOCK and SOCK_CLOEXEC flags.
NDK headers do not export these values but they seem to be aliases
of O_NONBLOCK and O_CLOEXEC. NDK headers do not define O_CLOEXEC.

Change-Id: If97fcb9f1ff130ea11a0da6452454a256f769809
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Pete Delaney  <piet@mips.com>
2012-10-05 02:16:25 -07:00
Pete Delaney
b10b6f2baf [MIPS] Update Support for fcntl.
Change-Id: I743837793a84e6f4dbbc192b29b19a6eae78a5da
Signed-off-by: Pete Delaney  <piet@mips.com>
Signed-off-by: Chris Dearman <chris@mips.com>
2012-10-05 00:23:49 -07:00
Pete Delaney
9b350a5d22 [MIPS] Add Support for syscall.
Change-Id: Ib9c13ea152fdfe58b36362442eeef88e4a463c31
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Pete Delaney  <piet@mips.com>
2012-10-05 00:23:49 -07:00
Pete Delaney
0d05107265 [MIPS] Add Support timer_create.
Signals needed to be mapped.

Change-Id: Id0748924f16ac6787b87062d774e837a14d1233c
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Pete Delaney  <piet@mips.com>
2012-10-05 00:23:49 -07:00
Pete Delaney
79b607b432 [MIPS] Add Support signal.
Change-Id: Ie2aa6cd24a119f96cd01c6b3d6352f011a0825b5
Signed-off-by: Pete Delaney  <piet@mips.com>
Signed-off-by: Chris Dearman <chris@mips.com>
2012-10-05 00:23:49 -07:00
Pete Delaney
25cabbf92e [MIPS] Add Support errno, Added Logging, sorted Android.mk files.
Change-Id: Ibeeab51feb77be07ea8ccacf2f448bb5135d7373
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Pete Delaney   <piet@mips.com>
2012-10-05 00:23:49 -07:00
Chao-Ying Fu
4cad8d6fdf Support asm/sockios.h for MIPS.
Change-Id: I5ae75b0a8c2ff5698ca46f02bb371e710fb1fee0
2012-08-22 13:37:26 -07:00
Chao-Ying Fu
9f49f16bdf Support getrlimit and setrlimit for MIPS.
Change-Id: Iff030a0eb2444bd1ba75dff9ba6b76c7cf9e0e7d
2012-08-21 17:24:01 -07:00
Chao-Ying Fu
4cd3283046 Support poll for MIPS.
Change-Id: I1299817ea06c9f9ff5701dce0c6166370ef9e87d
2012-08-21 15:27:38 -07:00
Chao-Ying Fu
5f79ffb271 Support fcntl for MIPS with different cmd.
Change-Id: I8d180ab9e18d69f0fd2748ad317319b691a86f35
2012-08-20 18:08:30 -07:00
Chao-Ying Fu
1d34dd0c27 Fix flags to *_PORTABLE in open_portable(), and support openat_portable().
Change-Id: Ib889899250fdfc6e7caded2506228f640fcdff3a
2012-08-20 17:07:27 -07:00