Age | Commit message (Collapse) | Author |
|
The majority of the byteswap functions are the same across all arches, so
setup a common header to provide definitions if they don't exist. This
allows arches to override only the ones they actually want to implement
with inline assembly.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
Undo my old mistake. I added UCLIBC_INTERNAL define,
but later I realized _LIBC is doing exactly the same thing.
This change converts all usages of UCLIBC_INTERNAL to _LIBC,
removing all instances of UCLIBC_INTERNAL.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
|
Declare common NCS (non-constant syscall) variants and convert the existing
ports over to this.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
Unify all the common syscall defines in syscalls-common.h and scrub all
the duplicated code from relevant ports. This should also make converting
existing ports to INLINE_SYSCALL() much easier as they don't have to get
lost in all the unrelated noise, as well as creating new ports.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
The __syscall_error() function stores the errno value in the edx register
before invoking the __set_errno() macro. When using the pthread library
this macro calls thread_self() to determine the errno location, which might
clobber the edx register. The errno value must be stored in a "real"
variable so the compiler can take care of saving/restoring it if necessary.
Signed-off-by: Ingo van Lil <inguin@gmx.de>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
Make sure each arch has the same complete list to make comparing between
them easier.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
ustat: same, + remove superfluous "conversion"
which does nothing at best, loses high dev bits at worst
i386/bits/kernel_stat.h: update to reflect reality (wider dev_t)
h8300/bits/kernel_stat.h: same
arm/bits/kernel_stat.h: cosmetics to match kernel header to the letter
|
|
update example
libc/sysdeps/linux/i386/bits/mathinline.h:
improve __finite() macro, add __finitef macro
(why they aren't always macros? why aren't they arch independent?)
libm/math_private.h:
much better comments on math_opt_barrier() and math_force_eval()
libm/s_finite[f].c:
improve out-of-line __finite[f]() too (one byte less, yay...)
|
|
test/Rules.mak: don't pass target options to host build
test/math/basic-test.c: fix test build error
patching file test/unistd/errno.c: fix test build warning
|
|
with linux >= 2.6.28)
|
|
|
|
and x86_64 into x86
|
|
and google says only uclibc has it, no users at all.
text data bss dec hex filename
- 229374 1367 11280 242021 3b165 lib/libuClibc-0.9.30-svn.so
+ 229347 1367 11280 241994 3b14a lib/libuClibc-0.9.30-svn.so
|
|
Run tested on i386.
|
|
"Bounds Checking Projects... This project has been abandoned"
for four years at least.
|
|
help it. Code size is the same.
|
|
text data bss dec hex filename
- 44 0 4 48 30 libc/sysdeps/linux/i386/brk.o
+ 42 0 4 46 2e libc/sysdeps/linux/i386/brk.o
|
|
fix _NSIG for it.
better document what's going on in sigaction().
seems to not induce any actual code changes (sans mips).
|
|
|
|
|
|
|
|
|
|
|
|
In issue #5554 Michael wrote:
The implementation of sigaction on i386 for older kernels makes the system call using an inline asm element with two flaws:
1. The asm is not marked as depending on the kact structure or modifying the koact structure. Thus, GCC is free to assume these structures need not be kept consistent, allowing it to remove all initialization of kact.
2. The asm allows the signal number to be provided as a memory reference. But this allows GCC to provide a stack-relative operand, which will break because the assembler saves %ebx on the stack before using that operand.
1 didn't use to be a problem in practice because GCC 4.2.* didn't seize the optimization opportunity. GCC 4.3.2, however, optimizes out the "kact.sa_flags = act->sa_flags | SA_RESTORER;" line, so that the kernel sees garbage in sa_flags. This can result in the kernel seeing the SA_RESETHAND flag, causing erratic behaviour in signal dependent programs.
2 becomes an issue if "-fomit-frame-pointer" is provided. In uClibc-0.9.29 it isn't, uClibc-0.9.30-rc2 does use the flag by default.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tested successfully on i386..
|
|
|
|
|
|
|
|
like
o UCLIBC_HAS_GNU_ERROR
o UCLIBC_HAS_BSD_ERR
o UCLIBC_HAS_PTY
o UCLIBC_HAS_GETPT (1)
o UCLIBC_SYSCALL_STUBS
o UCLIBC_SYSCALL_STUB_WARNING
o UCLIBC_LINUX_SPECIFIC (2)
o UCLIBC_BSD_SPECIFIC (3)
o UCLIBC_NTP_LEGACY (4)
o UCLIBC_SV4_DEPRECATED (5)
o UCLIBC_HAVE_REALTIME (6)
o UCLIBC_HAVE_ADVANCED_REALTIME (7)
o UCLIBC_HAVE_EPOLL (8)
o UCLIBC_HAVE_XATTR (9)
o UCLIBC_HAVE_PROFILING (10)
(1) make non-standard getpt optional and implement standard posix_openpt
(2) fstatfs(), inotify_*(), ioperm(), iopl(), madvise(), modify_ldt(),
personality()
ppoll(), setresuid()
(3) mincore(), getdomainname(), setdomainname()
(4) ntp_adjtime(), ntp_gettime() aliases
(5) ustat() [use statfs(2) in your code instead]
(6) All marked as "(REALTIME)" in SUSv3
(7) All marked as "(ADVANCED REALTIME)" in SUSv3
(8) epoll_create(), epoll_ctl(), epoll_wait()
(9) all Extended Attributes
(10) helpers for gcc's -finstrument-functions
- Fixes _dl_exit()
- Implements sleep(3) for !UCLIBC_HAVE_REALTIME
- Implements usleep(3) for !UCLIBC_HAVE_REALTIME
- adds #warning about incorrect posix_fadvise{,64}()
- removes unused and unwanted uselib()
Net outcome is that an allnoconfig with HAVE_SHARED is now about 88k instead
of formerly 130k.
|
|
even if arch overrides smallint size. Makes it easier to spot bugs
on such arches.
|
|
- 79 0 28 107 6b libc/inet/rpc/create_xid.o
+ 76 0 25 101 65 libc/inet/rpc/create_xid.o
- 126 0 4 130 82 libc/misc/assert/__assert.o
+ 123 0 1 124 7c libc/misc/assert/__assert.o
- 648 4 24 676 2a4 libc/misc/internals/__uClibc_main.o
+ 645 4 21 670 29e libc/misc/internals/__uClibc_main.o
- 230 0 4 234 ea libc/stdlib/abort.o
+ 216 0 1 217 d9 libc/stdlib/abort.o
- 129 0 4 133 85 libc/termios/tcgetsid.o
+ 126 0 1 127 7f libc/termios/tcgetsid.o
|
|
in string.h and strings.h. This caught unguarded string ops in
libc/inet/ethers.c __ether_line_w() function.
I will wait for fallout reports for a week or so,
then continue converting more libc_hidden_proto's.
|
|
|
|
- synch F_LINUX_SPECIFIC_BASE related fcntls for all arches
|
|
- pull bits/fcntl.h from glibc (Timo Teräs)
|
|
|
|
a problem where the linker was trying to use the wrong symbol name for the
init function.
Define SYMBOL_PREFIX as _ in Rules.mak for h8300, bfin, i960,
microblaze, and v850. Add -D__UCLIBC_UNDERSCORES__ in CFLAGS for targets
which define SYMBOL_PREFIX as _. Remove defines and undefs from
uClibc_arch_features.h of each target.
Add $(SYMBOL_PREFIX) to __uClibc_init when passed by ld option -init.
|
|
doing double negatives
|
|
On an i386 platform with no rt_sigsuspend syscall (ie: Linux 2.0), compilation will halt on libc/sysdeps/linux/common/sigsuspend.os with a cryptic error message:
"Error: non-constant expression in ".if" statement"
I've investigated and found that the cause is that a literal '0' is being passed into a block of complex assembler macrology that is only prepared to deal with register names - '%eax', etc.
In turn, that seems to be because of a typo in the GCC register constraints. The constraints for 2 and 3-argument syscalls includes a "C" constraint. To gcc, "C" means an SSE floating point constant -- an unlikely element in a syscall. I suspect the author meant to type "S" (%esi).
|
|
from i386 and x86_64.
|
|
else.
- internal_function is only used inside libc, so do not define it in
uClibc_arch_features.h on i386 if we are outside of libc.
|
|
with gcc 4.2. Renaming to make it a bit uncommon name.
|
|
Import INTERNAL_SYSCALL macro for i386 from glibc.
Use above macro in posix_fadvise implementation if an arch defines it.
|