Browse Source

docs: cleanup directory, fix some porting information

Waldemar Brodkorb 6 years ago
parent
commit
dc7ad97385
6 changed files with 4 additions and 528 deletions
  1. 0 110
      docs/man/arc4random.3
  2. 0 73
      docs/man/ldconfig.8
  3. 0 17
      docs/man/ldd.1
  4. 4 15
      docs/porting.txt
  5. 0 64
      docs/probe_math_exception.c
  6. 0 249
      docs/sigaction.txt

+ 0 - 110
docs/man/arc4random.3

@@ -1,110 +0,0 @@
-.\" $OpenBSD: arc4random.3,v 1.19 2005/07/17 08:50:55 jaredy Exp $
-.\"
-.\" Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"      This product includes software developed by Niels Provos.
-.\" 4. The name of the author may not be used to endorse or promote products
-.\"    derived from this software without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" Manual page, using -mandoc macros
-.\"
-.Dd April 15, 1997
-.Dt ARC4RANDOM 3
-.Os
-.Sh NAME
-.Nm arc4random ,
-.Nm arc4random_stir ,
-.Nm arc4random_addrandom
-.Nd arc4 random number generator
-.Sh SYNOPSIS
-.Fd #include <stdlib.h>
-.Ft uint32_t
-.Fn arc4random "void"
-.Ft void
-.Fn arc4random_stir "void"
-.Ft void
-.Fn arc4random_addrandom "u_char *dat" "int datlen"
-.Sh DESCRIPTION
-The
-.Fn arc4random
-function provides a high quality 32-bit pseudo-random
-number very quickly.
-.Fn arc4random
-seeds itself on a regular basis from the kernel strong random number
-subsystem described in
-.Xr random 4 .
-On each call, an ARC4 generator is used to generate a new result.
-The
-.Fn arc4random
-function uses the ARC4 cipher key stream generator,
-which uses 8*8 8-bit S-Boxes.
-The S-Boxes can be in about (2**1700) states.
-.Pp
-.Fn arc4random
-fits into a middle ground not covered by other subsystems such as
-the strong, slow, and resource expensive random
-devices described in
-.Xr random 4
-versus the fast but poor quality interfaces described in
-.Xr rand 3 ,
-.Xr random 3 ,
-and
-.Xr drand48 3 .
-.Pp
-The
-.Fn arc4random_stir
-function reads data from a pseudo-random device, usually
-.Pa /dev/urandom,
-and uses it to permute the S-Boxes via
-.Fn arc4random_addrandom .
-.Pp
-There is no need to call
-.Fn arc4random_stir
-before using
-.Fn arc4random ,
-since
-.Fn arc4random
-automatically initializes itself.
-.Sh SEE ALSO
-.Xr rand 3 ,
-.Xr rand48 3 ,
-.Xr random 3
-.Sh HISTORY
-An algorithm called
-.Pa RC4
-was designed by RSA Data Security, Inc.
-It was considered a trade secret.
-Because it was a trade secret, it obviously could not be patented.
-A clone of this was posted anonymously to USENET and confirmed to
-be equivalent by several sources who had access to the original cipher.
-Because of the trade secret situation, RSA Data Security, Inc. can do
-nothing about the release of the ARC4 algorithm.
-Since
-.Pa RC4
-used to be a trade secret, the cipher is now referred to as
-.Pa ARC4 .
-.Pp
-These functions first appeared in
-.Ox 2.1 .

+ 0 - 73
docs/man/ldconfig.8

@@ -1,73 +0,0 @@
-.TH LDCONFIG 8 2005-08-15 uClibc "Linux Programmer's Manual"
-.SH NAME
-ldconfig \- updates symlinks and cache for shared libraries
-.SH SYNOPSIS
-.B ldconfig
-[
-.B -DvqnNX
-] [
-.B -f conf
-] [
-.B -C cache
-] [
-.B -r root
-] 
-.B dir ...
-.br
-.B ldconfig -l
-[
-.B -Dv
-] 
-.B lib ...
-.br
-.B ldconfig -p
-.SH DESCRIPTION
-.B ldconfig 
-creates the necessary links and cache to the most recent shared libraries 
-found in the directories specified on the command line, in the file 
-\fI/etc/ld.so.conf\fR, and in the default trusted directories (\fI/lib\fR and 
-\fI/usr/lib\fR).  The cache is used by the run-time linker.
-.B ldconfig
-checks the header and file names of the libraries it encounters when 
-determining which versions should have their links updated.
-
-.B Note:
-Some features may not exist depending on how uClibc was built
-.SH OPTIONS
-.TP
-.B -C cache
-use specified \fIcache\fR instead of default
-.TP
-.B -D
-debug mode, do not update links
-.TP
-.B -f conf
-use specified \fIconf\fR instead of default
-.TP
-.B -l
-library mode, manually link libraries
-.TP
-.B -n
-do not process standard trusted directories
-.TP
-.B -N
-do not update the library cache
-.TP
-.B -p
-print the current library cache
-.TP
-.B -q
-quiet mode, do not print warnings you should actually be reading
-.TP
-.B -r root
-chroot to \fIroot\fR before running
-.TP
-.B -v
-verbose mode, print things as we go, and generally be annoying
-.TP
-.B -X
-do not update the library links
-.SH BUGS
-Probably, make sure you complain when you find them:
-.br
-http://bugs.uclibc.org/

+ 0 - 17
docs/man/ldd.1

@@ -1,17 +0,0 @@
-.TH LDD 1 2005-08-15 uClibc "Linux Programmer's Manual"
-.SH NAME
-ldd \- Print shared library dependencies
-.SH SYNOPSIS
-.B ldd
-[
-.B OPTIONS
-]
-.B FILE ...
-.SH DESCRIPTION
-Prints shared library dependencies.
-.SH OPTIONS
-None actually, we lied about that part.
-.SH BUGS
-Probably, make sure you complain when you find them:
-.br
-http://bugs.uclibc.org/

+ 4 - 15
docs/PORTING → docs/porting.txt

@@ -56,12 +56,6 @@ you are hacking on.
   usually these are written in assembler, but you may be able to cheat and
   write them in C ... see other ports for more information
 
-====================
-=== pthread deps ===
-====================
-
-TODO: nptl / linuxthreads / linuxthreads.old
-
 ====================
 === ldso sysdeps ===
 ====================
@@ -72,17 +66,12 @@ TODO: nptl / linuxthreads / linuxthreads.old
 
 - enable ldso/shared options in your extra/Configs/Config.ARCH file
 - you will need to create the following files in ldso/ldso/ARCH/
-  dl-debug.h  dl-startup.h  dl-syscalls.h  dl-sysdep.h  elfinterp.c  resolve.S
-
-- dl-debug.h: define string versions of all the relocations of your arch in the
-  _dl_reltypes_tab array ... the index should match the actual reloc type, so
-  if the value of say R_X86_64_PC16 is 13, then "R_X86_64_PC16" better be at
-  index 13 of the array
+  dl-startup.h  dl-syscalls.h  dl-sysdep.h  elfinterp.c  resolve.S
 
 - dl-startup.h:
   - define the _start function which should call _dl_start which takes just one
     parameter ... a pointer to argc (usually on the stack)
-    glibc stores this function in libc/sysdeps/ARCH/dl-machine.h as RTLD_START
+    glibc stores this function in sysdeps/ARCH/dl-machine.h as RTLD_START
   - define the GET_ARGV() macro which calculates the value of argv based upon
     the parameter passed to _dl_start (usually it's simply just ARGS+1)
   - define PERFORM_BOOTSTRAP_RELOC() macro which will handle just the relocs
@@ -105,7 +94,7 @@ TODO: nptl / linuxthreads / linuxthreads.old
   - define elf_machine_type_class() macro
   - define the inline functions elf_machine_dynamic, elf_machine_load_address,
     and elf_machine_relative
-  glibc stores a bunch of these values in libc/sysdeps/ARCH/dl-machine.h
+  glibc stores a bunch of these values in sysdeps/ARCH/dl-machine.h
 
 - elfinterp.c:
   define all the relocation functions ... it's best if you just copy from
@@ -119,7 +108,7 @@ TODO: nptl / linuxthreads / linuxthreads.old
   - call _dl_linux_resolver()
   - clean up after call
   - jump to function address now stored in PLT
-  glibc stores this function in libc/sysdeps/ARCH/dl-trampoline.S
+  glibc stores this function in sysdeps/ARCH/dl-trampoline.S
 
 - utils/ldd.c - if you want support for ldso cache files (spoiler: you do),
   then you'll need to teach ldd a little.  generally, the fallback code

+ 0 - 64
docs/probe_math_exception.c

@@ -1,64 +0,0 @@
-/* Small test program for probing how various math functions
- * with specific operands set floating point exceptions
- */
-
-#define _ISOC99_SOURCE 1
-#define _GNU_SOURCE    1
-
-#include <stdint.h>
-#include <math.h>
-#include <fenv.h>
-#include <stdio.h>
-
-int main(int argc, char **argv)
-{
-	float largest, small, t, inf_float;
-
-	largest = small = 1;
-	while (1) {
-		t = largest + small;
-		/* optimizations may make plain "t == largest" unreliable */
-		if (memcmp(&t, &largest, sizeof(float)) == 0)
-			break;
-		if (isfinite(t)) {
-			largest = t;
-			small *= 2;
-			continue;
-		}
-		small /= 2;
-	}
-	inf_float = largest + largest;
-	//printf("%.40g ", largest);
-	//printf("[%llx]\n", (long long) (*(uint32_t *)&largest));
-
-	feclearexcept(FE_ALL_EXCEPT);
-
-	//t = 1.0 / 0.0; // simple test: FE_DIVBYZERO
-	//t = nextafterf(largest, 1); // glibc 2.8: no math exceptions raised
-	//t = nextafterf(largest, largest); // glibc 2.8: no math exceptions raised
-	//t = nextafterf(largest, inf_float); // glibc 2.8: FE_INEXACT FE_OVERFLOW
-
-#define PREX(ex) do { if (fetestexcept(ex)) printf(#ex " "); } while(0)
-#ifdef FE_INEXACT
-	PREX(FE_INEXACT);
-#endif
-#ifdef FE_DIVBYZERO
-	PREX(FE_DIVBYZERO);
-#endif
-#ifdef FE_UNDERFLOW
-	PREX(FE_UNDERFLOW);
-#endif
-#ifdef FE_OVERFLOW
-	PREX(FE_OVERFLOW);
-#endif
-#ifdef FE_INVALID
-	PREX(FE_INVALID);
-#endif
-	if (fetestexcept(FE_ALL_EXCEPT))
-		printf("\n");
-	else
-		printf("no math exceptions raised\n");
-
-	printf("%.40g\n", t);
-	return 0;
-}

+ 0 - 249
docs/sigaction.txt

@@ -1,249 +0,0 @@
-	All what you never wanted to know about sigaction(),
-	struct sigaction, and sigset_t.
-
-
-Before vda started messing with sigset_t, struct sigaction
-and sigaction() functions, things looked this way:
-
-
-	Structures
-
-MIPS:
-
-Ignoring bogus "#if defined(__mips__) ..." block in
-libc/sysdeps/linux/common/bits/kernel_sigaction.h
-and using
-libc/sysdeps/linux/mips/bits/kernel_sigaction.h
-as an authoritative source:
-
-HAVE_SA_RESTORER is #defined
-struct old_kernel_sigaction {
-        unsigned      sa_flags;
-        sighandler_t  k_sa_handler;
-        unsigned long sa_mask;
-        unsigned      pad0[3]; /* reserved, keep size constant */
-        /* Abi says here follows reserved int[2] */
-        void          (*sa_restorer)(void);
-#if (_MIPS_SZPTR < 64)
-        /* For 32 bit code we have to pad struct sigaction to get
-         * constant size for the ABI */
-        int           pad1[1]; /* reserved */
-#endif
-};
-struct kernel_sigaction {
-        unsigned int  sa_flags;
-        sighandler_t  k_sa_handler;
-        kernel_sigset_t sa_mask;
-        void          (*sa_restorer)(void);
-        int           s_resv[1]; /* reserved */
-};
-struct sigaction {
-	unsigned      sa_flags;
-	sighandler_t  sa_handler;
-	sigset_t      sa_mask;
-	/* The ABI says here are two unused ints following. */
-	/* Restore handler.  */
-	void          (*sa_restorer)(void);
-#if _MIPS_SZPTR < 64
-	int           sa_resv[1];
-#endif
-};
-
-IA64:
-
-Has no old_sigaction. What a relief.
-
-struct kernel_sigaction {
-        sighandler_t  k_sa_handler;
-        unsigned long sa_flags;
-        sigset_t      sa_mask;
-};
-struct sigaction {
-	sighandler_t  sa_handler;
-	unsigned long sa_flags;
-	sigset_t      sa_mask;
-};
-
-Alpha:
-
-struct old_kernel_sigaction {
-	sighandler_t  k_sa_handler;
-	unsigned long sa_mask;
-	unsigned      sa_flags;
-};
-struct kernel_sigaction {
-	sighandler_t  k_sa_handler;
-	unsigned      sa_flags;
-	sigset_t      sa_mask;
-};
-struct sigaction {
-	sighandler_t  sa_handler;
-	sigset_t      sa_mask;
-	unsigned      sa_flags;
-};
-
-HPPA:
-
-struct kernel_sigaction {
-	sighandler_t  k_sa_handler;
-	unsigned long sa_flags;
-	sigset_t      sa_mask;
-};
-struct sigaction {
-	sighandler_t  sa_handler;
-	unsigned long sa_flags;
-	sigset_t      sa_mask;
-};
-
-The rest, kernel side:
-
-HAVE_SA_RESTORER #defined
-struct old_kernel_sigaction {
-	sighandler_t  k_sa_handler;
-	unsigned long sa_mask;
-	unsigned long sa_flags;
-	void          (*sa_restorer)(void);
-};
-struct kernel_sigaction {
-	sighandler_t  k_sa_handler;
-	unsigned long sa_flags;
-	void          (*sa_restorer)(void);
-	sigset_t      sa_mask;
-};
-
-On userspace side, Sparc has special struct sigaction:
-
-struct sigaction {
-	sighandler_t  sa_handler;
-	sigset_t      sa_mask;
-	unsigned long sa_flags;
-	void          (*sa_restorer)(void); /* Not used by Linux/Sparc */
-};
-
-And finally the rest has:
-
-struct sigaction {
-	sighandler_t  sa_handler;
-	sigset_t      sa_mask;
-	int           sa_flags;
-	void          (*sa_restorer)(void);
-};
-
-Userspace sigset_t was uniformly defined as vector of longs
-big enough to hold 1024 (!) bits - carried over from glibc.
-Since the only arch whose struct kernel_sigaction contains sa_mask
-not as a last member is MIPS, MIPS has special kernel_sigset_t,
-which is an array of longs long enough for 128 bits.
-Other arches still used userspace sigset_t in struct kernel_sigaction,
-but it did not really matter because overlong kernel_sigaction
-does not hurt in sigaction() [explained below].
-On kernel side, all arches define _NSIG to 65 (meaning
-there are 64 signals, 1..64) except MIPS, which define it to 129.
-
-
-	Functions
-
-sigaction() [libc function] usually has two kernel_sigaction's
-on stack and copy (userspace) struct sigaction members into
-first one, executes syscall, then pulls out the result from
-second one. This accomodates differences in layouts of structs.
-
-The only typically present quirk is what to do with sa_restorer.
-
-    libc/sysdeps/linux/arm/sigaction.c
-
-if HAVE_SA_RESTORER and (sa_flags & SA_RESTORER) is not set,
-sets sa_restorer to
-(flags & SA_SIGINFO) ? __default_rt_sa_restorer : __default_sa_restorer,
-and sets SA_RESTORER,
-otherwise passes it as-is. Which is kinda strange, because AFAICS
-HAVE_SA_RESTORER is *not* defined for ARM.
-
-    libc/sysdeps/linux/i386/sigaction.c
-
-Forcibly sets SA_RESTORER and sa_restorer:
-kact.sa_flags = act->sa_flags | SA_RESTORER;
-kact.sa_restorer = ((act->sa_flags & SA_SIGINFO) ? &restore_rt : &restore);
-
-    libc/sysdeps/linux/x86_64/sigaction.c
-
-Forcibly sets SA_RESTORER and sa_restorer:
-kact.sa_flags = act->sa_flags | SA_RESTORER;
-kact.sa_restorer = &restore_rt;
-
-    libc/sysdeps/linux/mips/sigaction.c
-
-# ifdef HAVE_SA_RESTORER
-#  if _MIPS_SIM == _ABIO32
-                kact.sa_restorer = act->sa_restorer;
-#  else
-                kact.sa_restorer = &restore_rt;
-#  endif
-# endif
-No confusion here, HAVE_SA_RESTORER is #defined for MIPS
-
-    libc/sysdeps/linux/avr32/sigaction.c
-
-if (kact.sa_flags & SA_RESTORER) {
-        kact.sa_restorer = act->sa_restorer;
-} else {
-        kact.sa_restorer = __default_rt_sa_restorer;
-	kact.sa_flags |= SA_RESTORER;
-}
-Does not check HAVE_SA_RESTORER, but avr32 falls
-in "completely ordinary" category on both kernel and
-userspace sides, and those have it defined.
-
-    libc/sysdeps/linux/xtensa/sigaction.c
-
-if (kact.sa_flags & SA_RESTORER) {
-        kact.sa_restorer = act->sa_restorer;
-} else {
-        kact.sa_restorer = __default_sa_restorer;
-	kact.sa_flags |= SA_RESTORER;
-}
-Thus, similar to avr32.
-
-    libc/signal/sigaction.c (i.e. the all other arches)
-
-# ifdef HAVE_SA_RESTORER
-        kact.sa_restorer = act->sa_restorer;
-# endif
-Plain translation, just sa_restorer copy is protected
-by HAVE_SA_RESTORER #define check. Looks like here
-HAVE_SA_RESTORER will be undef'ed only for IA64,
-Alpha an HPPA.
-
-
-	Proposed overhaul past 0.9.30
-
-Since we can define libc-side structures at will:
-make sigset_t and struct sigaction identical on kernel side and libc side
-within each arch. If arches do not need special handling of sa_restorer,
-then sigaction() can directly use passed struct sigaction as-is.
-Otherwise, a copy is still needed, although sigaction() might have
-just one struct kernel_sigaction on stack and use it both for passing
-data to kernel and for receiving it back. Might save a few bytes.
-
-To this effect:
-
-* Make sigset_t size match kernel side on all arches.
-  This is easy since all arches have 64 signals and only MIPS has 128.
-
-* Modify libc/sysdeps/linux/$ARCH/bits/sigaction.h
-  so that its struct sigaction matches kernel's. If sa_restorer
-  field is present in libc but is missing in kernel_sigaction,
-  add it at the bottom in order to not mess up kernel_sigaction layout.
-
-* Modify libc/sysdeps/linux/$ARCH/sigaction.c
-  to implement the logic above. In "common" pseudo-arch
-  (libc/signal/sigaction.c file),
-  we would not even need to do any copying, as described above.
-
-* Document discovered arch quirks while debugging this mess.
-
-* struct old_kernel_sigaction can't be disposed of in a similar way,
-  we need to have userspace struct sigaction unchanged regardless
-  whether we use "old" or "new" kernel sigaction() syscall.
-  It's moot anyway because "old" one is long unused, it's from
-  pre-2.2 kernels.