Home | History | Annotate | Download | only in sys
History log of /src/lib/libc/arch/mips/sys/cerror.S
RevisionDateAuthorComments
 1.21  03-Dec-2022  skrll Trailing whitespace
 1.20  06-Feb-2021  simonb For mips n32/n64 explicitly save the GP reg on the stack, and
restore it _after_ the call to __errno(). Fixes sending the
__errno() call off to nowhereland when this code is included
in another library (eg __posix_cerror() in libposix). Failure
picked up by the ATF lib/libposix/posix1/t_rename test.
 1.19  12-Sep-2013  joerg branches: 1.19.18; 1.19.28;
Pass PICFLAGS down to cc-as-as and use __PIC__ to decide if it is small
vs big PIC mode. Retire -DPIC and -DBIGPIC.
 1.18  27-Feb-2012  tsutsui branches: 1.18.2;
Fix pasto.
 1.17  27-Feb-2012  joerg Make __cerror protected to restore ABI leak in older libc versions,
where e.g. librt referenced the copy from libc. This still allows libc
to use PC-relative jumps.
 1.16  17-Jan-2011  matt branches: 1.16.6; 1.16.8;
Make __cerror hidden.
 1.15  03-Sep-2010  matt Pullup fixes from matt-nb5-mips64.
This makes setjmp/longjmp work again.
 1.14  14-Dec-2009  matt Merge from matt-nb5-mips64.
 1.13  07-Aug-2003  agc branches: 1.13.46;
Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22280, verified by myself.
 1.12  07-Feb-2003  cgd looks like nobody ever seriously tried the _REENTRANT version of this
code (which, uh, seems the default for a fresh build)... it wasn't
setting up v1 properly (the instruction to set up v1 was after the
return jump, in "reorder" code... i.e. after the end of the function).
That would break error returns from 64-bit syscalls (e.g. checks
in dd and who knows what else) to see if input or output are pipes.
It looks like the non-_REENTRANT version was broken (on the nathanw-sa
branch) in rev 1.9.2.1 and fixed in 1.9.2.2, but the _REENTRANT version
was never fixed, and the broken bits were merged back on to the trunk.
 1.11  18-Jan-2003  thorpej Merge the nathanw_sa branch.
 1.10  10-Nov-2002  thorpej ABICALLS -> __ABICALLS__
 1.9  13-Dec-2000  simonb branches: 1.9.2;
Remove all the .abicalls assembler directives - "SYS.h" already has that.
 1.8  29-May-2000  castor Make __cerror be LEAF_NOPROFILE. I relies upon having v0 and v1 be unchanged
from the caller. From Ethan Solomita <ethan@geocast.com>
 1.7  14-Jan-1999  kleink branches: 1.7.8;
* On architectures using ELF, and conditionally on those in transition, rename
_ASM_LABEL(cerror) and _ASM_LABEL(curbrk) to _C_LABEL(__cerror) and
_C_LABEL(__curbrk) (or their respective architecture-specific equivalents) to
avoid possible name clashes with identifiers used in user applications.
* Do the same for minbrk on all architectures to avoid a GCC-specific (and
on ELF architectures effectively useless) symbol reference renaming in MI code.
 1.6  25-Jul-1998  jonathan From Arne Juul <arnej@math.ntnu.no>:
Explicilty reload the mips-ABIcall GOT/$gp in cerror().
cerror() gets called from outside libc (e.g., from libposix's rename(),
and if we don't load $t9, cerror() makes wild references using
the libposix $gp and coredumps.
 1.5  17-Sep-1996  jonathan branches: 1.5.4;
* Add Mips ABI changes for ELf shared library support.
From OpenBSD, patched into NetBSD by <bouyer@ensta.fr>.
* Include generic NetBSD/mips <mips/*.h> files, instead of old Sprite names.
 1.4  16-Sep-1996  jonathan Add NetBSD RCSid headers, and change assembly-code LIBC_SCCS id tag string
from "Id:" to "NetBSD:".
 1.3  15-Dec-1994  mycroft More underscores...
 1.2  14-Nov-1994  dean Prepended underscores
 1.1  24-May-1994  glass libc support for mips. libkern hooks are disabled
 1.5.4.1  27-Sep-1998  cgd pull up rev 1.6 from trunk (jonathan).
 1.7.8.1  23-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.9.2.3  20-Nov-2002  wdk Tidy up stack frame
 1.9.2.2  11-Nov-2002  nathanw Catch up to -current
 1.9.2.1  02-Jan-2002  wdk Use __errno() in order to be thread compliant.

Fixes bug in errno1 thread regression test
 1.13.46.5  16-Mar-2010  matt Restore GP before calling __errno() and then do a normal return (since gp is
only used to obtain address of __errno and never used afterwards). Otherwise
since __errno overwrites t3 we would restore a bogus gp value.

Bug reported by Juli Mallett from FreeBSD.
 1.13.46.4  05-Sep-2009  matt LP64 cleanup --> s/la/PTR_LA/
 1.13.46.3  24-Aug-2009  matt Fix an O32'ism. Store the error into the S0 slot, not the arguments array
above us (since that doesn't always exist in NewABI).
 1.13.46.2  18-Aug-2009  matt Cleanup RCSIDs.
Use SYSTRAP instead li v0, SYS_*; syscall since that's what SYSTRAP does.
 1.13.46.1  16-Aug-2009  matt Move to new ABI agnostic mechanisms. Get rid of magic constants.
Use genassym.cf to generate them.
 1.16.8.2  27-Feb-2012  bouyer Pull up following revision(s) (requested by oster in ticket #61):
lib/libc/arch/mips/sys/cerror.S: revision 1.18
Fix pasto.
 1.16.8.1  27-Feb-2012  riz Pull up following revision(s) (requested by joerg in ticket #57):
lib/libc/arch/arm/sys/cerror.S: revision 1.8
lib/libc/arch/vax/SYS.h: revision 1.12
lib/libc/arch/powerpc64/sys/cerror.S: revision 1.3
lib/libc/arch/powerpc64/sys/cerror.S: revision 1.4
lib/libc/arch/i386/sys/cerror.S: revision 1.16
lib/libc/arch/x86_64/sys/cerror.S: revision 1.5
lib/libc/arch/powerpc/sys/cerror.S: revision 1.10
lib/libc/arch/mips/sys/cerror.S: revision 1.17
lib/libc/arch/powerpc/sys/cerror.S: revision 1.9
Make __cerror protected to restore ABI leak in older libc versions,
where e.g. librt referenced the copy from libc. This still allows libc
to use PC-relative jumps.
PowerPC doesn't have CERROR since it never had a.out.
Use _C_LABEL(__cerror) instead.
 1.16.6.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.16.6.1  17-Apr-2012  yamt sync with head
 1.18.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.19.28.1  06-Feb-2021  martin Pull up following revision(s) (requested by simonb in ticket #1199):

lib/libc/arch/mips/sys/cerror.S: revision 1.20

For mips n32/n64 explicitly save the GP reg on the stack, and
restore it _after_ the call to __errno(). Fixes sending the
__errno() call off to nowhereland when this code is included
in another library (eg __posix_cerror() in libposix). Failure
picked up by the ATF lib/libposix/posix1/t_rename test.
 1.19.18.1  06-Feb-2021  martin Pull up following revision(s) (requested by simonb in ticket #1648):

lib/libc/arch/mips/sys/cerror.S: revision 1.20

For mips n32/n64 explicitly save the GP reg on the stack, and
restore it _after_ the call to __errno(). Fixes sending the
__errno() call off to nowhereland when this code is included
in another library (eg __posix_cerror() in libposix). Failure
picked up by the ATF lib/libposix/posix1/t_rename test.

RSS XML Feed