Commit Graph

175 Commits

Author SHA1 Message Date
riastradh
cdb65da578 On ports without __HAVE_LONG_DOUBLE, make fabsl alias fabs.
For some reason, fabs lives in libc, not in libm, and our tests now
detect when fabs or fabsl is missing from libm.  For those ports that
sometimes have long double and sometimes don't, make it conditional.

Still missing: fabs _and_ fabsl on ia64.  Need help from an itanium
wizard!  Other portmasters: Please take a look and see if I missed
any ports that might have long double where this alias will not work.
2018-11-07 22:21:42 +00:00
kamil
5acf460d25 Mark exect(3) obsolete and bind it to plain execve(2) on all platforms
The original exect(2) from BSD4.2 was enabling bit for tracing
(single-step mode) and calling execve(2). The purpose of it was to generate
a signal for a tracer once the application will change its image to a new
program.

This approach no longer works as:
 - exect(2) traces (single-steps) libc and it requires hundreds or
   thousands steps before entering a new image
 - it's vax and x86 specific code
 - this functionality has been moved to the kernel - once a process is
   traced it will generate SIGTRAP with si_code TRAP_EXEC and route it to
   its debugger
 - the side effects and unportability make this interface unusable
 - there are no known users of this interface
 - it apparently never worked better since day0 of NetBSD ("day0 bug")

Users are requested to move to other execve(2) variants. Calling current
execve(2) as it is the most similar behavior to this one from BSD4.2.

Discussed several times on mailing lists and in PR/51700.

Add warning to exect(3) telling about marking this function obsolete.

This function is prepared to be removed in next libc major bump.

Sponsored by <The NetBSD Foundation>
2017-02-07 19:29:39 +00:00
nakayama
63bc5e6959 Include sparc_v8 library into sparc64 32-bit compat libc library. 2014-07-12 19:21:48 +00:00
nakayama
847b247653 Use save instruction to set up a local stack frame.
This fixes a segmentation fault caused by bash 4.3 on sparc64
kernels with 32-bit userland, bash uses _setjmp/_longjmp heavyly
via sigsetjmp/siglongjmp since 4.3.

For 32-bit compat library which is compiled with -mcpu=ultrasparc
option (and define __sparc_v9__), use a similar code to 64-bit
library.
2014-07-12 19:11:57 +00:00
mrg
23d3e330cb convert to full ANSI C. 2013-10-18 02:19:12 +00:00
joerg
4d12bfcd15 Pass PICFLAGS down to cc-as-as and use __PIC__ to decide if it is small
vs big PIC mode. Retire -DPIC and -DBIGPIC.
2013-09-12 15:36:14 +00:00
manu
bba80928a8 setcontext() used to be incompatible with -lpthread since it affected
the TLS pointer, therefore wrecking the pthread environement.

Some ports had _UC_TLSBASE flag or equivalent (_UC_UNIQUE on alpha)
that controlled whether setcontext() would change the TLS pointer.
This change let libpthread override setcontext() with its own version
that unsets _UC_TLSBASE, enabling safe usage of setcontext() with
-lpthread.

We also have the following required changes here:
- rename alpha's _UC_UNIQUE into _UC_TLSBASE
- add _UC_TLSBASE definition in header file for all ports
  (powerpc, sh3, sparc and sparc64 lack the implementation for now)
- introduce a libc stub that can be overriden for setcontext()
- modify MD libcs swapcontext() implementations so that they use the
  setcontext() libc stub instead of doing a plain system call.

While we are there:
- document various MD _UC_* flags in header file
- add libc and libpthread tests for swapcontext() behavior
  (hopefully helpful to spot MD problems introduced with this change)

Future work:
- Deciding whether kernel support or _UC_TLSBASE should be added for
  powerpc, sh3, sparc and sparc64 is left to portmasters
  sparc64

Approved by core@
2012-09-12 02:00:51 +00:00
christos
c2ff854c81 c89 prototypes, unsigned int 2012-03-21 00:38:34 +00:00
christos
de9f2b1f30 void cast 2012-03-21 00:34:04 +00:00
joerg
0a2b758384 Mark _resumecontext as dead. ANSIfy all declarations for it. 2011-09-19 21:24:57 +00:00
martin
251de2dee0 Save a few global registers during set/longjmp - at least the application
registers and the only currently used system register (%g7).
Sparc now passes the setjmp tests (and should be able to build perl again).
2011-04-30 23:41:12 +00:00
mrg
e9f4b70f7d rm -f ${.TARGET} before trying to > write to it; some how mine ended up
being mode 444 and the build failed.
2011-04-12 03:35:47 +00:00
martin
ecf8c9b0f0 ABI police: avoid cluttering global registers %g2 and %g7. Not quite there
yet for %g2, but the target is not very well defined. %g7 should be clean
now.
2011-03-28 11:19:12 +00:00
martin
d2c615416b Avoid using %g7 2011-03-23 20:54:35 +00:00
joerg
1631a78097 Allow storing and receiving the LWP private pointer via ucontext_t
on all platforms except VAX and IA64. Add fast access via register for
AMD64, i386 and SH3 ports. Use this fast access in libpthread to replace
the stack based pthread_self(). Implement skeleton support for Alpha,
HPPA, PowerPC, SPARC and SPARC64, but leave it disabled.

Ports that support this feature provide __HAVE____LWP_GETPRIVATE_FAST in
machine/types.h and a corresponding __lwp_getprivate_fast in
machine/mcontext.h.

This material is based upon work partially supported by
The NetBSD Foundation under a contract with Joerg Sonnenberger.
2011-02-24 04:28:41 +00:00
uebayasi
09afef2063 Rename ${SRCS.{alpha,arm,...}.gen} to ${LSRCS.{alpha,arm,...}.gen} because
they ended up in ${LSRCS}, not ${SRCS}.  ${SRCS.*} namespace will be used
for more useful things.  No functional changes intended.
2009-12-06 07:12:17 +00:00
dsl
a245205b96 Change NO_SRCS lines to specify .S in order to exclude the .c file from
SRCS but add it to LSRCS (sort of makes sense!).
2009-08-11 17:30:43 +00:00
dsl
10ad5ffa71 Add the 'abs', 'div' and 'erand48' sources to stdlib/Makefile.inc.
Change the arch files only include the .S files.
This adds imaxdiv() to some archs where it was missing.
2009-07-31 20:39:59 +00:00
dsl
0d34d14bb9 If SRCS contains any .S files then remove the corresponding .c file from
SRCS and add to LSRCS (for lint).
Change the 'string' Makefiles so that the arch/*/string/Makefile.inc
need only specify the .S files for that architecture and not the .c
files for all the files they don't override.
2009-07-30 20:57:15 +00:00
dsl
6dffe8d42b Remove references to index.c and rindex.c (strchr.c and strrchr.c
now provide the definitions).
2009-07-18 09:44:30 +00:00
martin
c79c3eed1d Make NAN a compile time constant (with help from the compiler). Suggested
by krister. Fixes PR 40695.
Make references to the old construct (which we can't remove for binary
compatibility reasons) emit a linker warning.
2009-02-22 01:34:01 +00:00
nakayama
531d468612 Redo rev.1.13. We must refer to CURBRK via GOT in case of PIC. 2008-11-06 13:42:55 +00:00
mrg
2f0d0e12bf define and use LIBCDIR in terms of .CURDIR. fixes compat/lib/libc build. 2008-10-26 07:43:07 +00:00
matt
cac8e44915 Add C99 functions imaxabs and imaxdiv. 2008-08-04 21:29:27 +00:00
martin
ce099b4099 Remove clause 3 and 4 from TNF licenses 2008-04-28 20:22:51 +00:00
he
71ca0c37fa As mrg@ informs me, delay slots are indented 1 and not 2 spaces. 2008-03-10 18:31:08 +00:00
he
bbed82985f Fix the problem that CURBRK can't be referenced directly via R_SPARC_GOT13
here anymore (apparently libc grew too big).  Use sethi and %hi/%lo instead.
2008-03-10 18:28:43 +00:00
uwe
a34b3f871d In handwritten asm use -fPIC code instead of -fpic, our libc has grown
large enough for GOT to be larger than 8k.

While here kill redundant PIC ifdefs in setjmp.S - sparc "call"
instruction is piccy by itself.

Tested by martin@
2007-10-08 13:06:00 +00:00
martin
1c4ebce529 Provide a full frame stack space in the clone'd child. 2006-12-28 17:46:03 +00:00
martin
55a9a999dd Use CCFSZ instead of 96 for standard save operations. 2006-12-28 10:02:43 +00:00
martin
e56cdf1dd0 Sync all resumecontext.c versions with the changes originally made
by Matthias Drochner to i386 and alpha:

-check for a NULL uc_link before calling setcontext(2); do a real exit(3)
 instead with exit handlers and all that
-If setcontext(2) returns (which it shouldn't), do an _exit(-1) rather
 than relying on a sensible return value to use as exit code. Makes
 it less likely that an ucontext corruption goes unnoticed.
2006-12-08 16:09:02 +00:00
drochner
5ea27734ec build frexp_ieee754 and ldexp_ieee754 in the "compat" subtree
(There is an assembler version of modf which needs to be checked.)
2006-07-03 13:06:12 +00:00
uwe
46daac62de G/c KMSRCS and KMINCLUDES now that we have common/lib/libc 2006-06-17 18:04:23 +00:00
drochner
f81322cf18 build erand48_ieee754.c on everything but vax 2006-03-22 22:03:58 +00:00
kleink
bc89c06cbf Add strtof(3) and strtold(3); welcome libc 12.137. 2006-03-15 17:35:17 +00:00
christos
b1732b7a63 make these consistent. 2006-02-19 05:06:02 +00:00
kleink
804e6c96a2 Add machine-dependent definitions for gdtoa. 2006-01-25 15:33:28 +00:00
martin
2e1a547276 Cosmetics (pointed out by uwe): use trivial restore, not the explicit
version.
2006-01-08 20:03:19 +00:00
martin
286956e76d Use __errno in the _REENTRANT case (pointed out by Valeriy E. Ushakov).
While there, indent some delay slot instructions.
2006-01-08 12:05:33 +00:00
perry
ce666bb8ce __asm__ -> __asm 2005-12-24 23:10:08 +00:00
christos
e5548b402a Use reach-over sources from common/lib/libc 2005-12-20 19:31:47 +00:00
uwe
eb9395f8c7 Switch sparc to the new compat code layout. 2005-10-15 22:11:22 +00:00
martin
b0e34b2bc9 Add missing <compat/include/setjmp.h> 2005-09-14 08:59:37 +00:00
lukem
88c3eadbfa Add missing __RCSID() 2005-06-12 05:21:25 +00:00
uwe
faedc2c4d1 Prettify. Avoid code duplication.
Same object code is generated.
2005-05-20 23:56:15 +00:00
jmc
9de49396cd Don't use 'm4' here. Use $TOOL_M4 instead. 2005-04-20 18:26:11 +00:00
kleink
b2cb7fcd8a Push back the descriptions of NaN formats, and descriptions of the
distinction between signalling NaNs and quiet NaNs back into the
machine-dependent headers; treat the implementation of __nanf in the
same spirit.

IEEE 754 leaves the distinction between signalling NaNs and quiet NANs
to the implementation, and unlike our headers used to suggest they're
not identical in the interpretation of the fraction's MSb; in due
course, make those of hppa, mips, sh3, and sh5 reflect reality.
2005-04-15 22:39:10 +00:00
drochner
0341f6a45e the WARN_REFERENCES text "include <signal.h> for correct reference" is pointless
as <signal.h> won't help you, so remove it
2004-03-26 22:15:03 +00:00
drochner
67f778a2c4 fix references to the syscall formerly known as SYS___sigreturn14 2004-03-26 19:36:40 +00:00
pk
5e5e68672c The sc_g1, sc_o0 members in the jmp_buf aren't used. 2004-03-23 18:47:55 +00:00