mirror of git://sourceware.org/git/glibc.git
Remove nios2-linux-gnu
GCC 15 (e876acab6cdd84bb2b32c98fc69fb0ba29c81153) and binutils (e7a16d9fd65098045ef5959bf98d990f12314111) both removed all Nios II support, and the architecture has been EOL'ed by the vendor. The kernel still has support, but without a proper compiler there is no much sense in keep it on glibc. Reviewed-by: Florian Weimer <fweimer@redhat.com>
This commit is contained in:
parent
293369689a
commit
82a3991a84
2
NEWS
2
NEWS
|
@ -47,6 +47,8 @@ Deprecated and removed features, and other changes affecting compatibility:
|
|||
to keep the old behavior, where the handler does not stop the process
|
||||
execution.
|
||||
|
||||
* The nios2*-*-linux-gnu configurations are no longer supported.
|
||||
|
||||
Changes to build and runtime requirements:
|
||||
|
||||
* On recent Linux kernels with vDSO getrandom support, getrandom does not
|
||||
|
|
|
@ -354,9 +354,6 @@ class Context(object):
|
|||
'ccopts': '-mabi=32'},
|
||||
{'variant': 'n64',
|
||||
'ccopts': '-mabi=64'}])
|
||||
self.add_config(arch='nios2',
|
||||
os_name='linux-gnu',
|
||||
gcc_cfg=['--enable-obsolete'])
|
||||
self.add_config(arch='or1k',
|
||||
os_name='linux-gnu',
|
||||
gcc_cfg=['--with-multilib-list=mcmov,mhard-float'],
|
||||
|
@ -1321,7 +1318,6 @@ def install_linux_headers(policy, cmdlist):
|
|||
'm68k': 'm68k',
|
||||
'microblaze': 'microblaze',
|
||||
'mips': 'mips',
|
||||
'nios2': 'nios2',
|
||||
'or1k': 'openrisc',
|
||||
'powerpc': 'powerpc',
|
||||
's390': 's390',
|
||||
|
|
|
@ -50,13 +50,6 @@ do_test (void)
|
|||
printf ("\nDone with getcontext()!\n");
|
||||
fflush (NULL);
|
||||
|
||||
/* On nios2 GCC 5 warns that except_mask may be used
|
||||
uninitialized. Because it is always initialized and nothing in
|
||||
this test ever calls setcontext (a setcontext call could result
|
||||
in local variables being clobbered on the second return from
|
||||
getcontext), in fact an uninitialized use is not possible. */
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
|
||||
int mask = fegetexcept ();
|
||||
if (mask != except_mask)
|
||||
{
|
||||
|
@ -67,7 +60,6 @@ do_test (void)
|
|||
|
||||
printf("\nAt end fegetexcept() returned %d, expected: %d.\n",
|
||||
mask, except_mask);
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1 +1,51 @@
|
|||
#include <sysdeps/nios2/sfp-machine.h>
|
||||
#define _FP_W_TYPE_SIZE 32
|
||||
#define _FP_W_TYPE unsigned long
|
||||
#define _FP_WS_TYPE signed long
|
||||
#define _FP_I_TYPE long
|
||||
|
||||
#define _FP_MUL_MEAT_S(R,X,Y) \
|
||||
_FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_D(R,X,Y) \
|
||||
_FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_Q(R,X,Y) \
|
||||
_FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
|
||||
|
||||
#define _FP_MUL_MEAT_DW_S(R,X,Y) \
|
||||
_FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_DW_D(R,X,Y) \
|
||||
_FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_DW_Q(R,X,Y) \
|
||||
_FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
|
||||
|
||||
#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
|
||||
#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
|
||||
#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
|
||||
|
||||
#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
|
||||
#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1
|
||||
#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
|
||||
#define _FP_NANSIGN_S 0
|
||||
#define _FP_NANSIGN_D 0
|
||||
#define _FP_NANSIGN_Q 0
|
||||
|
||||
#define _FP_KEEPNANFRACP 1
|
||||
#define _FP_QNANNEGATEDP 0
|
||||
|
||||
/* This is arbitrarily taken from the PowerPC version. */
|
||||
#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
|
||||
do { \
|
||||
if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
|
||||
&& !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
|
||||
{ \
|
||||
R##_s = Y##_s; \
|
||||
_FP_FRAC_COPY_##wc(R,Y); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
R##_s = X##_s; \
|
||||
_FP_FRAC_COPY_##wc(R,X); \
|
||||
} \
|
||||
R##_c = FP_CLS_NAN; \
|
||||
} while (0)
|
||||
|
||||
#define _FP_TININESS_AFTER_ROUNDING 0
|
||||
|
|
|
@ -1 +1,51 @@
|
|||
#include <sysdeps/nios2/sfp-machine.h>
|
||||
#define _FP_W_TYPE_SIZE 32
|
||||
#define _FP_W_TYPE unsigned long
|
||||
#define _FP_WS_TYPE signed long
|
||||
#define _FP_I_TYPE long
|
||||
|
||||
#define _FP_MUL_MEAT_S(R,X,Y) \
|
||||
_FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_D(R,X,Y) \
|
||||
_FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_Q(R,X,Y) \
|
||||
_FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
|
||||
|
||||
#define _FP_MUL_MEAT_DW_S(R,X,Y) \
|
||||
_FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_DW_D(R,X,Y) \
|
||||
_FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_DW_Q(R,X,Y) \
|
||||
_FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
|
||||
|
||||
#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
|
||||
#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
|
||||
#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
|
||||
|
||||
#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
|
||||
#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1
|
||||
#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
|
||||
#define _FP_NANSIGN_S 0
|
||||
#define _FP_NANSIGN_D 0
|
||||
#define _FP_NANSIGN_Q 0
|
||||
|
||||
#define _FP_KEEPNANFRACP 1
|
||||
#define _FP_QNANNEGATEDP 0
|
||||
|
||||
/* This is arbitrarily taken from the PowerPC version. */
|
||||
#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
|
||||
do { \
|
||||
if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
|
||||
&& !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
|
||||
{ \
|
||||
R##_s = Y##_s; \
|
||||
_FP_FRAC_COPY_##wc(R,Y); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
R##_s = X##_s; \
|
||||
_FP_FRAC_COPY_##wc(R,X); \
|
||||
} \
|
||||
R##_c = FP_CLS_NAN; \
|
||||
} while (0)
|
||||
|
||||
#define _FP_TININESS_AFTER_ROUNDING 0
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
wordsize-32
|
||||
ieee754/soft-fp
|
||||
ieee754/dbl-64
|
||||
ieee754/flt-32
|
|
@ -1,26 +0,0 @@
|
|||
# Copyright (C) 1993-2024 Free Software Foundation, Inc.
|
||||
# This file is part of the GNU C Library.
|
||||
|
||||
# The GNU C Library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
# The GNU C Library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with the GNU C Library. If not, see
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
|
||||
pic-ccflag = -fpic
|
||||
|
||||
# We don't support long doubles as a distinct type. We don't need to set
|
||||
# this variable; it's here mostly for documentational purposes.
|
||||
long-double-fcts = no
|
||||
|
||||
ifeq ($(subdir),soft-fp)
|
||||
sysdep_routines += $(gcc-single-routines) $(gcc-double-routines)
|
||||
endif
|
|
@ -1 +0,0 @@
|
|||
soft-fp
|
|
@ -1,12 +0,0 @@
|
|||
libc {
|
||||
GLIBC_2.21 {
|
||||
__adddf3; __addsf3; __divdf3; __divsf3; __eqdf2; __eqsf2; __extendsfdf2;
|
||||
__fixdfdi; __fixdfsi; __fixsfdi; __fixsfsi;
|
||||
__fixunsdfdi; __fixunsdfsi; __fixunssfdi; __fixunssfsi;
|
||||
__floatdidf; __floatdisf; __floatsidf; __floatsisf;
|
||||
__floatundidf; __floatundisf; __floatunsidf; __floatunsisf;
|
||||
__gedf2; __gesf2; __gtdf2; __gtsf2; __ledf2; __lesf2; __ltdf2; __ltsf2;
|
||||
__muldf3; __mulsf3; __nedf2; __nesf2; __negdf2; __negsf2;
|
||||
__subdf3; __subsf3; __truncdfsf2; __unorddf2; __unordsf2;
|
||||
}
|
||||
}
|
|
@ -1,81 +0,0 @@
|
|||
/* longjmp for Nios II.
|
||||
Copyright (C) 2015-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation; either version 2.1 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <pointer_guard.h>
|
||||
#include <jmpbuf-offsets.h>
|
||||
|
||||
/* __longjmp(jmpbuf, val) */
|
||||
|
||||
ENTRY (__longjmp)
|
||||
mov r2, r5
|
||||
bne r5, zero, 1f
|
||||
movi r2, 1
|
||||
1:
|
||||
#ifdef PTR_DEMANGLE
|
||||
PTR_MANGLE_GUARD (r3)
|
||||
ldw r5, (JB_RA*4)(r4)
|
||||
ldw r6, (JB_SP*4)(r4)
|
||||
PTR_DEMANGLE (r5, r5, r3)
|
||||
PTR_DEMANGLE (r6, r6, r3)
|
||||
#endif
|
||||
|
||||
cfi_def_cfa (r4, 0)
|
||||
cfi_offset (r16, JB_R16*4)
|
||||
cfi_offset (r17, JB_R17*4)
|
||||
cfi_offset (r18, JB_R18*4)
|
||||
cfi_offset (r19, JB_R19*4)
|
||||
cfi_offset (r20, JB_R20*4)
|
||||
cfi_offset (r21, JB_R21*4)
|
||||
cfi_offset (r22, JB_R22*4)
|
||||
cfi_offset (fp, JB_FP*4)
|
||||
#ifdef PTR_DEMANGLE
|
||||
cfi_register (ra, r5)
|
||||
cfi_register (sp, r7)
|
||||
#else
|
||||
cfi_offset (ra, JB_RA*4)
|
||||
cfi_offset (sp, JB_SP*4)
|
||||
#endif
|
||||
ldw r16, (JB_R16*4)(r4)
|
||||
ldw r17, (JB_R17*4)(r4)
|
||||
ldw r18, (JB_R18*4)(r4)
|
||||
ldw r19, (JB_R19*4)(r4)
|
||||
ldw r20, (JB_R20*4)(r4)
|
||||
ldw r21, (JB_R21*4)(r4)
|
||||
ldw r22, (JB_R22*4)(r4)
|
||||
ldw fp, (JB_FP*4)(r4)
|
||||
#ifdef PTR_DEMANGLE
|
||||
mov ra, r5
|
||||
mov sp, r6
|
||||
#else
|
||||
ldw ra, (JB_RA*4)(r4)
|
||||
ldw sp, (JB_SP*4)(r4)
|
||||
#endif
|
||||
cfi_same_value (r16)
|
||||
cfi_same_value (r17)
|
||||
cfi_same_value (r18)
|
||||
cfi_same_value (r19)
|
||||
cfi_same_value (r20)
|
||||
cfi_same_value (r21)
|
||||
cfi_same_value (r22)
|
||||
cfi_same_value (fp)
|
||||
cfi_same_value (ra)
|
||||
cfi_same_value (sp)
|
||||
|
||||
ret
|
||||
END (__longjmp)
|
|
@ -1,2 +0,0 @@
|
|||
/* An instruction which should crash any program is an unused trap. */
|
||||
#define ABORT_INSTRUCTION asm ("trap 31")
|
|
@ -1,25 +0,0 @@
|
|||
/* nios2 definitions for finding objects.
|
||||
Copyright (C) 2021-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _DLFCN_H
|
||||
# error "Never use <bits/dl_find_object.h> directly; include <dlfcn.h> instead."
|
||||
#endif
|
||||
|
||||
#define DLFO_STRUCT_HAS_EH_DBASE 1
|
||||
#define DLFO_STRUCT_HAS_EH_COUNT 0
|
||||
#define DLFO_EH_SEGMENT_TYPE PT_GNU_EH_FRAME
|
|
@ -1,16 +0,0 @@
|
|||
#ifndef _BITS_ENDIANNESS_H
|
||||
#define _BITS_ENDIANNESS_H 1
|
||||
|
||||
#ifndef _BITS_ENDIAN_H
|
||||
# error "Never use <bits/endianness.h> directly; include <endian.h> instead."
|
||||
#endif
|
||||
|
||||
/* Nios II has selectable endianness. */
|
||||
#ifdef __nios2_big_endian__
|
||||
# define __BYTE_ORDER __BIG_ENDIAN
|
||||
#endif
|
||||
#ifdef __nios2_little_endian__
|
||||
# define __BYTE_ORDER __LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#endif /* bits/endianness.h */
|
|
@ -1,52 +0,0 @@
|
|||
/* Copyright (C) 2012-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _FENV_H
|
||||
# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
|
||||
#endif
|
||||
|
||||
/* The Altera specified Nios II hardware FPU does not support exceptions,
|
||||
nor does the software floating-point support. */
|
||||
#define FE_ALL_EXCEPT 0
|
||||
|
||||
/* Nios II supports only round-to-nearest. The software
|
||||
floating-point support also acts this way. */
|
||||
enum
|
||||
{
|
||||
__FE_UNDEFINED = 0,
|
||||
|
||||
FE_TONEAREST =
|
||||
#define FE_TONEAREST 1
|
||||
FE_TONEAREST,
|
||||
};
|
||||
|
||||
/* Type representing exception flags. */
|
||||
typedef unsigned int fexcept_t;
|
||||
|
||||
/* Type representing floating-point environment. */
|
||||
typedef unsigned int fenv_t;
|
||||
|
||||
/* If the default argument is used we use this value. */
|
||||
#define FE_DFL_ENV ((const fenv_t *) -1)
|
||||
|
||||
#if __GLIBC_USE (IEC_60559_BFP_EXT_C23)
|
||||
/* Type representing floating-point control modes. */
|
||||
typedef unsigned int femode_t;
|
||||
|
||||
/* Default floating-point control modes. */
|
||||
# define FE_DFL_MODE ((const femode_t *) -1L)
|
||||
#endif
|
|
@ -1,54 +0,0 @@
|
|||
/* Machine-specific declarations for dynamic linker interface, Nios II version.
|
||||
Copyright (C) 2009-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _LINK_H
|
||||
# error "Never include <bits/link.h> directly; use <link.h> instead."
|
||||
#endif
|
||||
|
||||
/* Registers for entry into PLT on Nios II. */
|
||||
typedef struct La_nios2_regs
|
||||
{
|
||||
uint32_t lr_reg[4]; /* r4 through r7 */
|
||||
uint32_t lr_ra;
|
||||
uint32_t lr_sp;
|
||||
} La_nios2_regs;
|
||||
|
||||
/* Return values for calls from PLT on Nios II. */
|
||||
typedef struct La_nios2_retval
|
||||
{
|
||||
uint32_t lrv_r2;
|
||||
uint32_t lrv_r3;
|
||||
} La_nios2_retval;
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern Elf32_Addr la_nios2_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
|
||||
uintptr_t *__refcook,
|
||||
uintptr_t *__defcook,
|
||||
La_nios2_regs *__regs,
|
||||
unsigned int *__flags,
|
||||
const char *__symname,
|
||||
long int *__framesizep);
|
||||
extern unsigned int la_nios2_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
|
||||
uintptr_t *__refcook,
|
||||
uintptr_t *__defcook,
|
||||
const La_nios2_regs *__inregs,
|
||||
La_nios2_retval *__outregs,
|
||||
const char *symname);
|
||||
|
||||
__END_DECLS
|
|
@ -1,30 +0,0 @@
|
|||
/* Define the machine-dependent type `jmp_buf'. Nios II version.
|
||||
Copyright (C) 1992-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _NIOS2_BITS_SETJMP_H
|
||||
#define _NIOS2_BITS_SETJMP_H 1
|
||||
|
||||
#if !defined(_SETJMP_H) && !defined(_PTHREAD_H)
|
||||
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
|
||||
#endif
|
||||
|
||||
/* Saves r16-r22 (callee-saved, including GOT pointer), fp (frame pointer),
|
||||
ra (return address), and sp (stack pointer). */
|
||||
typedef int __jmp_buf[10];
|
||||
|
||||
#endif /* _NIOS2_BITS_SETJMP_H */
|
|
@ -1,21 +0,0 @@
|
|||
/* Copyright (C) 1999-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#define __WORDSIZE 32
|
||||
#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
#define __WORDSIZE32_SIZE_ULONG 0
|
||||
#define __WORDSIZE32_PTRDIFF_LONG 0
|
|
@ -1 +0,0 @@
|
|||
/* _setjmp is in setjmp.S */
|
|
@ -1 +0,0 @@
|
|||
/* setjmp is in setjmp.S */
|
|
@ -1,174 +0,0 @@
|
|||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/nios2.
|
||||
|
||||
# Nios II big endian is not yet supported.
|
||||
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
|
||||
printf %s "checking for egrep -e... " >&6; }
|
||||
if test ${ac_cv_path_EGREP_TRADITIONAL+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else case e in #(
|
||||
e) if test -z "$EGREP_TRADITIONAL"; then
|
||||
ac_path_EGREP_TRADITIONAL_found=false
|
||||
# Loop through the user's path and test for each of PROGNAME-LIST
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
case $as_dir in #(((
|
||||
'') as_dir=./ ;;
|
||||
*/) ;;
|
||||
*) as_dir=$as_dir/ ;;
|
||||
esac
|
||||
for ac_prog in grep ggrep
|
||||
do
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
|
||||
as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
|
||||
# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
|
||||
# Check for GNU $ac_path_EGREP_TRADITIONAL
|
||||
case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
|
||||
*GNU*)
|
||||
ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
|
||||
#(
|
||||
*)
|
||||
ac_count=0
|
||||
printf %s 0123456789 >"conftest.in"
|
||||
while :
|
||||
do
|
||||
cat "conftest.in" "conftest.in" >"conftest.tmp"
|
||||
mv "conftest.tmp" "conftest.in"
|
||||
cp "conftest.in" "conftest.nl"
|
||||
printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
|
||||
"$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
|
||||
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
|
||||
as_fn_arith $ac_count + 1 && ac_count=$as_val
|
||||
if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
|
||||
# Best one so far, save it but keep looking for a better one
|
||||
ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
|
||||
ac_path_EGREP_TRADITIONAL_max=$ac_count
|
||||
fi
|
||||
# 10*(2^10) chars as input seems more than enough
|
||||
test $ac_count -gt 10 && break
|
||||
done
|
||||
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
||||
esac
|
||||
|
||||
$ac_path_EGREP_TRADITIONAL_found && break 3
|
||||
done
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
|
||||
:
|
||||
fi
|
||||
else
|
||||
ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
|
||||
fi
|
||||
|
||||
if test "$ac_cv_path_EGREP_TRADITIONAL"
|
||||
then :
|
||||
ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
|
||||
else case e in #(
|
||||
e) if test -z "$EGREP_TRADITIONAL"; then
|
||||
ac_path_EGREP_TRADITIONAL_found=false
|
||||
# Loop through the user's path and test for each of PROGNAME-LIST
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
case $as_dir in #(((
|
||||
'') as_dir=./ ;;
|
||||
*/) ;;
|
||||
*) as_dir=$as_dir/ ;;
|
||||
esac
|
||||
for ac_prog in egrep
|
||||
do
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
|
||||
as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
|
||||
# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
|
||||
# Check for GNU $ac_path_EGREP_TRADITIONAL
|
||||
case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
|
||||
*GNU*)
|
||||
ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
|
||||
#(
|
||||
*)
|
||||
ac_count=0
|
||||
printf %s 0123456789 >"conftest.in"
|
||||
while :
|
||||
do
|
||||
cat "conftest.in" "conftest.in" >"conftest.tmp"
|
||||
mv "conftest.tmp" "conftest.in"
|
||||
cp "conftest.in" "conftest.nl"
|
||||
printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
|
||||
"$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
|
||||
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
|
||||
as_fn_arith $ac_count + 1 && ac_count=$as_val
|
||||
if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
|
||||
# Best one so far, save it but keep looking for a better one
|
||||
ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
|
||||
ac_path_EGREP_TRADITIONAL_max=$ac_count
|
||||
fi
|
||||
# 10*(2^10) chars as input seems more than enough
|
||||
test $ac_count -gt 10 && break
|
||||
done
|
||||
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
||||
esac
|
||||
|
||||
$ac_path_EGREP_TRADITIONAL_found && break 3
|
||||
done
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
|
||||
as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
|
||||
fi
|
||||
else
|
||||
ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi ;;
|
||||
esac
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
|
||||
printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
|
||||
EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for big endian" >&5
|
||||
printf %s "checking for big endian... " >&6; }
|
||||
if test ${libc_cv_nios2_be+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else case e in #(
|
||||
e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#ifdef __nios2_big_endian__
|
||||
yes
|
||||
#endif
|
||||
|
||||
_ACEOF
|
||||
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
||||
$EGREP_TRADITIONAL "yes" >/dev/null 2>&1
|
||||
then :
|
||||
libc_cv_nios2_be=yes
|
||||
else case e in #(
|
||||
e) libc_cv_nios2_be=no ;;
|
||||
esac
|
||||
fi
|
||||
rm -rf conftest*
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_nios2_be" >&5
|
||||
printf "%s\n" "$libc_cv_nios2_be" >&6; }
|
||||
if test $libc_cv_nios2_be = yes; then
|
||||
as_fn_error $? "Big endian not supported for Nios II" "$LINENO" 5
|
||||
fi
|
||||
|
||||
printf "%s\n" "#define HIDDEN_VAR_NEEDS_DYNAMIC_RELOC 1" >>confdefs.h
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/nios2.
|
||||
|
||||
# Nios II big endian is not yet supported.
|
||||
AC_CACHE_CHECK([for big endian],
|
||||
[libc_cv_nios2_be],
|
||||
[AC_EGREP_CPP(yes,[#ifdef __nios2_big_endian__
|
||||
yes
|
||||
#endif
|
||||
], libc_cv_nios2_be=yes, libc_cv_nios2_be=no)])
|
||||
if test $libc_cv_nios2_be = yes; then
|
||||
AC_MSG_ERROR([Big endian not supported for Nios II])
|
||||
fi
|
||||
|
||||
AC_DEFINE(HIDDEN_VAR_NEEDS_DYNAMIC_RELOC)
|
|
@ -1,98 +0,0 @@
|
|||
/* Special .init and .fini section support for Nios II.
|
||||
Copyright (C) 2012-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* crti.S puts a function prologue at the beginning of the .init and
|
||||
.fini sections and defines global symbols for those addresses, so
|
||||
they can be called as functions. The symbols _init and _fini are
|
||||
magic and cause the linker to emit DT_INIT and DT_FINI. */
|
||||
|
||||
#include <libc-symbols.h>
|
||||
|
||||
#ifndef PREINIT_FUNCTION
|
||||
# define PREINIT_FUNCTION __gmon_start__
|
||||
#endif
|
||||
|
||||
#ifndef PREINIT_FUNCTION_WEAK
|
||||
# define PREINIT_FUNCTION_WEAK 1
|
||||
#endif
|
||||
|
||||
#if PREINIT_FUNCTION_WEAK
|
||||
weak_extern (PREINIT_FUNCTION)
|
||||
#else
|
||||
.hidden PREINIT_FUNCTION
|
||||
#endif
|
||||
|
||||
.section .init,"ax",@progbits
|
||||
.align 2
|
||||
.global _init
|
||||
.hidden _init
|
||||
.type _init, @function
|
||||
_init:
|
||||
addi sp, sp, -8
|
||||
stw r22, 0(sp)
|
||||
nextpc r22
|
||||
1:
|
||||
movhi r8, %hiadj(_gp_got - 1b)
|
||||
addi r8, r8, %lo(_gp_got - 1b)
|
||||
add r22, r22, r8
|
||||
stw ra, 4(sp)
|
||||
#if PREINIT_FUNCTION_WEAK
|
||||
movhi r2, %got_hiadj(PREINIT_FUNCTION)
|
||||
addi r2, r2, %got_lo(PREINIT_FUNCTION)
|
||||
add r2, r2, r22
|
||||
ldw r2, 0(r2)
|
||||
beq r2, zero, .L5
|
||||
#endif
|
||||
movhi r2, %call_hiadj(PREINIT_FUNCTION)
|
||||
addi r2, r2, %call_lo(PREINIT_FUNCTION)
|
||||
add r2, r2, r22
|
||||
ldw r2, 0(r2)
|
||||
callr r2
|
||||
.L5:
|
||||
|
||||
.section .fini,"ax",@progbits
|
||||
.align 2
|
||||
.global _fini
|
||||
.hidden _fini
|
||||
.type _fini, @function
|
||||
_fini:
|
||||
addi sp, sp, -8
|
||||
stw r22, 0(sp)
|
||||
nextpc r22
|
||||
1:
|
||||
movhi r8, %hiadj(_gp_got - 1b)
|
||||
addi r8, r8, %lo(_gp_got - 1b)
|
||||
stw ra, 4(sp)
|
||||
add r22, r22, r8
|
|
@ -1,49 +0,0 @@
|
|||
/* Special .init and .fini section support for Nios II.
|
||||
Copyright (C) 2012-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* crtn.S puts function epilogues in the .init and .fini sections
|
||||
corresponding to the prologues in crti.S. */
|
||||
|
||||
.section .init,"ax",@progbits
|
||||
ldw ra, 4(sp)
|
||||
ldw r22, 0(sp)
|
||||
addi sp, sp, 8
|
||||
ret
|
||||
|
||||
.section .fini,"ax",@progbits
|
||||
ldw ra, 4(sp)
|
||||
ldw r22, 0(sp)
|
||||
addi sp, sp, 8
|
||||
ret
|
|
@ -1,29 +0,0 @@
|
|||
/* Nios II specific procedures for initializing code.
|
||||
Copyright (C) 2008-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <elf/dl-init.c>
|
||||
|
||||
unsigned int
|
||||
_dl_nios2_get_gp_value (struct link_map *main_map)
|
||||
{
|
||||
ElfW(Dyn) *dyn = main_map->l_ld;
|
||||
for (dyn = main_map->l_ld; dyn->d_tag != DT_NULL; ++dyn)
|
||||
if (dyn->d_tag == DT_NIOS2_GP)
|
||||
return (unsigned int)(dyn->d_un.d_ptr);
|
||||
return 0;
|
||||
}
|
|
@ -1,307 +0,0 @@
|
|||
/* Machine-dependent ELF dynamic relocation inline functions. Nios II version.
|
||||
Copyright (C) 1995-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef dl_machine_h
|
||||
#define dl_machine_h
|
||||
|
||||
#define ELF_MACHINE_NAME "nios2"
|
||||
|
||||
#include <string.h>
|
||||
#include <link.h>
|
||||
#include <dl-tls.h>
|
||||
#include <dl-static-tls.h>
|
||||
#include <dl-machine-rel.h>
|
||||
|
||||
/* Return nonzero iff ELF header is compatible with the running host. */
|
||||
static inline int
|
||||
elf_machine_matches_host (const Elf32_Ehdr *ehdr)
|
||||
{
|
||||
return ehdr->e_machine == EM_ALTERA_NIOS2;
|
||||
}
|
||||
|
||||
|
||||
/* Return the link-time address of _DYNAMIC. Conveniently, this is the
|
||||
first element of the GOT. */
|
||||
static inline Elf32_Addr
|
||||
elf_machine_dynamic (void)
|
||||
{
|
||||
Elf32_Addr *dynamic;
|
||||
int tmp;
|
||||
asm ("nextpc\t%0\n\t"
|
||||
"1: movhi\t%1, %%hiadj(_GLOBAL_OFFSET_TABLE_ - 1b)\n\t"
|
||||
"addi\t%1, %1, %%lo(_GLOBAL_OFFSET_TABLE_ - 1b)\n\t"
|
||||
"add\t%0, %0, %1\n"
|
||||
: "=r" (dynamic), "=r" (tmp));
|
||||
return *dynamic;
|
||||
}
|
||||
|
||||
|
||||
/* Return the run-time load address of the shared object. */
|
||||
static inline Elf32_Addr
|
||||
elf_machine_load_address (void)
|
||||
{
|
||||
Elf32_Addr result;
|
||||
int tmp;
|
||||
asm ("nextpc\t%0\n\t"
|
||||
"1: movhi\t%1, %%hiadj(1b)\n\t"
|
||||
"addi\t%1, %1, %%lo(1b)\n\t"
|
||||
"sub\t%0, %0, %1\n"
|
||||
: "=r" (result), "=r" (tmp));
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Set up the loaded object described by L so its unrelocated PLT
|
||||
entries will jump to the on-demand fixup code in dl-runtime.c. */
|
||||
|
||||
static inline int __attribute__ ((always_inline))
|
||||
elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
|
||||
int lazy, int profile)
|
||||
{
|
||||
extern void _dl_runtime_resolve (Elf32_Word);
|
||||
|
||||
if (l->l_info[DT_JMPREL] && lazy)
|
||||
{
|
||||
/* The GOT entries for functions in the PLT have not yet been filled
|
||||
in. Their initial contents will arrange when called to load r15 with
|
||||
an offset into the .got section, load r14 with
|
||||
_GLOBAL_OFFSET_TABLE_[1], and then jump to _GLOBAL_OFFSET_TABLE[2].
|
||||
*/
|
||||
Elf32_Addr *got = (Elf32_Addr *) D_PTR (l, l_info[DT_PLTGOT]);
|
||||
got[1] = (Elf32_Addr) l; /* Identify this shared object. */
|
||||
|
||||
/* This function will get called to fix up the GOT entry indicated by
|
||||
the offset on the stack, and then jump to the resolved address. */
|
||||
got[2] = (Elf32_Addr) &_dl_runtime_resolve;
|
||||
}
|
||||
|
||||
return lazy;
|
||||
}
|
||||
|
||||
/* Initial entry point code for the dynamic linker.
|
||||
The C function `_dl_start' is the real entry point;
|
||||
its return value is the user program's entry point. */
|
||||
|
||||
#define RTLD_START asm ("\
|
||||
.text\n\
|
||||
.globl _start\n\
|
||||
.type _start, %function\n\
|
||||
_start:\n\
|
||||
/* At start time, all the args are on the stack. */\n\
|
||||
mov r4, sp\n\
|
||||
\n\
|
||||
/* Start the calculation of the GOT pointer. */\n\
|
||||
nextpc r22\n\
|
||||
1: movhi r8, %hiadj(_gp_got - 1b)\n\
|
||||
addi r8, r8, %lo(_gp_got - 1b)\n\
|
||||
\n\
|
||||
/* Figure out where _dl_start will need to return to. */\n\
|
||||
movhi ra, %hiadj(2f - 1b)\n\
|
||||
addi ra, ra, %lo(2f - 1b)\n\
|
||||
add ra, ra, r22\n\
|
||||
\n\
|
||||
/* Finish the calculation of the GOT pointer. */\n\
|
||||
add r22, r22, r8\n\
|
||||
\n\
|
||||
br _dl_start\n\
|
||||
\n\
|
||||
/* Save the returned user entry point. */\n\
|
||||
2: mov r16, r2\n\
|
||||
\n\
|
||||
/* Initialize gp. */\n\
|
||||
ldw r4, %got(_rtld_local)(r22)\n\
|
||||
ldw r4, 0(r4)\n\
|
||||
ldw r8, %call(_dl_nios2_get_gp_value)(r22)\n\
|
||||
callr r8\n\
|
||||
mov gp, r2\n\
|
||||
\n\
|
||||
/* Find the main_map from the GOT. */\n\
|
||||
ldw r4, %got(_rtld_local)(r22)\n\
|
||||
ldw r4, 0(r4)\n\
|
||||
\n\
|
||||
/* Load adjusted argc. */\n\
|
||||
ldw r2, %got(_dl_argc)(r22)\n\
|
||||
ldw r5, 0(r2)\n\
|
||||
\n\
|
||||
/* Load adjusted argv. */\n\
|
||||
ldw r2, %got(_dl_argv)(r22)\n\
|
||||
ldw r6, 0(r2)\n\
|
||||
\n\
|
||||
/* envp = argv + argc + 1 */\n\
|
||||
addi r7, r5, 1\n\
|
||||
slli r7, r7, 2\n\
|
||||
add r7, r7, r6\n\
|
||||
\n\
|
||||
/* Call _dl_init through the PLT. */\n\
|
||||
ldw r8, %call(_dl_init)(r22)\n\
|
||||
callr r8\n\
|
||||
\n\
|
||||
/* Find the finalization function. */\n\
|
||||
ldw r4, %got(_dl_fini)(r22)\n\
|
||||
\n\
|
||||
/* Jump to the user's entry point. */\n\
|
||||
jmp r16\n\
|
||||
");
|
||||
|
||||
/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
|
||||
PLT entries should not be allowed to define the value.
|
||||
ELF_RTYPE_CLASS_COPY iff TYPE should not be allowed to resolve to one
|
||||
of the main executable's symbols, as for a COPY reloc. */
|
||||
#define elf_machine_type_class(type) \
|
||||
((((type) == R_NIOS2_JUMP_SLOT \
|
||||
|| (type) == R_NIOS2_TLS_DTPMOD \
|
||||
|| (type) == R_NIOS2_TLS_DTPREL \
|
||||
|| (type) == R_NIOS2_TLS_TPREL) * ELF_RTYPE_CLASS_PLT) \
|
||||
| (((type) == R_NIOS2_COPY) * ELF_RTYPE_CLASS_COPY))
|
||||
|
||||
/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
|
||||
#define ELF_MACHINE_JMP_SLOT R_NIOS2_JUMP_SLOT
|
||||
|
||||
/* Fixup a PLT entry to bounce directly to the function at VALUE. */
|
||||
|
||||
static inline Elf32_Addr
|
||||
elf_machine_fixup_plt (struct link_map *map, lookup_t t,
|
||||
const ElfW(Sym) *refsym, const ElfW(Sym) *sym,
|
||||
const Elf32_Rela *reloc,
|
||||
Elf32_Addr *reloc_addr, Elf32_Addr value)
|
||||
{
|
||||
return *reloc_addr = value;
|
||||
}
|
||||
|
||||
/* Return the final value of a plt relocation. */
|
||||
static inline Elf32_Addr
|
||||
elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
|
||||
Elf32_Addr value)
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
/* Names of the architecture-specific auditing callback functions. */
|
||||
#define ARCH_LA_PLTENTER nios2_gnu_pltenter
|
||||
#define ARCH_LA_PLTEXIT nios2_gnu_pltexit
|
||||
|
||||
#endif /* dl_machine_h */
|
||||
|
||||
#ifdef RESOLVE_MAP
|
||||
|
||||
/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
|
||||
LOADADDR is the load address of the object; INFO is an array indexed
|
||||
by DT_* of the .dynamic section info. */
|
||||
|
||||
static inline void __attribute__ ((always_inline))
|
||||
elf_machine_rela (struct link_map *map, struct r_scope_elem *scope[],
|
||||
const ElfW(Rela) *reloc, const ElfW(Sym) *sym,
|
||||
const struct r_found_version *version,
|
||||
void *const reloc_addr_arg, int skip_ifunc)
|
||||
{
|
||||
Elf32_Addr *const reloc_addr = reloc_addr_arg;
|
||||
const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
|
||||
|
||||
if (__glibc_unlikely (r_type == R_NIOS2_RELATIVE))
|
||||
*reloc_addr = map->l_addr + reloc->r_addend;
|
||||
else if (__glibc_unlikely (r_type == R_NIOS2_NONE))
|
||||
return;
|
||||
else
|
||||
{
|
||||
const Elf32_Sym *const refsym = sym;
|
||||
struct link_map *sym_map = RESOLVE_MAP (map, scope, &sym, version,
|
||||
r_type);
|
||||
Elf32_Addr value = SYMBOL_ADDRESS (sym_map, sym, true);
|
||||
|
||||
switch (r_type)
|
||||
{
|
||||
case R_NIOS2_COPY:
|
||||
if (sym == NULL)
|
||||
/* This can happen in trace mode if an object could not be
|
||||
found. */
|
||||
break;
|
||||
if (sym->st_size > refsym->st_size
|
||||
|| (sym->st_size < refsym->st_size && GLRO(dl_verbose)))
|
||||
{
|
||||
const char *strtab;
|
||||
|
||||
strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
|
||||
_dl_error_printf ("\
|
||||
%s: Symbol `%s' has different size in shared object, consider re-linking\n",
|
||||
rtld_progname ?: "<program name unknown>",
|
||||
strtab + refsym->st_name);
|
||||
}
|
||||
memcpy (reloc_addr_arg, (void *) value,
|
||||
MIN (sym->st_size, refsym->st_size));
|
||||
break;
|
||||
case R_NIOS2_GLOB_DAT:
|
||||
case R_NIOS2_JUMP_SLOT:
|
||||
# ifdef RTLD_BOOTSTRAP
|
||||
/* Fix weak undefined references. */
|
||||
if (sym != NULL && sym->st_value == 0)
|
||||
*reloc_addr = 0;
|
||||
else
|
||||
# endif
|
||||
*reloc_addr = value;
|
||||
break;
|
||||
#ifndef RTLD_BOOTSTRAP
|
||||
case R_NIOS2_TLS_DTPMOD:
|
||||
/* Get the information from the link map returned by the
|
||||
resolv function. */
|
||||
if (sym_map != NULL)
|
||||
*reloc_addr = sym_map->l_tls_modid;
|
||||
break;
|
||||
|
||||
case R_NIOS2_TLS_DTPREL:
|
||||
*reloc_addr = reloc->r_addend + TLS_DTPREL_VALUE(sym);
|
||||
break;
|
||||
|
||||
case R_NIOS2_TLS_TPREL:
|
||||
if (sym != NULL)
|
||||
{
|
||||
CHECK_STATIC_TLS (map, sym_map);
|
||||
*reloc_addr = reloc->r_addend + TLS_TPREL_VALUE(sym_map, sym);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case R_NIOS2_BFD_RELOC_32:
|
||||
*reloc_addr = value + reloc->r_addend;
|
||||
break;
|
||||
|
||||
default:
|
||||
_dl_reloc_bad_type (map, r_type, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline void __attribute__((always_inline))
|
||||
elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
|
||||
void *const reloc_addr_arg)
|
||||
{
|
||||
Elf32_Addr *const reloc_addr = reloc_addr_arg;
|
||||
*reloc_addr = l_addr + reloc->r_addend;
|
||||
}
|
||||
|
||||
static inline void __attribute__((always_inline))
|
||||
elf_machine_lazy_rel (struct link_map *map, struct r_scope_elem *scope[],
|
||||
ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
|
||||
int skip_ifunc)
|
||||
{
|
||||
Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset);
|
||||
if (ELF32_R_TYPE (reloc->r_info) == R_NIOS2_JUMP_SLOT)
|
||||
*reloc_addr += l_addr;
|
||||
else
|
||||
_dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1);
|
||||
}
|
||||
|
||||
#endif /* RESOLVE_MAP */
|
|
@ -1,45 +0,0 @@
|
|||
/* Thread-local storage handling in the ELF dynamic linker. Nios II version.
|
||||
Copyright (C) 2012-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
|
||||
/* Type used for the representation of TLS information in the GOT. */
|
||||
typedef struct
|
||||
{
|
||||
unsigned long int ti_module;
|
||||
unsigned long int ti_offset;
|
||||
} tls_index;
|
||||
|
||||
/* The thread pointer points 0x7000 past the first static TLS block. */
|
||||
#define TLS_TP_OFFSET 0x7000
|
||||
|
||||
/* Dynamic thread vector pointers point 0x8000 past the start of each
|
||||
TLS block. */
|
||||
#define TLS_DTV_OFFSET 0x8000
|
||||
|
||||
/* Compute the value for a GOTTPREL reloc. */
|
||||
#define TLS_TPREL_VALUE(sym_map, sym) \
|
||||
((sym_map)->l_tls_offset + (sym)->st_value - TLS_TP_OFFSET)
|
||||
|
||||
/* Compute the value for a DTPREL reloc. */
|
||||
#define TLS_DTPREL_VALUE(sym) \
|
||||
((sym)->st_value - TLS_DTV_OFFSET)
|
||||
|
||||
extern void *__tls_get_addr (tls_index *ti);
|
||||
|
||||
# define GET_ADDR_OFFSET (ti->ti_offset + TLS_DTV_OFFSET)
|
||||
# define __TLS_GET_ADDR(__ti) (__tls_get_addr (__ti) - TLS_DTV_OFFSET)
|
|
@ -1,79 +0,0 @@
|
|||
/* PLT trampolines. Nios II version.
|
||||
Copyright (C) 2005-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <libc-symbols.h>
|
||||
|
||||
.text
|
||||
.globl _dl_runtime_resolve
|
||||
cfi_startproc
|
||||
_dl_runtime_resolve:
|
||||
/* The runtime resolver receives the original function arguments in r4
|
||||
through r7, the shared library identifier from GOT[1]? in r14, and the
|
||||
relocation index times four in r15. It updates the corresponding PLT GOT
|
||||
entry so that the PLT entry will transfer control directly to the target
|
||||
in the future, and then transfers control to the target. */
|
||||
/* Save arguments and return address. */
|
||||
subi sp, sp, 28
|
||||
cfi_adjust_cfa_offset (28)
|
||||
stw r22, 24(sp)
|
||||
cfi_rel_offset (r22, 24)
|
||||
stw r8, 20(sp) /* save r8, because this might be a call to mcount */
|
||||
cfi_rel_offset (r8, 20)
|
||||
stw r7, 16(sp)
|
||||
cfi_rel_offset (r7, 16)
|
||||
stw r6, 12(sp)
|
||||
cfi_rel_offset (r6, 12)
|
||||
stw r5, 8(sp)
|
||||
cfi_rel_offset (r5, 8)
|
||||
stw r4, 4(sp)
|
||||
cfi_rel_offset (r4, 4)
|
||||
stw ra, 0(sp)
|
||||
cfi_rel_offset (ra, 0)
|
||||
|
||||
/* Get pointer to linker struct. */
|
||||
mov r4, r14
|
||||
|
||||
/* Get the relocation offset. We're given a multiple of 4 and
|
||||
need a multiple of 12, so multiply by 3. */
|
||||
slli r5, r15, 1
|
||||
add r5, r5, r15
|
||||
|
||||
/* Call the fixup routine. */
|
||||
nextpc r22
|
||||
1: movhi r2, %hiadj(_gp_got - 1b)
|
||||
addi r2, r2, %lo(_gp_got - 1b)
|
||||
add r22, r22, r2
|
||||
ldw r2, %call(_dl_fixup)(r22)
|
||||
callr r2
|
||||
|
||||
/* Restore the arguments and return address. */
|
||||
ldw ra, 0(sp)
|
||||
ldw r4, 4(sp)
|
||||
ldw r5, 8(sp)
|
||||
ldw r6, 12(sp)
|
||||
ldw r7, 16(sp)
|
||||
ldw r8, 20(sp)
|
||||
ldw r22, 24(sp)
|
||||
addi sp, sp, 28
|
||||
cfi_adjust_cfa_offset (-28)
|
||||
|
||||
/* Jump to the newly found address. */
|
||||
jmp r2
|
||||
|
||||
cfi_endproc
|
|
@ -1,20 +0,0 @@
|
|||
/* Determine DT_INIT/DT_FINI support in the dynamic loader. nios2 version.
|
||||
Copyright (C) 2020-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Enable DT_INIT/DT_FINI support. */
|
||||
#define ELF_INITFINI 1
|
|
@ -1,21 +0,0 @@
|
|||
/* Definition of object in frame unwind info. Nios II version.
|
||||
Copyright (C) 2015-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#define FIRST_PSEUDO_REGISTER 40
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
|
@ -1,47 +0,0 @@
|
|||
/* Private macros for accessing __jmp_buf contents. Nios II version.
|
||||
Copyright (C) 2006-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Save offsets within __jmp_buf. */
|
||||
#define JB_R16 0
|
||||
#define JB_R17 1
|
||||
#define JB_R18 2
|
||||
#define JB_R19 3
|
||||
#define JB_R20 4
|
||||
#define JB_R21 5
|
||||
#define JB_R22 6
|
||||
#define JB_FP 7
|
||||
#define JB_RA 8
|
||||
#define JB_SP 9
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
#include <setjmp.h>
|
||||
#include <stdint.h>
|
||||
#include <sysdep.h>
|
||||
#include <pointer_guard.h>
|
||||
|
||||
static inline uintptr_t __attribute__ ((unused))
|
||||
_jmpbuf_sp (__jmp_buf jmpbuf)
|
||||
{
|
||||
uintptr_t sp = jmpbuf[JB_SP];
|
||||
PTR_DEMANGLE (sp);
|
||||
return sp;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Helper for generic ____longjmp_chk(). */
|
||||
#define JB_FRAME_ADDRESS(buf) ((void *) _jmpbuf_sp (buf))
|
|
@ -1,37 +0,0 @@
|
|||
/* Examine __jmp_buf for unwinding frames. Nios II version.
|
||||
Copyright (C) 2005-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <setjmp.h>
|
||||
#include <jmpbuf-offsets.h>
|
||||
#include <stdint.h>
|
||||
#include <unwind.h>
|
||||
|
||||
/* Test if longjmp to JMPBUF would unwind the frame
|
||||
containing a local variable at ADDRESS. */
|
||||
|
||||
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
|
||||
((void *) (address) < (void *) demangle (jmpbuf[JB_SP]))
|
||||
|
||||
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
|
||||
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
|
||||
|
||||
#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
|
||||
((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf_sp (_jmpbuf) - (_adj)))
|
||||
|
||||
/* We use the normal longjmp for unwinding. */
|
||||
#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef NIOS2_LDBL_CLASSIFY_COMPAT_H
|
||||
#define NIOS2_LDBL_CLASSIFY_COMPAT_H 1
|
||||
|
||||
/* Enable __finitel, __isinfl, and __isnanl for binary compatibility
|
||||
when built without long double support. */
|
||||
#define LDBL_CLASSIFY_COMPAT 1
|
||||
|
||||
#endif
|
|
@ -1,43 +0,0 @@
|
|||
/* Run-time dynamic linker data structures for loaded ELF shared objects.
|
||||
Copyright (C) 2000-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _NIOS2_LDSODEFS_H
|
||||
#define _NIOS2_LDSODEFS_H 1
|
||||
|
||||
#include <elf.h>
|
||||
|
||||
struct La_nios2_regs;
|
||||
struct La_nios2_retval;
|
||||
|
||||
#define ARCH_PLTENTER_MEMBERS \
|
||||
ElfW(Addr) (*nios2_gnu_pltenter) (ElfW(Sym) *, unsigned int, \
|
||||
uintptr_t *, uintptr_t *, \
|
||||
const struct La_nios2_regs *, \
|
||||
unsigned int *, const char *, \
|
||||
long int *);
|
||||
|
||||
#define ARCH_PLTEXIT_MEMBERS \
|
||||
unsigned int (*nios2_gnu_pltexit) (ElfW(Sym) *, unsigned int, \
|
||||
uintptr_t *, uintptr_t *, \
|
||||
const struct La_nios2_regs *, \
|
||||
struct La_nios2_retval *, \
|
||||
const char *);
|
||||
|
||||
#include_next <ldsodefs.h>
|
||||
|
||||
#endif
|
|
@ -1,32 +0,0 @@
|
|||
/* Thread-local storage handling in the ELF dynamic linker. Nios II version.
|
||||
Copyright (C) 2005-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <csu/libc-tls.c>
|
||||
#include <dl-tls.h>
|
||||
|
||||
/* On Nios II, linker optimizations are not required, so __tls_get_addr
|
||||
can be called even in statically linked binaries. In this case module
|
||||
must be always 1 and PT_TLS segment exist in the binary, otherwise it
|
||||
would not link. */
|
||||
|
||||
void *
|
||||
__tls_get_addr (tls_index *ti)
|
||||
{
|
||||
dtv_t *dtv = THREAD_DTV ();
|
||||
return (char *) dtv[1].pointer.val + GET_ADDR_OFFSET;
|
||||
}
|
|
@ -1,272 +0,0 @@
|
|||
# Begin of automatic generation
|
||||
|
||||
# Maximal error of functions:
|
||||
Function: "acos":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: "acosh":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: "asin":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: "asinh":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: "atan":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: "atan2":
|
||||
float: 2
|
||||
|
||||
Function: "atanh":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: "cabs":
|
||||
double: 1
|
||||
|
||||
Function: Real part of "cacos":
|
||||
double: 1
|
||||
float: 2
|
||||
|
||||
Function: Imaginary part of "cacos":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: Real part of "cacosh":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: Imaginary part of "cacosh":
|
||||
double: 1
|
||||
float: 2
|
||||
|
||||
Function: "carg":
|
||||
float: 1
|
||||
|
||||
Function: Real part of "casin":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Imaginary part of "casin":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: Real part of "casinh":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: Imaginary part of "casinh":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Real part of "catan":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Imaginary part of "catan":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Real part of "catanh":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Imaginary part of "catanh":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: "cbrt":
|
||||
double: 4
|
||||
|
||||
Function: Real part of "ccos":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Imaginary part of "ccos":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Real part of "ccosh":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Imaginary part of "ccosh":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Real part of "cexp":
|
||||
double: 2
|
||||
float: 1
|
||||
|
||||
Function: Imaginary part of "cexp":
|
||||
double: 1
|
||||
float: 2
|
||||
|
||||
Function: Real part of "clog":
|
||||
double: 3
|
||||
float: 3
|
||||
|
||||
Function: Imaginary part of "clog":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Real part of "clog10":
|
||||
double: 3
|
||||
float: 4
|
||||
|
||||
Function: Imaginary part of "clog10":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: "cos":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: "cosh":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: Real part of "cpow":
|
||||
double: 2
|
||||
float: 5
|
||||
|
||||
Function: Imaginary part of "cpow":
|
||||
float: 2
|
||||
|
||||
Function: Real part of "csin":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Real part of "csinh":
|
||||
float: 1
|
||||
|
||||
Function: Imaginary part of "csinh":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Real part of "csqrt":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: Imaginary part of "csqrt":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: Real part of "ctan":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: Imaginary part of "ctan":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: Real part of "ctanh":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: Imaginary part of "ctanh":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: "erf":
|
||||
double: 1
|
||||
|
||||
Function: "erfc":
|
||||
double: 5
|
||||
|
||||
Function: "exp":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: "exp10":
|
||||
double: 2
|
||||
|
||||
Function: "exp2":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: "expm1":
|
||||
double: 1
|
||||
|
||||
Function: "gamma":
|
||||
double: 4
|
||||
float: 7
|
||||
|
||||
Function: "hypot":
|
||||
double: 1
|
||||
|
||||
Function: "j0":
|
||||
double: 2
|
||||
float: 8
|
||||
|
||||
Function: "j1":
|
||||
double: 2
|
||||
float: 9
|
||||
|
||||
Function: "jn":
|
||||
double: 4
|
||||
float: 4
|
||||
|
||||
Function: "lgamma":
|
||||
double: 4
|
||||
|
||||
Function: "log":
|
||||
float: 1
|
||||
|
||||
Function: "log10":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: "log1p":
|
||||
double: 1
|
||||
|
||||
Function: "log2":
|
||||
double: 2
|
||||
float: 1
|
||||
|
||||
Function: "logp1":
|
||||
double: 1
|
||||
|
||||
Function: "pow":
|
||||
double: 1
|
||||
float: 3
|
||||
|
||||
Function: "sin":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: "sincos":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
Function: "sinh":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: "tanh":
|
||||
double: 2
|
||||
float: 2
|
||||
|
||||
Function: "tgamma":
|
||||
double: 9
|
||||
|
||||
Function: "y0":
|
||||
double: 3
|
||||
float: 8
|
||||
|
||||
Function: "y1":
|
||||
double: 3
|
||||
float: 2
|
||||
|
||||
Function: "yn":
|
||||
double: 3
|
||||
float: 3
|
||||
|
||||
# end of automatic generation
|
|
@ -1 +0,0 @@
|
|||
Nios II
|
|
@ -1,64 +0,0 @@
|
|||
/* Machine-dependent definitions for profiling support. Nios II version.
|
||||
Copyright (C) 1996-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#define _MCOUNT_DECL(frompc, selfpc) \
|
||||
static void __attribute_used__ __mcount_internal (u_long frompc, u_long selfpc)
|
||||
|
||||
/* This macro/func MUST save r4, r5, r6, r7 and r8 because the compiler inserts
|
||||
blind calls to mcount(), ignoring the fact that mcount may clobber
|
||||
registers; therefore, mcount may NOT clobber registers. */
|
||||
|
||||
#if defined(__PIC__) || defined(PIC)
|
||||
#define NIOS2_MCOUNT_CALL \
|
||||
"nextpc r3\n\t" \
|
||||
"1: movhi r2, %hiadj(_gp_got - 1b)\n\t" \
|
||||
"addi r2, r2, %lo(_gp_got - 1b)\n\t" \
|
||||
"add r2, r2, r3\n\t" \
|
||||
"ldw r2, %call(__mcount_internal)(r2)\n\t" \
|
||||
"callr r2\n\t"
|
||||
#else
|
||||
#define NIOS2_MCOUNT_CALL \
|
||||
"call\t__mcount_internal\n\t"
|
||||
#endif
|
||||
|
||||
#define MCOUNT \
|
||||
asm (".globl _mcount\n\t" \
|
||||
".type _mcount,@function\n\t" \
|
||||
"_mcount:\n\t" \
|
||||
"subi sp, sp, 24\n\t" \
|
||||
"stw ra, 20(sp)\n\t" \
|
||||
"stw r8, 16(sp)\n\t" \
|
||||
"stw r7, 12(sp)\n\t" \
|
||||
"stw r6, 8(sp)\n\t" \
|
||||
"stw r5, 4(sp)\n\t" \
|
||||
"stw r4, 0(sp)\n\t" \
|
||||
"mov r4, r8\n\t" \
|
||||
"mov r5, ra\n\t" \
|
||||
NIOS2_MCOUNT_CALL \
|
||||
"ldw ra, 20(sp)\n\t" \
|
||||
"ldw r8, 16(sp)\n\t" \
|
||||
"ldw r7, 12(sp)\n\t" \
|
||||
"ldw r6, 8(sp)\n\t" \
|
||||
"ldw r5, 4(sp)\n\t" \
|
||||
"ldw r4, 0(sp)\n\t" \
|
||||
"addi sp, sp, 24\n\t" \
|
||||
"ret\n\t" \
|
||||
".size _mcount, . - _mcount\n\t" \
|
||||
);
|
|
@ -1,22 +0,0 @@
|
|||
# NPTL makefile fragment for Nios II.
|
||||
# Copyright (C) 2005-2024 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of the GNU C Library.
|
||||
#
|
||||
# The GNU C Library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2.1 of the License, or (at your option) any later version.
|
||||
#
|
||||
# The GNU C Library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with the GNU C Library. If not, see
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
|
||||
ifeq ($(subdir),csu)
|
||||
gen-as-const-headers += tcb-offsets.sym
|
||||
endif
|
|
@ -1,37 +0,0 @@
|
|||
/* Machine-specific pthread type layouts. Nios II version.
|
||||
Copyright (C) 2012-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_PTHREADTYPES_ARCH_H
|
||||
#define _BITS_PTHREADTYPES_ARCH_H 1
|
||||
|
||||
#include <bits/endian.h>
|
||||
|
||||
#define __SIZEOF_PTHREAD_ATTR_T 36
|
||||
#define __SIZEOF_PTHREAD_MUTEX_T 24
|
||||
#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
|
||||
#define __SIZEOF_PTHREAD_COND_T 48
|
||||
#define __SIZEOF_PTHREAD_CONDATTR_T 4
|
||||
#define __SIZEOF_PTHREAD_RWLOCK_T 32
|
||||
#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
|
||||
#define __SIZEOF_PTHREAD_BARRIER_T 20
|
||||
#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
|
||||
|
||||
#define __LOCK_ALIGNMENT
|
||||
#define __ONCE_ALIGNMENT
|
||||
|
||||
#endif /* bits/pthreadtypes.h */
|
|
@ -1,32 +0,0 @@
|
|||
/* pthread machine parameter definitions, Nios II version.
|
||||
Copyright (C) 2002-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Default stack size. */
|
||||
#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
|
||||
|
||||
/* Minimum guard size. */
|
||||
#define ARCH_MIN_GUARD_SIZE 0
|
||||
|
||||
/* Required stack pointer alignment at beginning. */
|
||||
#define STACK_ALIGN 4
|
||||
|
||||
/* Minimal stack size after allocating thread descriptor and guard size. */
|
||||
#define MINIMAL_REST_STACK 2048
|
||||
|
||||
/* Location of current stack frame. */
|
||||
#define CURRENT_STACK_FRAME __builtin_frame_address (0)
|
|
@ -1,13 +0,0 @@
|
|||
#include <sysdep.h>
|
||||
#include <tls.h>
|
||||
|
||||
--
|
||||
|
||||
-- Abuse tls.h macros to derive offsets relative to the thread register.
|
||||
# undef __thread_self
|
||||
# define __thread_self ((void *) 0)
|
||||
# define thread_offsetof(mem) ((ptrdiff_t) THREAD_SELF + offsetof (struct pthread, mem))
|
||||
|
||||
MULTIPLE_THREADS_OFFSET thread_offsetof (header.multiple_threads)
|
||||
TID_OFFSET thread_offsetof (tid)
|
||||
POINTER_GUARD (offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
|
|
@ -1,149 +0,0 @@
|
|||
/* Definition for thread-local data handling. NPTL/Nios II version.
|
||||
Copyright (C) 2012-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _TLS_H
|
||||
#define _TLS_H 1
|
||||
|
||||
#include <dl-sysdep.h>
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
# include <stdbool.h>
|
||||
# include <stddef.h>
|
||||
# include <stdint.h>
|
||||
# include <dl-dtv.h>
|
||||
|
||||
#else /* __ASSEMBLER__ */
|
||||
# include <tcb-offsets.h>
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
/* Get system call information. */
|
||||
# include <sysdep.h>
|
||||
|
||||
/* The TP points to the start of the thread blocks. */
|
||||
# define TLS_DTV_AT_TP 1
|
||||
# define TLS_TCB_AT_TP 0
|
||||
|
||||
/* Get the thread descriptor definition. */
|
||||
# include <nptl/descr.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
dtv_t *dtv;
|
||||
uintptr_t pointer_guard;
|
||||
unsigned spare[6];
|
||||
} tcbhead_t;
|
||||
|
||||
register struct pthread *__thread_self __asm__("r23");
|
||||
|
||||
#define READ_THREAD_POINTER() ((void *) __thread_self)
|
||||
|
||||
/* This is the size of the initial TCB. Because our TCB is before the thread
|
||||
pointer, we don't need this. */
|
||||
# define TLS_INIT_TCB_SIZE 0
|
||||
|
||||
/* This is the size of the TCB. Because our TCB is before the thread
|
||||
pointer, we don't need this. */
|
||||
# define TLS_TCB_SIZE 0
|
||||
|
||||
/* This is the size we need before TCB - actually, it includes the TCB. */
|
||||
# define TLS_PRE_TCB_SIZE \
|
||||
(sizeof (struct pthread) \
|
||||
+ ((sizeof (tcbhead_t) + __alignof (struct pthread) - 1) \
|
||||
& ~(__alignof (struct pthread) - 1)))
|
||||
|
||||
/* The thread pointer (in hardware register r23) points to the end of
|
||||
the TCB + 0x7000, as for PowerPC and MIPS. */
|
||||
# define TLS_TCB_OFFSET 0x7000
|
||||
|
||||
/* Install the dtv pointer. The pointer passed is to the element with
|
||||
index -1 which contain the length. */
|
||||
# define INSTALL_DTV(tcbp, dtvp) \
|
||||
(((tcbhead_t *) (tcbp))[-1].dtv = (dtvp) + 1)
|
||||
|
||||
/* Install new dtv for current thread. */
|
||||
# define INSTALL_NEW_DTV(dtv) \
|
||||
(THREAD_DTV() = (dtv))
|
||||
|
||||
/* Return dtv of given thread descriptor. */
|
||||
# define GET_DTV(tcbp) \
|
||||
(((tcbhead_t *) (tcbp))[-1].dtv)
|
||||
|
||||
/* Code to initially initialize the thread pointer. */
|
||||
# define TLS_INIT_TP(tcbp) \
|
||||
(__thread_self = (struct pthread *) ((char *) tcbp + TLS_TCB_OFFSET), true)
|
||||
|
||||
/* Value passed to 'clone' for initialization of the thread register. */
|
||||
# define TLS_DEFINE_INIT_TP(tp, pd) \
|
||||
void *tp = (void *) (pd) + TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE
|
||||
|
||||
/* Return the address of the dtv for the current thread. */
|
||||
# define THREAD_DTV() \
|
||||
(((tcbhead_t *) (READ_THREAD_POINTER () - TLS_TCB_OFFSET))[-1].dtv)
|
||||
|
||||
/* Return the thread descriptor for the current thread. */
|
||||
# define THREAD_SELF \
|
||||
((struct pthread *) (READ_THREAD_POINTER () \
|
||||
- TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE))
|
||||
|
||||
/* Magic for libthread_db to know how to do THREAD_SELF. */
|
||||
# define DB_THREAD_SELF \
|
||||
REGISTER (32, 32, 23 * 4, -TLS_PRE_TCB_SIZE - TLS_TCB_OFFSET)
|
||||
|
||||
# include <tcb-access.h>
|
||||
|
||||
# define THREAD_GET_POINTER_GUARD() \
|
||||
(((tcbhead_t *) (READ_THREAD_POINTER () \
|
||||
- TLS_TCB_OFFSET))[-1].pointer_guard)
|
||||
# define THREAD_SET_POINTER_GUARD(value) \
|
||||
(THREAD_GET_POINTER_GUARD () = (value))
|
||||
# define THREAD_COPY_POINTER_GUARD(descr) \
|
||||
(((tcbhead_t *) ((void *) (descr) \
|
||||
+ TLS_PRE_TCB_SIZE))[-1].pointer_guard \
|
||||
= THREAD_GET_POINTER_GUARD())
|
||||
|
||||
/* l_tls_offset == 0 is perfectly valid on Nios II, so we have to use some
|
||||
different value to mean unset l_tls_offset. */
|
||||
# define NO_TLS_OFFSET -1
|
||||
|
||||
/* Get and set the global scope generation counter in struct pthread. */
|
||||
#define THREAD_GSCOPE_FLAG_UNUSED 0
|
||||
#define THREAD_GSCOPE_FLAG_USED 1
|
||||
#define THREAD_GSCOPE_FLAG_WAIT 2
|
||||
#define THREAD_GSCOPE_RESET_FLAG() \
|
||||
do \
|
||||
{ int __res \
|
||||
= atomic_exchange_release (&THREAD_SELF->header.gscope_flag, \
|
||||
THREAD_GSCOPE_FLAG_UNUSED); \
|
||||
if (__res == THREAD_GSCOPE_FLAG_WAIT) \
|
||||
lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \
|
||||
} \
|
||||
while (0)
|
||||
#define THREAD_GSCOPE_SET_FLAG() \
|
||||
do \
|
||||
{ \
|
||||
THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
|
||||
atomic_write_barrier (); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
#endif /* tls.h */
|
|
@ -1,6 +0,0 @@
|
|||
case "$machine" in
|
||||
nios2*)
|
||||
base_machine=nios2
|
||||
machine=nios2
|
||||
;;
|
||||
esac
|
|
@ -1,74 +0,0 @@
|
|||
/* setjmp for Nios II.
|
||||
Copyright (C) 1991-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <pointer_guard.h>
|
||||
#include <jmpbuf-offsets.h>
|
||||
|
||||
.text
|
||||
ENTRY(setjmp)
|
||||
movi r5, 1
|
||||
br __sigsetjmp
|
||||
END(setjmp)
|
||||
|
||||
ENTRY(_setjmp)
|
||||
mov r5, zero
|
||||
br __sigsetjmp
|
||||
END(_setjmp)
|
||||
libc_hidden_def (_setjmp)
|
||||
|
||||
/* Save the current program position in ENV and return 0. */
|
||||
ENTRY(__sigsetjmp)
|
||||
#ifdef PTR_MANGLE
|
||||
PTR_MANGLE_GUARD (r9)
|
||||
#endif
|
||||
stw r16, (JB_R16*4)(r4)
|
||||
stw r17, (JB_R17*4)(r4)
|
||||
stw r18, (JB_R18*4)(r4)
|
||||
stw r19, (JB_R19*4)(r4)
|
||||
stw r20, (JB_R20*4)(r4)
|
||||
stw r21, (JB_R21*4)(r4)
|
||||
stw r22, (JB_R22*4)(r4)
|
||||
stw fp, (JB_FP*4)(r4)
|
||||
#ifdef PTR_MANGLE
|
||||
PTR_MANGLE (r6, ra, r9)
|
||||
PTR_MANGLE (r7, sp, r9)
|
||||
stw r6, (JB_RA*4)(r4)
|
||||
stw r7, (JB_SP*4)(r4)
|
||||
#else
|
||||
stw ra, (JB_RA*4)(r4)
|
||||
stw sp, (JB_SP*4)(r4)
|
||||
#endif
|
||||
#if IS_IN (rtld)
|
||||
/* In ld.so we never save the signal mask. */
|
||||
mov r2, zero
|
||||
ret
|
||||
#else
|
||||
/* Save the signal mask if requested. */
|
||||
#if defined(__PIC__) || defined(PIC)
|
||||
nextpc r2
|
||||
1: movhi r3, %hiadj(__sigjmp_save - 1b)
|
||||
addi r3, r3, %lo(__sigjmp_save - 1b)
|
||||
add r2, r2, r3
|
||||
jmp r2
|
||||
#else
|
||||
jmpi __sigjmp_save
|
||||
#endif
|
||||
#endif
|
||||
END (__sigsetjmp)
|
||||
libc_hidden_def (__sigsetjmp)
|
|
@ -1,51 +0,0 @@
|
|||
#define _FP_W_TYPE_SIZE 32
|
||||
#define _FP_W_TYPE unsigned long
|
||||
#define _FP_WS_TYPE signed long
|
||||
#define _FP_I_TYPE long
|
||||
|
||||
#define _FP_MUL_MEAT_S(R,X,Y) \
|
||||
_FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_D(R,X,Y) \
|
||||
_FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_Q(R,X,Y) \
|
||||
_FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
|
||||
|
||||
#define _FP_MUL_MEAT_DW_S(R,X,Y) \
|
||||
_FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_DW_D(R,X,Y) \
|
||||
_FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_DW_Q(R,X,Y) \
|
||||
_FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
|
||||
|
||||
#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
|
||||
#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
|
||||
#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
|
||||
|
||||
#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
|
||||
#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1
|
||||
#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
|
||||
#define _FP_NANSIGN_S 0
|
||||
#define _FP_NANSIGN_D 0
|
||||
#define _FP_NANSIGN_Q 0
|
||||
|
||||
#define _FP_KEEPNANFRACP 1
|
||||
#define _FP_QNANNEGATEDP 0
|
||||
|
||||
/* This is arbitrarily taken from the PowerPC version. */
|
||||
#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
|
||||
do { \
|
||||
if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
|
||||
&& !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
|
||||
{ \
|
||||
R##_s = Y##_s; \
|
||||
_FP_FRAC_COPY_##wc(R,Y); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
R##_s = X##_s; \
|
||||
_FP_FRAC_COPY_##wc(R,X); \
|
||||
} \
|
||||
R##_c = FP_CLS_NAN; \
|
||||
} while (0)
|
||||
|
||||
#define _FP_TININESS_AFTER_ROUNDING 0
|
|
@ -1,51 +0,0 @@
|
|||
/* Override generic sotruss-lib.c to define actual functions for Nios II.
|
||||
Copyright (C) 2015-2024 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#define HAVE_ARCH_PLTENTER
|
||||
#define HAVE_ARCH_PLTEXIT
|
||||
|
||||
#include <elf/sotruss-lib.c>
|
||||
|
||||
ElfW(Addr)
|
||||
la_nios2_gnu_pltenter (ElfW(Sym) *sym __attribute__ ((unused)),
|
||||
unsigned int ndx __attribute__ ((unused)),
|
||||
uintptr_t *refcook, uintptr_t *defcook,
|
||||
La_nios2_regs *regs, unsigned int *flags,
|
||||
const char *symname, long int *framesizep)
|
||||
{
|
||||
print_enter (refcook, defcook, symname,
|
||||
regs->lr_reg[0], regs->lr_reg[1], regs->lr_reg[2],
|
||||
*flags);
|
||||
|
||||
/* No need to copy anything, we will not need the parameters in any case. */
|
||||
*framesizep = 0;
|
||||
|
||||
return sym->st_value;
|
||||
}
|
||||
|
||||
unsigned int
|
||||
la_nios2_gnu_pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
|
||||
uintptr_t *defcook,
|
||||
const struct La_nios2_regs *inregs,
|
||||
struct La_nios2_retval *outregs, const char *symname)
|
||||
{
|
||||
print_exit (refcook, defcook, symname, outregs->lrv_r2);
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
#include <stdint.h>
|
||||
|
||||
extern uintptr_t __stack_chk_guard;
|
||||
#define STACK_CHK_GUARD __stack_chk_guard
|
||||
|
||||
#define POINTER_CHK_GUARD THREAD_GET_POINTER_GUARD()
|
|
@ -1,33 +0,0 @@
|
|||
/* Stack environment definitions for Nios II.
|
||||
Copyright (C) 2012-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This file contains a bit of information about the stack allocation
|
||||
of the processor. */
|
||||
|
||||
#ifndef _STACKINFO_H
|
||||
#define _STACKINFO_H 1
|
||||
|
||||
#include <elf.h>
|
||||
|
||||
/* On Nios II the stack grows down. */
|
||||
#define _STACK_GROWS_DOWN 1
|
||||
|
||||
/* Default to a non-executable stack. */
|
||||
#define DEFAULT_STACK_PERMS (PF_R|PF_W)
|
||||
|
||||
#endif /* stackinfo.h */
|
|
@ -1,139 +0,0 @@
|
|||
/* Startup code for Nios II
|
||||
Copyright (C) 1995-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This is the canonical entry point, usually the first thing in the text
|
||||
segment.
|
||||
|
||||
Note that the code in the .init section has already been run.
|
||||
This includes _init and _libc_init
|
||||
|
||||
The stack pointer, sp, will point to the argument count on the stack.
|
||||
The initial state of the stack when a userspace process is started is:
|
||||
|
||||
Purpose Start Address Length
|
||||
Unspecified High Addresses
|
||||
Referenced strings, etc. Varies
|
||||
Unspecified
|
||||
Null auxiliary vector entry 4bytes
|
||||
Auxiliary vector entries 8bytes each
|
||||
NULL terminator for envp 4bytes
|
||||
Environment pointers sp+8+4*argc 4bytes each
|
||||
NULL terminator for argv sp+4+4*argc 4bytes
|
||||
Argument pointers sp+4 4bytes each
|
||||
Argument count sp 4bytes
|
||||
Unspecified Low Addresses
|
||||
|
||||
If the application should register a destructor function with atexit,
|
||||
the pointer will be placed in r4. Otherwise r4 will be zero.
|
||||
|
||||
The contents of all other registers are unspecified. User code should
|
||||
set fp to zero to mark the end of the frame chain.
|
||||
|
||||
The auxiliary vector is a series of pairs of 32-bit tag and 32-bit
|
||||
value, terminated by an AT_NULL tag.
|
||||
*/
|
||||
|
||||
.text
|
||||
.globl _start
|
||||
.type _start,%function
|
||||
_start:
|
||||
/* Set up the global pointer. */
|
||||
movhi gp, %hiadj(_gp)
|
||||
addi gp, gp, %lo(_gp)
|
||||
|
||||
/* Save the stack pointer. */
|
||||
mov r2, sp
|
||||
|
||||
/* Create room on the stack for the fini, rtld_fini and stack_end args
|
||||
to __libc_start_main. */
|
||||
subi sp, sp, 12
|
||||
|
||||
/* Push stack_end */
|
||||
stw r2, 8(sp)
|
||||
|
||||
/* Push rtld_fini */
|
||||
stw r4, 4(sp)
|
||||
|
||||
/* Set up the GOT pointer. */
|
||||
nextpc r22
|
||||
1: movhi r2, %hiadj(_gp_got - 1b)
|
||||
addi r2, r2, %lo(_gp_got - 1b)
|
||||
add r22, r22, r2
|
||||
|
||||
/* Used to be fini. */
|
||||
stw zero, 0(sp)
|
||||
|
||||
/* Used to be init. */
|
||||
mov r7, zero
|
||||
|
||||
/* r6 == argv */
|
||||
addi r6, sp, 16
|
||||
|
||||
/* r5 == argc */
|
||||
ldw r5, 12(sp)
|
||||
|
||||
/* r4 == main */
|
||||
movhi r4, %call_hiadj(main)
|
||||
addi r4, r4, %call_lo(main)
|
||||
add r4, r4, r22
|
||||
ldw r4, 0(r4)
|
||||
|
||||
/* fp == 0 */
|
||||
mov fp, zero
|
||||
|
||||
/* __libc_start_main (main, argc, argv, init, fini, rtld_fini,
|
||||
stack_end) */
|
||||
|
||||
/* Let the libc call main and exit with its return code. */
|
||||
movhi r2, %call_hiadj(__libc_start_main)
|
||||
addi r2, r2, %call_lo(__libc_start_main)
|
||||
add r2, r2, r22
|
||||
ldw r2, 0(r2)
|
||||
callr r2
|
||||
|
||||
/* should never get here....*/
|
||||
movhi r2, %call_hiadj(abort)
|
||||
addi r2, r2, %call_lo(abort)
|
||||
add r2, r2, r22
|
||||
ldw r2, 0(r2)
|
||||
callr r2
|
||||
|
||||
/* Define a symbol for the first piece of initialized data. */
|
||||
.data
|
||||
.globl __data_start
|
||||
__data_start:
|
||||
.long 0
|
||||
.weak data_start
|
||||
data_start = __data_start
|
|
@ -1,65 +0,0 @@
|
|||
/* Assembler macros for Nios II.
|
||||
Copyright (C) 2015-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation; either version 2.1 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdeps/generic/sysdep.h>
|
||||
|
||||
#ifdef __ASSEMBLER__
|
||||
|
||||
/* Syntactic details of assembler. */
|
||||
|
||||
#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
|
||||
|
||||
#define ENTRY(name) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
.type C_SYMBOL_NAME(name),%function; \
|
||||
C_LABEL(name) \
|
||||
cfi_startproc; \
|
||||
CALL_MCOUNT;
|
||||
|
||||
#undef END
|
||||
#define END(name) \
|
||||
cfi_endproc; \
|
||||
ASM_SIZE_DIRECTIVE(name)
|
||||
|
||||
#ifdef PROF
|
||||
|
||||
# ifdef __PIC__
|
||||
# define CALL_MCOUNT \
|
||||
mov r8, ra; \
|
||||
nextpc r2; \
|
||||
1: \
|
||||
movhi r3, %hiadj(_gp_got - 1b); \
|
||||
addi r3, r3, %lo(_gp_got - 1b); \
|
||||
add r2, r2, r3; \
|
||||
ldw r2, %call(_mcount)(r2); \
|
||||
callr r2; \
|
||||
mov ra, r8; \
|
||||
ret;
|
||||
# else
|
||||
# define CALL_MCOUNT \
|
||||
mov r8, ra; \
|
||||
call _mount; \
|
||||
mov ra, r8; \
|
||||
ret;
|
||||
# endif
|
||||
|
||||
#else
|
||||
# define CALL_MCOUNT /* Do nothing. */
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
|
@ -1,23 +0,0 @@
|
|||
/* Definitions for testing PLT entry/exit auditing. Nios II version.
|
||||
Copyright (C) 2009-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#define pltenter la_nios2_gnu_pltenter
|
||||
#define pltexit la_nios2_gnu_pltexit
|
||||
#define La_regs La_nios2_regs
|
||||
#define La_retval La_nios2_retval
|
||||
#define int_retval lrv_r2
|
|
@ -1,20 +0,0 @@
|
|||
/* Check file alignment. Nios II version.
|
||||
Copyright (C) 2021-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This should cover all possible alignments we currently support. */
|
||||
#define ALIGN 0x8000
|
|
@ -1,2 +0,0 @@
|
|||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
|
@ -30,7 +30,7 @@ __fstat64_time64 (int fd, struct __stat64_t64 *buf)
|
|||
{
|
||||
#if !FSTATAT_USE_STATX
|
||||
# if XSTAT_IS_XSTAT64
|
||||
/* The __NR_stat macro is defined for all ABIs that also define
|
||||
/* The __NR_stat macro is defined for all ABIs that also define
|
||||
XSTAT_IS_STAT64, so to correctly identify alpha and sparc check
|
||||
__NR_newfstatat (similar to what fstatat64 does). */
|
||||
# ifdef __NR_newfstatat
|
||||
|
@ -60,7 +60,7 @@ __fstat64_time64 (int fd, struct __stat64_t64 *buf)
|
|||
# endif
|
||||
#else /* !FSTATAT_USE_STATX */
|
||||
/* All kABIs with non-LFS support and with old 32-bit time_t support
|
||||
e.g. arm, csky, i386, hppa, m68k, microblaze, nios2, sh, powerpc32,
|
||||
e.g. arm, csky, i386, hppa, m68k, microblaze, sh, powerpc32,
|
||||
and sparc32. */
|
||||
if (fd < 0)
|
||||
{
|
||||
|
|
|
@ -104,7 +104,7 @@ fstatat64_time64_stat (int fd, const char *file, struct __stat64_t64 *buf,
|
|||
#else
|
||||
# ifdef __NR_fstatat64
|
||||
/* All kABIs with non-LFS support and with old 32-bit time_t support
|
||||
e.g. arm, csky, i386, hppa, m68k, microblaze, nios2, sh, powerpc32,
|
||||
e.g. arm, csky, i386, hppa, m68k, microblaze, sh, powerpc32,
|
||||
and sparc32. */
|
||||
struct stat64 st64;
|
||||
r = INTERNAL_SYSCALL_CALL (fstatat64, fd, file, &st64, flag);
|
||||
|
|
|
@ -38,7 +38,7 @@ __fxstat (int vers, int fd, struct stat *buf)
|
|||
{
|
||||
# if STAT_IS_KERNEL_STAT
|
||||
/* New kABIs which uses generic pre 64-bit time Linux ABI,
|
||||
e.g. csky, nios2 */
|
||||
e.g. csky */
|
||||
int r = INLINE_SYSCALL_CALL (fstat64, fd, buf);
|
||||
return r ?: stat_overflow (buf);
|
||||
# else
|
||||
|
|
|
@ -61,7 +61,7 @@ ___fxstat64 (int vers, int fd, struct stat64 *buf)
|
|||
# endif
|
||||
#else
|
||||
/* All kABIs with non-LFS support, e.g. arm, csky, i386, hppa, m68k,
|
||||
microblaze, mips32, nios2, sh, powerpc32, and sparc32. */
|
||||
microblaze, mips32, sh, powerpc32, and sparc32. */
|
||||
return INLINE_SYSCALL_CALL (fstat64, fd, buf);
|
||||
#endif /* XSTAT_IS_XSTAT64 */
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
|
|||
{
|
||||
#if STAT_IS_KERNEL_STAT
|
||||
/* New kABIs which uses generic pre 64-bit time Linux ABI, e.g.
|
||||
csky, nios2 */
|
||||
csky. */
|
||||
if (vers == _STAT_VER_KERNEL)
|
||||
{
|
||||
int r = INLINE_SYSCALL_CALL (fstatat64, fd, file, st, flag);
|
||||
|
|
|
@ -58,7 +58,7 @@ __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
|
|||
# endif
|
||||
#else
|
||||
/* All kABIs with non-LFS support, e.g. arm, csky, i386, hppa, m68k,
|
||||
microblaze, mips32, nios2, sh, powerpc32, and sparc32. */
|
||||
microblaze, mips32, sh, powerpc32, and sparc32. */
|
||||
if (vers == _STAT_VER_LINUX)
|
||||
return INLINE_SYSCALL_CALL (fstatat64, fd, file, st, flag);
|
||||
#endif
|
||||
|
|
|
@ -38,7 +38,7 @@ __lxstat (int vers, const char *name, struct stat *buf)
|
|||
{
|
||||
# if STAT_IS_KERNEL_STAT
|
||||
/* New kABIs which uses generic pre 64-bit time Linux ABI,
|
||||
e.g. csky, nios2 */
|
||||
e.g. csky. */
|
||||
int r = INLINE_SYSCALL_CALL (fstatat64, AT_FDCWD, name, buf,
|
||||
AT_SYMLINK_NOFOLLOW);
|
||||
return r ?: stat_overflow (buf);
|
||||
|
|
|
@ -69,7 +69,7 @@ ___lxstat64 (int vers, const char *name, struct stat64 *buf)
|
|||
#else
|
||||
# if STAT_IS_KERNEL_STAT
|
||||
/* New kABIs which uses generic pre 64-bit time Linux ABI,
|
||||
e.g. csky, nios2 */
|
||||
e.g. csky. */
|
||||
if (vers == _STAT_VER_KERNEL)
|
||||
return INLINE_SYSCALL_CALL (fstatat64, AT_FDCWD, name, buf,
|
||||
AT_SYMLINK_NOFOLLOW);
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
nios2/nptl
|
|
@ -1,18 +0,0 @@
|
|||
ifeq ($(subdir),stdlib)
|
||||
gen-as-const-headers += ucontext_i.sym
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),misc)
|
||||
# MIPS-style cacheflush routine
|
||||
sysdep_headers += sys/cachectl.h
|
||||
sysdep_routines += cacheflush
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),csu)
|
||||
# Work around an incorrect assumption that an object of variably
|
||||
# modified type, with a small fixed size but a large variable-sized
|
||||
# part (the static_slotinfo variable in libc-tls.c) is allocated in
|
||||
# the small data section, not the data section where it belongs based
|
||||
# on its size. See GCC PR 92499.
|
||||
CFLAGS-libc-tls.c += -mgpopt=none
|
||||
endif
|
|
@ -1,6 +0,0 @@
|
|||
libc {
|
||||
GLIBC_2.21 {
|
||||
_flush_cache;
|
||||
cacheflush;
|
||||
}
|
||||
}
|
|
@ -1,339 +0,0 @@
|
|||
/* AUTOGENERATED by update-syscall-lists.py. */
|
||||
#define __NR_accept 202
|
||||
#define __NR_accept4 242
|
||||
#define __NR_acct 89
|
||||
#define __NR_add_key 217
|
||||
#define __NR_adjtimex 171
|
||||
#define __NR_bind 200
|
||||
#define __NR_bpf 280
|
||||
#define __NR_brk 214
|
||||
#define __NR_cacheflush 244
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_capget 90
|
||||
#define __NR_capset 91
|
||||
#define __NR_chdir 49
|
||||
#define __NR_chroot 51
|
||||
#define __NR_clock_adjtime 266
|
||||
#define __NR_clock_adjtime64 405
|
||||
#define __NR_clock_getres 114
|
||||
#define __NR_clock_getres_time64 406
|
||||
#define __NR_clock_gettime 113
|
||||
#define __NR_clock_gettime64 403
|
||||
#define __NR_clock_nanosleep 115
|
||||
#define __NR_clock_nanosleep_time64 407
|
||||
#define __NR_clock_settime 112
|
||||
#define __NR_clock_settime64 404
|
||||
#define __NR_clone 220
|
||||
#define __NR_clone3 435
|
||||
#define __NR_close 57
|
||||
#define __NR_close_range 436
|
||||
#define __NR_connect 203
|
||||
#define __NR_copy_file_range 285
|
||||
#define __NR_delete_module 106
|
||||
#define __NR_dup 23
|
||||
#define __NR_dup3 24
|
||||
#define __NR_epoll_create1 20
|
||||
#define __NR_epoll_ctl 21
|
||||
#define __NR_epoll_pwait 22
|
||||
#define __NR_epoll_pwait2 441
|
||||
#define __NR_eventfd2 19
|
||||
#define __NR_execve 221
|
||||
#define __NR_execveat 281
|
||||
#define __NR_exit 93
|
||||
#define __NR_exit_group 94
|
||||
#define __NR_faccessat 48
|
||||
#define __NR_faccessat2 439
|
||||
#define __NR_fadvise64_64 223
|
||||
#define __NR_fallocate 47
|
||||
#define __NR_fanotify_init 262
|
||||
#define __NR_fanotify_mark 263
|
||||
#define __NR_fchdir 50
|
||||
#define __NR_fchmod 52
|
||||
#define __NR_fchmodat 53
|
||||
#define __NR_fchmodat2 452
|
||||
#define __NR_fchown 55
|
||||
#define __NR_fchownat 54
|
||||
#define __NR_fcntl64 25
|
||||
#define __NR_fdatasync 83
|
||||
#define __NR_fgetxattr 10
|
||||
#define __NR_finit_module 273
|
||||
#define __NR_flistxattr 13
|
||||
#define __NR_flock 32
|
||||
#define __NR_fremovexattr 16
|
||||
#define __NR_fsconfig 431
|
||||
#define __NR_fsetxattr 7
|
||||
#define __NR_fsmount 432
|
||||
#define __NR_fsopen 430
|
||||
#define __NR_fspick 433
|
||||
#define __NR_fstat64 80
|
||||
#define __NR_fstatat64 79
|
||||
#define __NR_fstatfs64 44
|
||||
#define __NR_fsync 82
|
||||
#define __NR_ftruncate64 46
|
||||
#define __NR_futex 98
|
||||
#define __NR_futex_requeue 456
|
||||
#define __NR_futex_time64 422
|
||||
#define __NR_futex_wait 455
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_futex_wake 454
|
||||
#define __NR_get_mempolicy 236
|
||||
#define __NR_get_robust_list 100
|
||||
#define __NR_getcpu 168
|
||||
#define __NR_getcwd 17
|
||||
#define __NR_getdents64 61
|
||||
#define __NR_getegid 177
|
||||
#define __NR_geteuid 175
|
||||
#define __NR_getgid 176
|
||||
#define __NR_getgroups 158
|
||||
#define __NR_getitimer 102
|
||||
#define __NR_getpeername 205
|
||||
#define __NR_getpgid 155
|
||||
#define __NR_getpid 172
|
||||
#define __NR_getppid 173
|
||||
#define __NR_getpriority 141
|
||||
#define __NR_getrandom 278
|
||||
#define __NR_getresgid 150
|
||||
#define __NR_getresuid 148
|
||||
#define __NR_getrlimit 163
|
||||
#define __NR_getrusage 165
|
||||
#define __NR_getsid 156
|
||||
#define __NR_getsockname 204
|
||||
#define __NR_getsockopt 209
|
||||
#define __NR_gettid 178
|
||||
#define __NR_gettimeofday 169
|
||||
#define __NR_getuid 174
|
||||
#define __NR_getxattr 8
|
||||
#define __NR_init_module 105
|
||||
#define __NR_inotify_add_watch 27
|
||||
#define __NR_inotify_init1 26
|
||||
#define __NR_inotify_rm_watch 28
|
||||
#define __NR_io_cancel 3
|
||||
#define __NR_io_destroy 1
|
||||
#define __NR_io_getevents 4
|
||||
#define __NR_io_pgetevents 292
|
||||
#define __NR_io_pgetevents_time64 416
|
||||
#define __NR_io_setup 0
|
||||
#define __NR_io_submit 2
|
||||
#define __NR_io_uring_enter 426
|
||||
#define __NR_io_uring_register 427
|
||||
#define __NR_io_uring_setup 425
|
||||
#define __NR_ioctl 29
|
||||
#define __NR_ioprio_get 31
|
||||
#define __NR_ioprio_set 30
|
||||
#define __NR_kcmp 272
|
||||
#define __NR_kexec_file_load 294
|
||||
#define __NR_kexec_load 104
|
||||
#define __NR_keyctl 219
|
||||
#define __NR_kill 129
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_lgetxattr 9
|
||||
#define __NR_linkat 37
|
||||
#define __NR_listen 201
|
||||
#define __NR_listmount 458
|
||||
#define __NR_listxattr 11
|
||||
#define __NR_llistxattr 12
|
||||
#define __NR_llseek 62
|
||||
#define __NR_lookup_dcookie 18
|
||||
#define __NR_lremovexattr 15
|
||||
#define __NR_lsetxattr 6
|
||||
#define __NR_lsm_get_self_attr 459
|
||||
#define __NR_lsm_list_modules 461
|
||||
#define __NR_lsm_set_self_attr 460
|
||||
#define __NR_madvise 233
|
||||
#define __NR_map_shadow_stack 453
|
||||
#define __NR_mbind 235
|
||||
#define __NR_membarrier 283
|
||||
#define __NR_memfd_create 279
|
||||
#define __NR_migrate_pages 238
|
||||
#define __NR_mincore 232
|
||||
#define __NR_mkdirat 34
|
||||
#define __NR_mknodat 33
|
||||
#define __NR_mlock 228
|
||||
#define __NR_mlock2 284
|
||||
#define __NR_mlockall 230
|
||||
#define __NR_mmap2 222
|
||||
#define __NR_mount 40
|
||||
#define __NR_mount_setattr 442
|
||||
#define __NR_move_mount 429
|
||||
#define __NR_move_pages 239
|
||||
#define __NR_mprotect 226
|
||||
#define __NR_mq_getsetattr 185
|
||||
#define __NR_mq_notify 184
|
||||
#define __NR_mq_open 180
|
||||
#define __NR_mq_timedreceive 183
|
||||
#define __NR_mq_timedreceive_time64 419
|
||||
#define __NR_mq_timedsend 182
|
||||
#define __NR_mq_timedsend_time64 418
|
||||
#define __NR_mq_unlink 181
|
||||
#define __NR_mremap 216
|
||||
#define __NR_mseal 462
|
||||
#define __NR_msgctl 187
|
||||
#define __NR_msgget 186
|
||||
#define __NR_msgrcv 188
|
||||
#define __NR_msgsnd 189
|
||||
#define __NR_msync 227
|
||||
#define __NR_munlock 229
|
||||
#define __NR_munlockall 231
|
||||
#define __NR_munmap 215
|
||||
#define __NR_name_to_handle_at 264
|
||||
#define __NR_nanosleep 101
|
||||
#define __NR_nfsservctl 42
|
||||
#define __NR_open_by_handle_at 265
|
||||
#define __NR_open_tree 428
|
||||
#define __NR_openat 56
|
||||
#define __NR_openat2 437
|
||||
#define __NR_perf_event_open 241
|
||||
#define __NR_personality 92
|
||||
#define __NR_pidfd_getfd 438
|
||||
#define __NR_pidfd_open 434
|
||||
#define __NR_pidfd_send_signal 424
|
||||
#define __NR_pipe2 59
|
||||
#define __NR_pivot_root 41
|
||||
#define __NR_pkey_alloc 289
|
||||
#define __NR_pkey_free 290
|
||||
#define __NR_pkey_mprotect 288
|
||||
#define __NR_ppoll 73
|
||||
#define __NR_ppoll_time64 414
|
||||
#define __NR_prctl 167
|
||||
#define __NR_pread64 67
|
||||
#define __NR_preadv 69
|
||||
#define __NR_preadv2 286
|
||||
#define __NR_prlimit64 261
|
||||
#define __NR_process_madvise 440
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_process_vm_readv 270
|
||||
#define __NR_process_vm_writev 271
|
||||
#define __NR_pselect6 72
|
||||
#define __NR_pselect6_time64 413
|
||||
#define __NR_ptrace 117
|
||||
#define __NR_pwrite64 68
|
||||
#define __NR_pwritev 70
|
||||
#define __NR_pwritev2 287
|
||||
#define __NR_quotactl 60
|
||||
#define __NR_quotactl_fd 443
|
||||
#define __NR_read 63
|
||||
#define __NR_readahead 213
|
||||
#define __NR_readlinkat 78
|
||||
#define __NR_readv 65
|
||||
#define __NR_reboot 142
|
||||
#define __NR_recvfrom 207
|
||||
#define __NR_recvmmsg 243
|
||||
#define __NR_recvmmsg_time64 417
|
||||
#define __NR_recvmsg 212
|
||||
#define __NR_remap_file_pages 234
|
||||
#define __NR_removexattr 14
|
||||
#define __NR_renameat 38
|
||||
#define __NR_renameat2 276
|
||||
#define __NR_request_key 218
|
||||
#define __NR_restart_syscall 128
|
||||
#define __NR_rseq 293
|
||||
#define __NR_rt_sigaction 134
|
||||
#define __NR_rt_sigpending 136
|
||||
#define __NR_rt_sigprocmask 135
|
||||
#define __NR_rt_sigqueueinfo 138
|
||||
#define __NR_rt_sigreturn 139
|
||||
#define __NR_rt_sigsuspend 133
|
||||
#define __NR_rt_sigtimedwait 137
|
||||
#define __NR_rt_sigtimedwait_time64 421
|
||||
#define __NR_rt_tgsigqueueinfo 240
|
||||
#define __NR_sched_get_priority_max 125
|
||||
#define __NR_sched_get_priority_min 126
|
||||
#define __NR_sched_getaffinity 123
|
||||
#define __NR_sched_getattr 275
|
||||
#define __NR_sched_getparam 121
|
||||
#define __NR_sched_getscheduler 120
|
||||
#define __NR_sched_rr_get_interval 127
|
||||
#define __NR_sched_rr_get_interval_time64 423
|
||||
#define __NR_sched_setaffinity 122
|
||||
#define __NR_sched_setattr 274
|
||||
#define __NR_sched_setparam 118
|
||||
#define __NR_sched_setscheduler 119
|
||||
#define __NR_sched_yield 124
|
||||
#define __NR_seccomp 277
|
||||
#define __NR_semctl 191
|
||||
#define __NR_semget 190
|
||||
#define __NR_semop 193
|
||||
#define __NR_semtimedop 192
|
||||
#define __NR_semtimedop_time64 420
|
||||
#define __NR_sendfile64 71
|
||||
#define __NR_sendmmsg 269
|
||||
#define __NR_sendmsg 211
|
||||
#define __NR_sendto 206
|
||||
#define __NR_set_mempolicy 237
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_set_robust_list 99
|
||||
#define __NR_set_tid_address 96
|
||||
#define __NR_setdomainname 162
|
||||
#define __NR_setfsgid 152
|
||||
#define __NR_setfsuid 151
|
||||
#define __NR_setgid 144
|
||||
#define __NR_setgroups 159
|
||||
#define __NR_sethostname 161
|
||||
#define __NR_setitimer 103
|
||||
#define __NR_setns 268
|
||||
#define __NR_setpgid 154
|
||||
#define __NR_setpriority 140
|
||||
#define __NR_setregid 143
|
||||
#define __NR_setresgid 149
|
||||
#define __NR_setresuid 147
|
||||
#define __NR_setreuid 145
|
||||
#define __NR_setrlimit 164
|
||||
#define __NR_setsid 157
|
||||
#define __NR_setsockopt 208
|
||||
#define __NR_settimeofday 170
|
||||
#define __NR_setuid 146
|
||||
#define __NR_setxattr 5
|
||||
#define __NR_shmat 196
|
||||
#define __NR_shmctl 195
|
||||
#define __NR_shmdt 197
|
||||
#define __NR_shmget 194
|
||||
#define __NR_shutdown 210
|
||||
#define __NR_sigaltstack 132
|
||||
#define __NR_signalfd4 74
|
||||
#define __NR_socket 198
|
||||
#define __NR_socketpair 199
|
||||
#define __NR_splice 76
|
||||
#define __NR_statfs64 43
|
||||
#define __NR_statmount 457
|
||||
#define __NR_statx 291
|
||||
#define __NR_swapoff 225
|
||||
#define __NR_swapon 224
|
||||
#define __NR_symlinkat 36
|
||||
#define __NR_sync 81
|
||||
#define __NR_sync_file_range 84
|
||||
#define __NR_syncfs 267
|
||||
#define __NR_sysinfo 179
|
||||
#define __NR_syslog 116
|
||||
#define __NR_tee 77
|
||||
#define __NR_tgkill 131
|
||||
#define __NR_timer_create 107
|
||||
#define __NR_timer_delete 111
|
||||
#define __NR_timer_getoverrun 109
|
||||
#define __NR_timer_gettime 108
|
||||
#define __NR_timer_gettime64 408
|
||||
#define __NR_timer_settime 110
|
||||
#define __NR_timer_settime64 409
|
||||
#define __NR_timerfd_create 85
|
||||
#define __NR_timerfd_gettime 87
|
||||
#define __NR_timerfd_gettime64 410
|
||||
#define __NR_timerfd_settime 86
|
||||
#define __NR_timerfd_settime64 411
|
||||
#define __NR_times 153
|
||||
#define __NR_tkill 130
|
||||
#define __NR_truncate64 45
|
||||
#define __NR_umask 166
|
||||
#define __NR_umount2 39
|
||||
#define __NR_uname 160
|
||||
#define __NR_unlinkat 35
|
||||
#define __NR_unshare 97
|
||||
#define __NR_userfaultfd 282
|
||||
#define __NR_utimensat 88
|
||||
#define __NR_utimensat_time64 412
|
||||
#define __NR_vhangup 58
|
||||
#define __NR_vmsplice 75
|
||||
#define __NR_wait4 260
|
||||
#define __NR_waitid 95
|
||||
#define __NR_write 64
|
||||
#define __NR_writev 66
|
|
@ -1,83 +0,0 @@
|
|||
/* Low-level functions for atomic operations. Nios II version.
|
||||
Copyright (C) 2012-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _NIOS2_ATOMIC_MACHINE_H
|
||||
#define _NIOS2_ATOMIC_MACHINE_H 1
|
||||
|
||||
#define __HAVE_64B_ATOMICS 0
|
||||
#define USE_ATOMIC_COMPILER_BUILTINS 0
|
||||
|
||||
/* XXX Is this actually correct? */
|
||||
#define ATOMIC_EXCHANGE_USES_CAS 1
|
||||
|
||||
#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
|
||||
(abort (), (__typeof (*mem)) 0)
|
||||
#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
|
||||
(abort (), (__typeof (*mem)) 0)
|
||||
#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
|
||||
(abort (), (__typeof (*mem)) 0)
|
||||
|
||||
#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
|
||||
(abort (), 0)
|
||||
#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
|
||||
(abort (), 0)
|
||||
#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
|
||||
(abort (), 0)
|
||||
|
||||
#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
|
||||
({ \
|
||||
register int r2 asm ("r2"); \
|
||||
register int* r4 asm ("r4") = (int*)(mem); \
|
||||
register int r5 asm ("r5"); \
|
||||
register int r6 asm ("r6") = (int)(newval); \
|
||||
int retval, orig_oldval = (int)(oldval); \
|
||||
long kernel_cmpxchg = 0x1004; \
|
||||
while (1) \
|
||||
{ \
|
||||
r5 = *r4; \
|
||||
if (r5 != orig_oldval) \
|
||||
{ \
|
||||
retval = r5; \
|
||||
break; \
|
||||
} \
|
||||
asm volatile ("callr %1\n" \
|
||||
: "=r" (r2) \
|
||||
: "r" (kernel_cmpxchg), "r" (r4), "r" (r5), "r" (r6) \
|
||||
: "ra", "memory"); \
|
||||
if (!r2) { retval = orig_oldval; break; } \
|
||||
} \
|
||||
(__typeof (*(mem))) retval; \
|
||||
})
|
||||
|
||||
#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
|
||||
({ \
|
||||
register int r2 asm ("r2"); \
|
||||
register int *r4 asm ("r4") = (int*)(mem); \
|
||||
register int r5 asm ("r5") = (int)(oldval); \
|
||||
register int r6 asm ("r6") = (int)(newval); \
|
||||
long kernel_cmpxchg = 0x1004; \
|
||||
asm volatile ("callr %1\n" \
|
||||
: "=r" (r2) \
|
||||
: "r" (kernel_cmpxchg), "r" (r4), "r" (r5), "r" (r6) \
|
||||
: "ra", "memory"); \
|
||||
r2; \
|
||||
})
|
||||
|
||||
#define atomic_full_barrier() ({ asm volatile ("sync"); })
|
||||
|
||||
#endif /* _NIOS2_ATOMIC_MACHINE_H */
|
|
@ -1,34 +0,0 @@
|
|||
/* Types for registers for sys/procfs.h. Nios II version.
|
||||
Copyright (C) 1996-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SYS_PROCFS_H
|
||||
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
|
||||
#endif
|
||||
|
||||
/* Type for a general-purpose register. */
|
||||
typedef unsigned long elf_greg_t;
|
||||
|
||||
/* And the whole bunch of them. We could have used `struct
|
||||
user_regs' directly in the typedef, but tradition says that
|
||||
the register set is an array, which does have some peculiar
|
||||
semantics, so leave it that way. */
|
||||
#define ELF_NGREG (sizeof (struct user_regs) / sizeof (elf_greg_t))
|
||||
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
|
||||
|
||||
/* Register set for the floating-point registers. */
|
||||
typedef struct user_fpregs elf_fpregset_t;
|
|
@ -1,75 +0,0 @@
|
|||
/* Copyright (C) 2011-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SYS_STATFS_H
|
||||
# error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
|
||||
#endif
|
||||
|
||||
#include <bits/endian.h>
|
||||
#include <bits/types.h>
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#if defined __USE_FILE_OFFSET64
|
||||
# define __field64(type, type64, name) type64 name
|
||||
#elif __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
# define __field64(type, type64, name) \
|
||||
type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad
|
||||
#else
|
||||
# define __field64(type, type64, name) \
|
||||
int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name
|
||||
#endif
|
||||
|
||||
struct statfs
|
||||
{
|
||||
__SWORD_TYPE f_type;
|
||||
__SWORD_TYPE f_bsize;
|
||||
__field64(__fsblkcnt_t, __fsblkcnt64_t, f_blocks);
|
||||
__field64(__fsblkcnt_t, __fsblkcnt64_t, f_bfree);
|
||||
__field64(__fsblkcnt_t, __fsblkcnt64_t, f_bavail);
|
||||
__field64(__fsfilcnt_t, __fsfilcnt64_t, f_files);
|
||||
__field64(__fsfilcnt_t, __fsfilcnt64_t, f_ffree);
|
||||
__fsid_t f_fsid;
|
||||
__SWORD_TYPE f_namelen;
|
||||
__SWORD_TYPE f_frsize;
|
||||
__SWORD_TYPE f_flags;
|
||||
__SWORD_TYPE f_spare[4];
|
||||
};
|
||||
|
||||
#undef __field64
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
struct statfs64
|
||||
{
|
||||
__SWORD_TYPE f_type;
|
||||
__SWORD_TYPE f_bsize;
|
||||
__fsblkcnt64_t f_blocks;
|
||||
__fsblkcnt64_t f_bfree;
|
||||
__fsblkcnt64_t f_bavail;
|
||||
__fsfilcnt64_t f_files;
|
||||
__fsfilcnt64_t f_ffree;
|
||||
__fsid_t f_fsid;
|
||||
__SWORD_TYPE f_namelen;
|
||||
__SWORD_TYPE f_frsize;
|
||||
__SWORD_TYPE f_flags;
|
||||
__SWORD_TYPE f_spare[4];
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Tell code we have these members. */
|
||||
#define _STATFS_F_NAMELEN
|
||||
#define _STATFS_F_FRSIZE
|
||||
#define _STATFS_F_FLAGS
|
|
@ -1,135 +0,0 @@
|
|||
/* Definition for struct stat. Linux/nios2 version.
|
||||
Copyright (C) 2020-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _SYS_STAT_H && !defined _FCNTL_H
|
||||
# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
|
||||
#endif
|
||||
|
||||
#ifndef _BITS_STRUCT_STAT_H
|
||||
#define _BITS_STRUCT_STAT_H 1
|
||||
|
||||
#include <bits/endian.h>
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#if defined __USE_FILE_OFFSET64
|
||||
# define __field64(type, type64, name) type64 name
|
||||
#elif __WORDSIZE == 64 || defined __INO_T_MATCHES_INO64_T
|
||||
# if defined __INO_T_MATCHES_INO64_T && !defined __OFF_T_MATCHES_OFF64_T
|
||||
# error "ino_t and off_t must both be the same type"
|
||||
# endif
|
||||
# define __field64(type, type64, name) type name
|
||||
#elif __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
# define __field64(type, type64, name) \
|
||||
type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad
|
||||
#else
|
||||
# define __field64(type, type64, name) \
|
||||
int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name
|
||||
#endif
|
||||
|
||||
struct stat
|
||||
{
|
||||
#ifdef __USE_TIME64_REDIRECTS
|
||||
# include <bits/struct_stat_time64_helper.h>
|
||||
#else
|
||||
__dev_t st_dev; /* Device. */
|
||||
__field64(__ino_t, __ino64_t, st_ino); /* File serial number. */
|
||||
__mode_t st_mode; /* File mode. */
|
||||
__nlink_t st_nlink; /* Link count. */
|
||||
__uid_t st_uid; /* User ID of the file's owner. */
|
||||
__gid_t st_gid; /* Group ID of the file's group.*/
|
||||
__dev_t st_rdev; /* Device number, if device. */
|
||||
__dev_t __pad1;
|
||||
__field64(__off_t, __off64_t, st_size); /* Size of file, in bytes. */
|
||||
__blksize_t st_blksize; /* Optimal block size for I/O. */
|
||||
int __pad2;
|
||||
__field64(__blkcnt_t, __blkcnt64_t, st_blocks); /* 512-byte blocks */
|
||||
# ifdef __USE_XOPEN2K8
|
||||
/* Nanosecond resolution timestamps are stored in a format
|
||||
equivalent to 'struct timespec'. This is the type used
|
||||
whenever possible but the Unix namespace rules do not allow the
|
||||
identifier 'timespec' to appear in the <sys/stat.h> header.
|
||||
Therefore we have to handle the use of this header in strictly
|
||||
standard-compliant sources special. */
|
||||
struct timespec st_atim; /* Time of last access. */
|
||||
struct timespec st_mtim; /* Time of last modification. */
|
||||
struct timespec st_ctim; /* Time of last status change. */
|
||||
# define st_atime st_atim.tv_sec /* Backward compatibility. */
|
||||
# define st_mtime st_mtim.tv_sec
|
||||
# define st_ctime st_ctim.tv_sec
|
||||
# else
|
||||
__time_t st_atime; /* Time of last access. */
|
||||
unsigned long int st_atimensec; /* Nscecs of last access. */
|
||||
__time_t st_mtime; /* Time of last modification. */
|
||||
unsigned long int st_mtimensec; /* Nsecs of last modification. */
|
||||
__time_t st_ctime; /* Time of last status change. */
|
||||
unsigned long int st_ctimensec; /* Nsecs of last status change. */
|
||||
# endif
|
||||
int __glibc_reserved[2];
|
||||
#endif
|
||||
};
|
||||
|
||||
#undef __field64
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
struct stat64
|
||||
{
|
||||
# ifdef __USE_TIME64_REDIRECTS
|
||||
# include <bits/struct_stat_time64_helper.h>
|
||||
# else
|
||||
__dev_t st_dev; /* Device. */
|
||||
__ino64_t st_ino; /* File serial number. */
|
||||
__mode_t st_mode; /* File mode. */
|
||||
__nlink_t st_nlink; /* Link count. */
|
||||
__uid_t st_uid; /* User ID of the file's owner. */
|
||||
__gid_t st_gid; /* Group ID of the file's group.*/
|
||||
__dev_t st_rdev; /* Device number, if device. */
|
||||
__dev_t __pad1;
|
||||
__off64_t st_size; /* Size of file, in bytes. */
|
||||
__blksize_t st_blksize; /* Optimal block size for I/O. */
|
||||
int __pad2;
|
||||
__blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */
|
||||
# ifdef __USE_XOPEN2K8
|
||||
/* Nanosecond resolution timestamps are stored in a format
|
||||
equivalent to 'struct timespec'. This is the type used
|
||||
whenever possible but the Unix namespace rules do not allow the
|
||||
identifier 'timespec' to appear in the <sys/stat.h> header.
|
||||
Therefore we have to handle the use of this header in strictly
|
||||
standard-compliant sources special. */
|
||||
struct timespec st_atim; /* Time of last access. */
|
||||
struct timespec st_mtim; /* Time of last modification. */
|
||||
struct timespec st_ctim; /* Time of last status change. */
|
||||
# else
|
||||
__time_t st_atime; /* Time of last access. */
|
||||
unsigned long int st_atimensec; /* Nscecs of last access. */
|
||||
__time_t st_mtime; /* Time of last modification. */
|
||||
unsigned long int st_mtimensec; /* Nsecs of last modification. */
|
||||
__time_t st_ctime; /* Time of last status change. */
|
||||
unsigned long int st_ctimensec; /* Nsecs of last status change. */
|
||||
# endif
|
||||
int __glibc_reserved[2];
|
||||
# endif
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Tell code we have these members. */
|
||||
#define _STATBUF_ST_BLKSIZE
|
||||
#define _STATBUF_ST_RDEV
|
||||
/* Nanosecond resolution time values are supported. */
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
#endif /* _BITS_STRUCT_STAT_H */
|
|
@ -1,20 +0,0 @@
|
|||
/* Bit size of the time_t type at glibc build time, Linux/NIOS2.
|
||||
Copyright (C) 2021-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Size in bits of the 'time_t' type of the default ABI. */
|
||||
#define __TIMESIZE 32
|
|
@ -1,67 +0,0 @@
|
|||
blkcnt64_t:x
|
||||
blkcnt_t:l
|
||||
blksize_t:i
|
||||
caddr_t:Pc
|
||||
clockid_t:i
|
||||
clock_t:l
|
||||
daddr_t:i
|
||||
dev_t:y
|
||||
fd_mask:l
|
||||
fsblkcnt64_t:y
|
||||
fsblkcnt_t:m
|
||||
fsfilcnt64_t:y
|
||||
fsfilcnt_t:m
|
||||
fsid_t:8__fsid_t
|
||||
gid_t:j
|
||||
id_t:j
|
||||
ino64_t:y
|
||||
ino_t:m
|
||||
int16_t:s
|
||||
int32_t:i
|
||||
int64_t:x
|
||||
int8_t:a
|
||||
intptr_t:i
|
||||
key_t:i
|
||||
loff_t:x
|
||||
mode_t:j
|
||||
nlink_t:j
|
||||
off64_t:x
|
||||
off_t:l
|
||||
pid_t:i
|
||||
pthread_attr_t:14pthread_attr_t
|
||||
pthread_barrier_t:17pthread_barrier_t
|
||||
pthread_barrierattr_t:21pthread_barrierattr_t
|
||||
pthread_cond_t:14pthread_cond_t
|
||||
pthread_condattr_t:18pthread_condattr_t
|
||||
pthread_key_t:j
|
||||
pthread_mutex_t:15pthread_mutex_t
|
||||
pthread_mutexattr_t:19pthread_mutexattr_t
|
||||
pthread_once_t:i
|
||||
pthread_rwlock_t:16pthread_rwlock_t
|
||||
pthread_rwlockattr_t:20pthread_rwlockattr_t
|
||||
pthread_spinlock_t:i
|
||||
pthread_t:m
|
||||
quad_t:x
|
||||
register_t:i
|
||||
rlim64_t:y
|
||||
rlim_t:m
|
||||
sigset_t:10__sigset_t
|
||||
size_t:j
|
||||
socklen_t:j
|
||||
ssize_t:i
|
||||
suseconds_t:l
|
||||
time_t:l
|
||||
u_char:h
|
||||
uid_t:j
|
||||
uint:j
|
||||
u_int:j
|
||||
u_int16_t:t
|
||||
u_int32_t:j
|
||||
u_int64_t:y
|
||||
u_int8_t:h
|
||||
ulong:m
|
||||
u_long:m
|
||||
u_quad_t:y
|
||||
useconds_t:j
|
||||
ushort:t
|
||||
u_short:t
|
|
@ -1,29 +0,0 @@
|
|||
/* cacheflush system call for Nios II Linux.
|
||||
Copyright (C) 2015-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <stddef.h>
|
||||
#include <unistd.h>
|
||||
|
||||
/* Flush cache(s). */
|
||||
int
|
||||
_flush_cache (char *addr, const int nbytes, const int op)
|
||||
{
|
||||
return INLINE_SYSCALL (cacheflush, 3, addr, nbytes, op);
|
||||
}
|
||||
weak_alias (_flush_cache, cacheflush)
|
|
@ -1,83 +0,0 @@
|
|||
/* clone() implementation for Nios II.
|
||||
Copyright (C) 2008-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* clone() is even more special than fork() as it mucks with stacks
|
||||
and invokes a function in the right context after its all over. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
#include <bits/errno.h>
|
||||
#include <tcb-offsets.h>
|
||||
|
||||
/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
|
||||
void *parent_tidptr, void *tls, void *child_tidptr) */
|
||||
|
||||
.text
|
||||
ENTRY(__clone)
|
||||
/* Sanity check arguments. */
|
||||
movi r2, EINVAL
|
||||
/* No NULL function pointers. */
|
||||
beq r4, zero, SYSCALL_ERROR_LABEL
|
||||
/* No NULL stack pointers. */
|
||||
beq r5, zero, SYSCALL_ERROR_LABEL
|
||||
|
||||
subi r5, r5, 8 /* Reserve argument save space. */
|
||||
stw r4, 4(r5) /* Save function pointer. */
|
||||
stw r7, 0(r5) /* Save argument pointer. */
|
||||
|
||||
/* Load arguments. */
|
||||
mov r4, r6
|
||||
ldw r6, 0(sp)
|
||||
ldw r7, 8(sp)
|
||||
ldw r8, 4(sp)
|
||||
|
||||
/* Do the system call. */
|
||||
movi r2, SYS_ify (clone)
|
||||
|
||||
/* End FDE now, because in the child the unwind info will be
|
||||
wrong. */
|
||||
cfi_endproc
|
||||
trap
|
||||
|
||||
/* Check for errors. */
|
||||
bne r7, zero, SYSCALL_ERROR_LABEL
|
||||
/* See if we're on the newly created thread. */
|
||||
beq r2, zero, thread_start
|
||||
/* Successful return from the parent */
|
||||
ret
|
||||
|
||||
thread_start:
|
||||
cfi_startproc
|
||||
cfi_undefined (ra)
|
||||
|
||||
ldw r5, 4(sp) /* Function pointer. */
|
||||
ldw r4, 0(sp) /* Argument pointer. */
|
||||
addi sp, sp, 8
|
||||
|
||||
/* Call the user's function. */
|
||||
callr r5
|
||||
|
||||
/* exit with the result. */
|
||||
movi r2, SYS_ify (exit)
|
||||
trap
|
||||
cfi_endproc
|
||||
|
||||
cfi_startproc
|
||||
PSEUDO_END (__clone)
|
||||
libc_hidden_def (__clone)
|
||||
weak_alias (__clone, clone)
|
|
@ -1,5 +0,0 @@
|
|||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/unix/sysv/linux/nios2.
|
||||
|
||||
arch_minimum_kernel=3.19.0
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/unix/sysv/linux/nios2.
|
||||
|
||||
arch_minimum_kernel=3.19.0
|
|
@ -1,66 +0,0 @@
|
|||
/* Save current context.
|
||||
Copyright (C) 2015-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "ucontext_i.h"
|
||||
|
||||
/* int getcontext (ucontext_t *ucp)
|
||||
|
||||
Returns 0 on success -1 and errno on failure.
|
||||
*/
|
||||
.text
|
||||
ENTRY(__getcontext)
|
||||
stw r16, (UCONTEXT_MCONTEXT + 16*4)(r4)
|
||||
stw r17, (UCONTEXT_MCONTEXT + 17*4)(r4)
|
||||
stw r18, (UCONTEXT_MCONTEXT + 18*4)(r4)
|
||||
stw r19, (UCONTEXT_MCONTEXT + 19*4)(r4)
|
||||
stw r20, (UCONTEXT_MCONTEXT + 20*4)(r4)
|
||||
stw r21, (UCONTEXT_MCONTEXT + 21*4)(r4)
|
||||
stw r22, (UCONTEXT_MCONTEXT + 22*4)(r4)
|
||||
stw ra, (UCONTEXT_MCONTEXT + 24*4)(r4)
|
||||
stw fp, (UCONTEXT_MCONTEXT + 25*4)(r4)
|
||||
stw gp, (UCONTEXT_MCONTEXT + 26*4)(r4)
|
||||
/* Store return address at place for EA. */
|
||||
stw ra, (UCONTEXT_MCONTEXT + 28*4)(r4)
|
||||
stw sp, (UCONTEXT_MCONTEXT + 29*4)(r4)
|
||||
/* Store zero for return success. */
|
||||
stw zero, (UCONTEXT_MCONTEXT + 2*4)(r4)
|
||||
|
||||
/* Store value "1" at uc_flags to recognize as getcontext created. */
|
||||
movi r2, 1
|
||||
stw r2, UCONTEXT_FLAGS(r4)
|
||||
|
||||
/* Store MCONTEXT_VERSION at first word of mcontext_t. */
|
||||
movi r2, MCONTEXT_VERSION
|
||||
stw r2, UCONTEXT_MCONTEXT(r4)
|
||||
|
||||
/* Get signal mask. */
|
||||
/* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */
|
||||
movi r7, _NSIG8
|
||||
addi r6, r4, UCONTEXT_SIGMASK
|
||||
mov r5, zero
|
||||
movi r4, SIG_BLOCK
|
||||
movi r2, SYS_ify (rt_sigprocmask)
|
||||
trap
|
||||
bne r7, zero, SYSCALL_ERROR_LABEL
|
||||
|
||||
mov r2, zero
|
||||
ret
|
||||
|
||||
PSEUDO_END(__getcontext)
|
||||
weak_alias(__getcontext, getcontext)
|
|
@ -1,24 +0,0 @@
|
|||
/* Set flags signalling availability of kernel features based on given
|
||||
kernel version number. NIOS2 version.
|
||||
Copyright (C) 2023-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include_next <kernel-features.h>
|
||||
|
||||
/* nios2 does not provide clone3. */
|
||||
#undef __ASSUME_CLONE3
|
||||
#define __ASSUME_CLONE3 0
|
|
@ -1,26 +0,0 @@
|
|||
/* Linux kernel struct rt_sigframe declaration for Nios II.
|
||||
Copyright (C) 2015-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation; either version 2.1 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This structure must have the same shape as the Linux kernel
|
||||
equivalent. */
|
||||
|
||||
struct kernel_rt_sigframe
|
||||
{
|
||||
siginfo_t info;
|
||||
ucontext_t uc;
|
||||
};
|
|
@ -1,9 +0,0 @@
|
|||
/* NIOS2 uses the generic Linux UAPI but defines SA_RESTORER. */
|
||||
#define SA_RESTORER 0x04000000
|
||||
|
||||
#define SET_SA_RESTORER(kact, act) \
|
||||
(kact)->sa_restorer = (act)->sa_restorer
|
||||
#define RESET_SA_RESTORER(act, kact) \
|
||||
(act)->sa_restorer = (kact)->sa_restorer
|
||||
|
||||
#include <sysdeps/unix/sysv/linux/kernel_sigaction.h>
|
|
@ -1,21 +0,0 @@
|
|||
/* Internal definitions for stat functions. Linux/nios2.
|
||||
Copyright (C) 2021-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#define STAT_IS_KERNEL_STAT 1
|
||||
#define XSTAT_IS_XSTAT64 0
|
||||
#define STATFS_IS_STATFS64 0
|
|
@ -1,9 +0,0 @@
|
|||
GLIBC_2.21 __libc_stack_end D 0x4
|
||||
GLIBC_2.21 __stack_chk_guard D 0x4
|
||||
GLIBC_2.21 __tls_get_addr F
|
||||
GLIBC_2.21 _dl_mcount F
|
||||
GLIBC_2.21 _r_debug D 0x14
|
||||
GLIBC_2.34 __rtld_version_placeholder F
|
||||
GLIBC_2.35 __rseq_flags D 0x4
|
||||
GLIBC_2.35 __rseq_offset D 0x4
|
||||
GLIBC_2.35 __rseq_size D 0x4
|
|
@ -1 +0,0 @@
|
|||
GLIBC_2.21 __ctype_get_mb_cur_max F
|
|
@ -1 +0,0 @@
|
|||
GLIBC_2.21 __libanl_version_placeholder F
|
File diff suppressed because it is too large
Load Diff
|
@ -1,28 +0,0 @@
|
|||
GLIBC_2.21 __free_hook D 0x4
|
||||
GLIBC_2.21 __malloc_hook D 0x4
|
||||
GLIBC_2.21 __memalign_hook D 0x4
|
||||
GLIBC_2.21 __realloc_hook D 0x4
|
||||
GLIBC_2.21 aligned_alloc F
|
||||
GLIBC_2.21 calloc F
|
||||
GLIBC_2.21 free F
|
||||
GLIBC_2.21 mallinfo F
|
||||
GLIBC_2.21 malloc F
|
||||
GLIBC_2.21 malloc_get_state F
|
||||
GLIBC_2.21 malloc_info F
|
||||
GLIBC_2.21 malloc_set_state F
|
||||
GLIBC_2.21 malloc_stats F
|
||||
GLIBC_2.21 malloc_trim F
|
||||
GLIBC_2.21 malloc_usable_size F
|
||||
GLIBC_2.21 mallopt F
|
||||
GLIBC_2.21 mcheck F
|
||||
GLIBC_2.21 mcheck_check_all F
|
||||
GLIBC_2.21 mcheck_pedantic F
|
||||
GLIBC_2.21 memalign F
|
||||
GLIBC_2.21 mprobe F
|
||||
GLIBC_2.21 mtrace F
|
||||
GLIBC_2.21 muntrace F
|
||||
GLIBC_2.21 posix_memalign F
|
||||
GLIBC_2.21 pvalloc F
|
||||
GLIBC_2.21 realloc F
|
||||
GLIBC_2.21 valloc F
|
||||
GLIBC_2.33 mallinfo2 F
|
|
@ -1 +0,0 @@
|
|||
GLIBC_2.21 __libdl_version_placeholder F
|
|
@ -1,880 +0,0 @@
|
|||
GLIBC_2.21 _LIB_VERSION D 0x4
|
||||
GLIBC_2.21 __acos_finite F
|
||||
GLIBC_2.21 __acosf_finite F
|
||||
GLIBC_2.21 __acosh_finite F
|
||||
GLIBC_2.21 __acoshf_finite F
|
||||
GLIBC_2.21 __asin_finite F
|
||||
GLIBC_2.21 __asinf_finite F
|
||||
GLIBC_2.21 __atan2_finite F
|
||||
GLIBC_2.21 __atan2f_finite F
|
||||
GLIBC_2.21 __atanh_finite F
|
||||
GLIBC_2.21 __atanhf_finite F
|
||||
GLIBC_2.21 __clog10 F
|
||||
GLIBC_2.21 __clog10f F
|
||||
GLIBC_2.21 __clog10l F
|
||||
GLIBC_2.21 __cosh_finite F
|
||||
GLIBC_2.21 __coshf_finite F
|
||||
GLIBC_2.21 __exp10_finite F
|
||||
GLIBC_2.21 __exp10f_finite F
|
||||
GLIBC_2.21 __exp2_finite F
|
||||
GLIBC_2.21 __exp2f_finite F
|
||||
GLIBC_2.21 __exp_finite F
|
||||
GLIBC_2.21 __expf_finite F
|
||||
GLIBC_2.21 __finite F
|
||||
GLIBC_2.21 __finitef F
|
||||
GLIBC_2.21 __finitel F
|
||||
GLIBC_2.21 __fmod_finite F
|
||||
GLIBC_2.21 __fmodf_finite F
|
||||
GLIBC_2.21 __fpclassify F
|
||||
GLIBC_2.21 __fpclassifyf F
|
||||
GLIBC_2.21 __gamma_r_finite F
|
||||
GLIBC_2.21 __gammaf_r_finite F
|
||||
GLIBC_2.21 __hypot_finite F
|
||||
GLIBC_2.21 __hypotf_finite F
|
||||
GLIBC_2.21 __issignaling F
|
||||
GLIBC_2.21 __issignalingf F
|
||||
GLIBC_2.21 __j0_finite F
|
||||
GLIBC_2.21 __j0f_finite F
|
||||
GLIBC_2.21 __j1_finite F
|
||||
GLIBC_2.21 __j1f_finite F
|
||||
GLIBC_2.21 __jn_finite F
|
||||
GLIBC_2.21 __jnf_finite F
|
||||
GLIBC_2.21 __lgamma_r_finite F
|
||||
GLIBC_2.21 __lgammaf_r_finite F
|
||||
GLIBC_2.21 __log10_finite F
|
||||
GLIBC_2.21 __log10f_finite F
|
||||
GLIBC_2.21 __log2_finite F
|
||||
GLIBC_2.21 __log2f_finite F
|
||||
GLIBC_2.21 __log_finite F
|
||||
GLIBC_2.21 __logf_finite F
|
||||
GLIBC_2.21 __pow_finite F
|
||||
GLIBC_2.21 __powf_finite F
|
||||
GLIBC_2.21 __remainder_finite F
|
||||
GLIBC_2.21 __remainderf_finite F
|
||||
GLIBC_2.21 __scalb_finite F
|
||||
GLIBC_2.21 __scalbf_finite F
|
||||
GLIBC_2.21 __signbit F
|
||||
GLIBC_2.21 __signbitf F
|
||||
GLIBC_2.21 __sinh_finite F
|
||||
GLIBC_2.21 __sinhf_finite F
|
||||
GLIBC_2.21 __sqrt_finite F
|
||||
GLIBC_2.21 __sqrtf_finite F
|
||||
GLIBC_2.21 __y0_finite F
|
||||
GLIBC_2.21 __y0f_finite F
|
||||
GLIBC_2.21 __y1_finite F
|
||||
GLIBC_2.21 __y1f_finite F
|
||||
GLIBC_2.21 __yn_finite F
|
||||
GLIBC_2.21 __ynf_finite F
|
||||
GLIBC_2.21 acos F
|
||||
GLIBC_2.21 acosf F
|
||||
GLIBC_2.21 acosh F
|
||||
GLIBC_2.21 acoshf F
|
||||
GLIBC_2.21 acoshl F
|
||||
GLIBC_2.21 acosl F
|
||||
GLIBC_2.21 asin F
|
||||
GLIBC_2.21 asinf F
|
||||
GLIBC_2.21 asinh F
|
||||
GLIBC_2.21 asinhf F
|
||||
GLIBC_2.21 asinhl F
|
||||
GLIBC_2.21 asinl F
|
||||
GLIBC_2.21 atan F
|
||||
GLIBC_2.21 atan2 F
|
||||
GLIBC_2.21 atan2f F
|
||||
GLIBC_2.21 atan2l F
|
||||
GLIBC_2.21 atanf F
|
||||
GLIBC_2.21 atanh F
|
||||
GLIBC_2.21 atanhf F
|
||||
GLIBC_2.21 atanhl F
|
||||
GLIBC_2.21 atanl F
|
||||
GLIBC_2.21 cabs F
|
||||
GLIBC_2.21 cabsf F
|
||||
GLIBC_2.21 cabsl F
|
||||
GLIBC_2.21 cacos F
|
||||
GLIBC_2.21 cacosf F
|
||||
GLIBC_2.21 cacosh F
|
||||
GLIBC_2.21 cacoshf F
|
||||
GLIBC_2.21 cacoshl F
|
||||
GLIBC_2.21 cacosl F
|
||||
GLIBC_2.21 carg F
|
||||
GLIBC_2.21 cargf F
|
||||
GLIBC_2.21 cargl F
|
||||
GLIBC_2.21 casin F
|
||||
GLIBC_2.21 casinf F
|
||||
GLIBC_2.21 casinh F
|
||||
GLIBC_2.21 casinhf F
|
||||
GLIBC_2.21 casinhl F
|
||||
GLIBC_2.21 casinl F
|
||||
GLIBC_2.21 catan F
|
||||
GLIBC_2.21 catanf F
|
||||
GLIBC_2.21 catanh F
|
||||
GLIBC_2.21 catanhf F
|
||||
GLIBC_2.21 catanhl F
|
||||
GLIBC_2.21 catanl F
|
||||
GLIBC_2.21 cbrt F
|
||||
GLIBC_2.21 cbrtf F
|
||||
GLIBC_2.21 cbrtl F
|
||||
GLIBC_2.21 ccos F
|
||||
GLIBC_2.21 ccosf F
|
||||
GLIBC_2.21 ccosh F
|
||||
GLIBC_2.21 ccoshf F
|
||||
GLIBC_2.21 ccoshl F
|
||||
GLIBC_2.21 ccosl F
|
||||
GLIBC_2.21 ceil F
|
||||
GLIBC_2.21 ceilf F
|
||||
GLIBC_2.21 ceill F
|
||||
GLIBC_2.21 cexp F
|
||||
GLIBC_2.21 cexpf F
|
||||
GLIBC_2.21 cexpl F
|
||||
GLIBC_2.21 cimag F
|
||||
GLIBC_2.21 cimagf F
|
||||
GLIBC_2.21 cimagl F
|
||||
GLIBC_2.21 clog F
|
||||
GLIBC_2.21 clog10 F
|
||||
GLIBC_2.21 clog10f F
|
||||
GLIBC_2.21 clog10l F
|
||||
GLIBC_2.21 clogf F
|
||||
GLIBC_2.21 clogl F
|
||||
GLIBC_2.21 conj F
|
||||
GLIBC_2.21 conjf F
|
||||
GLIBC_2.21 conjl F
|
||||
GLIBC_2.21 copysign F
|
||||
GLIBC_2.21 copysignf F
|
||||
GLIBC_2.21 copysignl F
|
||||
GLIBC_2.21 cos F
|
||||
GLIBC_2.21 cosf F
|
||||
GLIBC_2.21 cosh F
|
||||
GLIBC_2.21 coshf F
|
||||
GLIBC_2.21 coshl F
|
||||
GLIBC_2.21 cosl F
|
||||
GLIBC_2.21 cpow F
|
||||
GLIBC_2.21 cpowf F
|
||||
GLIBC_2.21 cpowl F
|
||||
GLIBC_2.21 cproj F
|
||||
GLIBC_2.21 cprojf F
|
||||
GLIBC_2.21 cprojl F
|
||||
GLIBC_2.21 creal F
|
||||
GLIBC_2.21 crealf F
|
||||
GLIBC_2.21 creall F
|
||||
GLIBC_2.21 csin F
|
||||
GLIBC_2.21 csinf F
|
||||
GLIBC_2.21 csinh F
|
||||
GLIBC_2.21 csinhf F
|
||||
GLIBC_2.21 csinhl F
|
||||
GLIBC_2.21 csinl F
|
||||
GLIBC_2.21 csqrt F
|
||||
GLIBC_2.21 csqrtf F
|
||||
GLIBC_2.21 csqrtl F
|
||||
GLIBC_2.21 ctan F
|
||||
GLIBC_2.21 ctanf F
|
||||
GLIBC_2.21 ctanh F
|
||||
GLIBC_2.21 ctanhf F
|
||||
GLIBC_2.21 ctanhl F
|
||||
GLIBC_2.21 ctanl F
|
||||
GLIBC_2.21 drem F
|
||||
GLIBC_2.21 dremf F
|
||||
GLIBC_2.21 dreml F
|
||||
GLIBC_2.21 erf F
|
||||
GLIBC_2.21 erfc F
|
||||
GLIBC_2.21 erfcf F
|
||||
GLIBC_2.21 erfcl F
|
||||
GLIBC_2.21 erff F
|
||||
GLIBC_2.21 erfl F
|
||||
GLIBC_2.21 exp F
|
||||
GLIBC_2.21 exp10 F
|
||||
GLIBC_2.21 exp10f F
|
||||
GLIBC_2.21 exp10l F
|
||||
GLIBC_2.21 exp2 F
|
||||
GLIBC_2.21 exp2f F
|
||||
GLIBC_2.21 exp2l F
|
||||
GLIBC_2.21 expf F
|
||||
GLIBC_2.21 expl F
|
||||
GLIBC_2.21 expm1 F
|
||||
GLIBC_2.21 expm1f F
|
||||
GLIBC_2.21 expm1l F
|
||||
GLIBC_2.21 fabs F
|
||||
GLIBC_2.21 fabsf F
|
||||
GLIBC_2.21 fabsl F
|
||||
GLIBC_2.21 fdim F
|
||||
GLIBC_2.21 fdimf F
|
||||
GLIBC_2.21 fdiml F
|
||||
GLIBC_2.21 feclearexcept F
|
||||
GLIBC_2.21 fedisableexcept F
|
||||
GLIBC_2.21 feenableexcept F
|
||||
GLIBC_2.21 fegetenv F
|
||||
GLIBC_2.21 fegetexcept F
|
||||
GLIBC_2.21 fegetexceptflag F
|
||||
GLIBC_2.21 fegetround F
|
||||
GLIBC_2.21 feholdexcept F
|
||||
GLIBC_2.21 feraiseexcept F
|
||||
GLIBC_2.21 fesetenv F
|
||||
GLIBC_2.21 fesetexceptflag F
|
||||
GLIBC_2.21 fesetround F
|
||||
GLIBC_2.21 fetestexcept F
|
||||
GLIBC_2.21 feupdateenv F
|
||||
GLIBC_2.21 finite F
|
||||
GLIBC_2.21 finitef F
|
||||
GLIBC_2.21 finitel F
|
||||
GLIBC_2.21 floor F
|
||||
GLIBC_2.21 floorf F
|
||||
GLIBC_2.21 floorl F
|
||||
GLIBC_2.21 fma F
|
||||
GLIBC_2.21 fmaf F
|
||||
GLIBC_2.21 fmal F
|
||||
GLIBC_2.21 fmax F
|
||||
GLIBC_2.21 fmaxf F
|
||||
GLIBC_2.21 fmaxl F
|
||||
GLIBC_2.21 fmin F
|
||||
GLIBC_2.21 fminf F
|
||||
GLIBC_2.21 fminl F
|
||||
GLIBC_2.21 fmod F
|
||||
GLIBC_2.21 fmodf F
|
||||
GLIBC_2.21 fmodl F
|
||||
GLIBC_2.21 frexp F
|
||||
GLIBC_2.21 frexpf F
|
||||
GLIBC_2.21 frexpl F
|
||||
GLIBC_2.21 gamma F
|
||||
GLIBC_2.21 gammaf F
|
||||
GLIBC_2.21 gammal F
|
||||
GLIBC_2.21 hypot F
|
||||
GLIBC_2.21 hypotf F
|
||||
GLIBC_2.21 hypotl F
|
||||
GLIBC_2.21 ilogb F
|
||||
GLIBC_2.21 ilogbf F
|
||||
GLIBC_2.21 ilogbl F
|
||||
GLIBC_2.21 j0 F
|
||||
GLIBC_2.21 j0f F
|
||||
GLIBC_2.21 j0l F
|
||||
GLIBC_2.21 j1 F
|
||||
GLIBC_2.21 j1f F
|
||||
GLIBC_2.21 j1l F
|
||||
GLIBC_2.21 jn F
|
||||
GLIBC_2.21 jnf F
|
||||
GLIBC_2.21 jnl F
|
||||
GLIBC_2.21 ldexp F
|
||||
GLIBC_2.21 ldexpf F
|
||||
GLIBC_2.21 ldexpl F
|
||||
GLIBC_2.21 lgamma F
|
||||
GLIBC_2.21 lgamma_r F
|
||||
GLIBC_2.21 lgammaf F
|
||||
GLIBC_2.21 lgammaf_r F
|
||||
GLIBC_2.21 lgammal F
|
||||
GLIBC_2.21 lgammal_r F
|
||||
GLIBC_2.21 llrint F
|
||||
GLIBC_2.21 llrintf F
|
||||
GLIBC_2.21 llrintl F
|
||||
GLIBC_2.21 llround F
|
||||
GLIBC_2.21 llroundf F
|
||||
GLIBC_2.21 llroundl F
|
||||
GLIBC_2.21 log F
|
||||
GLIBC_2.21 log10 F
|
||||
GLIBC_2.21 log10f F
|
||||
GLIBC_2.21 log10l F
|
||||
GLIBC_2.21 log1p F
|
||||
GLIBC_2.21 log1pf F
|
||||
GLIBC_2.21 log1pl F
|
||||
GLIBC_2.21 log2 F
|
||||
GLIBC_2.21 log2f F
|
||||
GLIBC_2.21 log2l F
|
||||
GLIBC_2.21 logb F
|
||||
GLIBC_2.21 logbf F
|
||||
GLIBC_2.21 logbl F
|
||||
GLIBC_2.21 logf F
|
||||
GLIBC_2.21 logl F
|
||||
GLIBC_2.21 lrint F
|
||||
GLIBC_2.21 lrintf F
|
||||
GLIBC_2.21 lrintl F
|
||||
GLIBC_2.21 lround F
|
||||
GLIBC_2.21 lroundf F
|
||||
GLIBC_2.21 lroundl F
|
||||
GLIBC_2.21 matherr F
|
||||
GLIBC_2.21 modf F
|
||||
GLIBC_2.21 modff F
|
||||
GLIBC_2.21 modfl F
|
||||
GLIBC_2.21 nan F
|
||||
GLIBC_2.21 nanf F
|
||||
GLIBC_2.21 nanl F
|
||||
GLIBC_2.21 nearbyint F
|
||||
GLIBC_2.21 nearbyintf F
|
||||
GLIBC_2.21 nearbyintl F
|
||||
GLIBC_2.21 nextafter F
|
||||
GLIBC_2.21 nextafterf F
|
||||
GLIBC_2.21 nextafterl F
|
||||
GLIBC_2.21 nexttoward F
|
||||
GLIBC_2.21 nexttowardf F
|
||||
GLIBC_2.21 nexttowardl F
|
||||
GLIBC_2.21 pow F
|
||||
GLIBC_2.21 pow10 F
|
||||
GLIBC_2.21 pow10f F
|
||||
GLIBC_2.21 pow10l F
|
||||
GLIBC_2.21 powf F
|
||||
GLIBC_2.21 powl F
|
||||
GLIBC_2.21 remainder F
|
||||
GLIBC_2.21 remainderf F
|
||||
GLIBC_2.21 remainderl F
|
||||
GLIBC_2.21 remquo F
|
||||
GLIBC_2.21 remquof F
|
||||
GLIBC_2.21 remquol F
|
||||
GLIBC_2.21 rint F
|
||||
GLIBC_2.21 rintf F
|
||||
GLIBC_2.21 rintl F
|
||||
GLIBC_2.21 round F
|
||||
GLIBC_2.21 roundf F
|
||||
GLIBC_2.21 roundl F
|
||||
GLIBC_2.21 scalb F
|
||||
GLIBC_2.21 scalbf F
|
||||
GLIBC_2.21 scalbl F
|
||||
GLIBC_2.21 scalbln F
|
||||
GLIBC_2.21 scalblnf F
|
||||
GLIBC_2.21 scalblnl F
|
||||
GLIBC_2.21 scalbn F
|
||||
GLIBC_2.21 scalbnf F
|
||||
GLIBC_2.21 scalbnl F
|
||||
GLIBC_2.21 signgam D 0x4
|
||||
GLIBC_2.21 significand F
|
||||
GLIBC_2.21 significandf F
|
||||
GLIBC_2.21 significandl F
|
||||
GLIBC_2.21 sin F
|
||||
GLIBC_2.21 sincos F
|
||||
GLIBC_2.21 sincosf F
|
||||
GLIBC_2.21 sincosl F
|
||||
GLIBC_2.21 sinf F
|
||||
GLIBC_2.21 sinh F
|
||||
GLIBC_2.21 sinhf F
|
||||
GLIBC_2.21 sinhl F
|
||||
GLIBC_2.21 sinl F
|
||||
GLIBC_2.21 sqrt F
|
||||
GLIBC_2.21 sqrtf F
|
||||
GLIBC_2.21 sqrtl F
|
||||
GLIBC_2.21 tan F
|
||||
GLIBC_2.21 tanf F
|
||||
GLIBC_2.21 tanh F
|
||||
GLIBC_2.21 tanhf F
|
||||
GLIBC_2.21 tanhl F
|
||||
GLIBC_2.21 tanl F
|
||||
GLIBC_2.21 tgamma F
|
||||
GLIBC_2.21 tgammaf F
|
||||
GLIBC_2.21 tgammal F
|
||||
GLIBC_2.21 trunc F
|
||||
GLIBC_2.21 truncf F
|
||||
GLIBC_2.21 truncl F
|
||||
GLIBC_2.21 y0 F
|
||||
GLIBC_2.21 y0f F
|
||||
GLIBC_2.21 y0l F
|
||||
GLIBC_2.21 y1 F
|
||||
GLIBC_2.21 y1f F
|
||||
GLIBC_2.21 y1l F
|
||||
GLIBC_2.21 yn F
|
||||
GLIBC_2.21 ynf F
|
||||
GLIBC_2.21 ynl F
|
||||
GLIBC_2.23 __signgam D 0x4
|
||||
GLIBC_2.23 lgamma F
|
||||
GLIBC_2.23 lgammaf F
|
||||
GLIBC_2.23 lgammal F
|
||||
GLIBC_2.24 nextdown F
|
||||
GLIBC_2.24 nextdownf F
|
||||
GLIBC_2.24 nextdownl F
|
||||
GLIBC_2.24 nextup F
|
||||
GLIBC_2.24 nextupf F
|
||||
GLIBC_2.24 nextupl F
|
||||
GLIBC_2.25 __iseqsig F
|
||||
GLIBC_2.25 __iseqsigf F
|
||||
GLIBC_2.25 canonicalize F
|
||||
GLIBC_2.25 canonicalizef F
|
||||
GLIBC_2.25 canonicalizel F
|
||||
GLIBC_2.25 fegetmode F
|
||||
GLIBC_2.25 fesetexcept F
|
||||
GLIBC_2.25 fesetmode F
|
||||
GLIBC_2.25 fetestexceptflag F
|
||||
GLIBC_2.25 fmaxmag F
|
||||
GLIBC_2.25 fmaxmagf F
|
||||
GLIBC_2.25 fmaxmagl F
|
||||
GLIBC_2.25 fminmag F
|
||||
GLIBC_2.25 fminmagf F
|
||||
GLIBC_2.25 fminmagl F
|
||||
GLIBC_2.25 fromfp F
|
||||
GLIBC_2.25 fromfpf F
|
||||
GLIBC_2.25 fromfpl F
|
||||
GLIBC_2.25 fromfpx F
|
||||
GLIBC_2.25 fromfpxf F
|
||||
GLIBC_2.25 fromfpxl F
|
||||
GLIBC_2.25 getpayload F
|
||||
GLIBC_2.25 getpayloadf F
|
||||
GLIBC_2.25 getpayloadl F
|
||||
GLIBC_2.25 llogb F
|
||||
GLIBC_2.25 llogbf F
|
||||
GLIBC_2.25 llogbl F
|
||||
GLIBC_2.25 roundeven F
|
||||
GLIBC_2.25 roundevenf F
|
||||
GLIBC_2.25 roundevenl F
|
||||
GLIBC_2.25 setpayload F
|
||||
GLIBC_2.25 setpayloadf F
|
||||
GLIBC_2.25 setpayloadl F
|
||||
GLIBC_2.25 setpayloadsig F
|
||||
GLIBC_2.25 setpayloadsigf F
|
||||
GLIBC_2.25 setpayloadsigl F
|
||||
GLIBC_2.25 totalorder F
|
||||
GLIBC_2.25 totalorderf F
|
||||
GLIBC_2.25 totalorderl F
|
||||
GLIBC_2.25 totalordermag F
|
||||
GLIBC_2.25 totalordermagf F
|
||||
GLIBC_2.25 totalordermagl F
|
||||
GLIBC_2.25 ufromfp F
|
||||
GLIBC_2.25 ufromfpf F
|
||||
GLIBC_2.25 ufromfpl F
|
||||
GLIBC_2.25 ufromfpx F
|
||||
GLIBC_2.25 ufromfpxf F
|
||||
GLIBC_2.25 ufromfpxl F
|
||||
GLIBC_2.27 acosf32 F
|
||||
GLIBC_2.27 acosf32x F
|
||||
GLIBC_2.27 acosf64 F
|
||||
GLIBC_2.27 acoshf32 F
|
||||
GLIBC_2.27 acoshf32x F
|
||||
GLIBC_2.27 acoshf64 F
|
||||
GLIBC_2.27 asinf32 F
|
||||
GLIBC_2.27 asinf32x F
|
||||
GLIBC_2.27 asinf64 F
|
||||
GLIBC_2.27 asinhf32 F
|
||||
GLIBC_2.27 asinhf32x F
|
||||
GLIBC_2.27 asinhf64 F
|
||||
GLIBC_2.27 atan2f32 F
|
||||
GLIBC_2.27 atan2f32x F
|
||||
GLIBC_2.27 atan2f64 F
|
||||
GLIBC_2.27 atanf32 F
|
||||
GLIBC_2.27 atanf32x F
|
||||
GLIBC_2.27 atanf64 F
|
||||
GLIBC_2.27 atanhf32 F
|
||||
GLIBC_2.27 atanhf32x F
|
||||
GLIBC_2.27 atanhf64 F
|
||||
GLIBC_2.27 cabsf32 F
|
||||
GLIBC_2.27 cabsf32x F
|
||||
GLIBC_2.27 cabsf64 F
|
||||
GLIBC_2.27 cacosf32 F
|
||||
GLIBC_2.27 cacosf32x F
|
||||
GLIBC_2.27 cacosf64 F
|
||||
GLIBC_2.27 cacoshf32 F
|
||||
GLIBC_2.27 cacoshf32x F
|
||||
GLIBC_2.27 cacoshf64 F
|
||||
GLIBC_2.27 canonicalizef32 F
|
||||
GLIBC_2.27 canonicalizef32x F
|
||||
GLIBC_2.27 canonicalizef64 F
|
||||
GLIBC_2.27 cargf32 F
|
||||
GLIBC_2.27 cargf32x F
|
||||
GLIBC_2.27 cargf64 F
|
||||
GLIBC_2.27 casinf32 F
|
||||
GLIBC_2.27 casinf32x F
|
||||
GLIBC_2.27 casinf64 F
|
||||
GLIBC_2.27 casinhf32 F
|
||||
GLIBC_2.27 casinhf32x F
|
||||
GLIBC_2.27 casinhf64 F
|
||||
GLIBC_2.27 catanf32 F
|
||||
GLIBC_2.27 catanf32x F
|
||||
GLIBC_2.27 catanf64 F
|
||||
GLIBC_2.27 catanhf32 F
|
||||
GLIBC_2.27 catanhf32x F
|
||||
GLIBC_2.27 catanhf64 F
|
||||
GLIBC_2.27 cbrtf32 F
|
||||
GLIBC_2.27 cbrtf32x F
|
||||
GLIBC_2.27 cbrtf64 F
|
||||
GLIBC_2.27 ccosf32 F
|
||||
GLIBC_2.27 ccosf32x F
|
||||
GLIBC_2.27 ccosf64 F
|
||||
GLIBC_2.27 ccoshf32 F
|
||||
GLIBC_2.27 ccoshf32x F
|
||||
GLIBC_2.27 ccoshf64 F
|
||||
GLIBC_2.27 ceilf32 F
|
||||
GLIBC_2.27 ceilf32x F
|
||||
GLIBC_2.27 ceilf64 F
|
||||
GLIBC_2.27 cexpf32 F
|
||||
GLIBC_2.27 cexpf32x F
|
||||
GLIBC_2.27 cexpf64 F
|
||||
GLIBC_2.27 cimagf32 F
|
||||
GLIBC_2.27 cimagf32x F
|
||||
GLIBC_2.27 cimagf64 F
|
||||
GLIBC_2.27 clog10f32 F
|
||||
GLIBC_2.27 clog10f32x F
|
||||
GLIBC_2.27 clog10f64 F
|
||||
GLIBC_2.27 clogf32 F
|
||||
GLIBC_2.27 clogf32x F
|
||||
GLIBC_2.27 clogf64 F
|
||||
GLIBC_2.27 conjf32 F
|
||||
GLIBC_2.27 conjf32x F
|
||||
GLIBC_2.27 conjf64 F
|
||||
GLIBC_2.27 copysignf32 F
|
||||
GLIBC_2.27 copysignf32x F
|
||||
GLIBC_2.27 copysignf64 F
|
||||
GLIBC_2.27 cosf32 F
|
||||
GLIBC_2.27 cosf32x F
|
||||
GLIBC_2.27 cosf64 F
|
||||
GLIBC_2.27 coshf32 F
|
||||
GLIBC_2.27 coshf32x F
|
||||
GLIBC_2.27 coshf64 F
|
||||
GLIBC_2.27 cpowf32 F
|
||||
GLIBC_2.27 cpowf32x F
|
||||
GLIBC_2.27 cpowf64 F
|
||||
GLIBC_2.27 cprojf32 F
|
||||
GLIBC_2.27 cprojf32x F
|
||||
GLIBC_2.27 cprojf64 F
|
||||
GLIBC_2.27 crealf32 F
|
||||
GLIBC_2.27 crealf32x F
|
||||
GLIBC_2.27 crealf64 F
|
||||
GLIBC_2.27 csinf32 F
|
||||
GLIBC_2.27 csinf32x F
|
||||
GLIBC_2.27 csinf64 F
|
||||
GLIBC_2.27 csinhf32 F
|
||||
GLIBC_2.27 csinhf32x F
|
||||
GLIBC_2.27 csinhf64 F
|
||||
GLIBC_2.27 csqrtf32 F
|
||||
GLIBC_2.27 csqrtf32x F
|
||||
GLIBC_2.27 csqrtf64 F
|
||||
GLIBC_2.27 ctanf32 F
|
||||
GLIBC_2.27 ctanf32x F
|
||||
GLIBC_2.27 ctanf64 F
|
||||
GLIBC_2.27 ctanhf32 F
|
||||
GLIBC_2.27 ctanhf32x F
|
||||
GLIBC_2.27 ctanhf64 F
|
||||
GLIBC_2.27 erfcf32 F
|
||||
GLIBC_2.27 erfcf32x F
|
||||
GLIBC_2.27 erfcf64 F
|
||||
GLIBC_2.27 erff32 F
|
||||
GLIBC_2.27 erff32x F
|
||||
GLIBC_2.27 erff64 F
|
||||
GLIBC_2.27 exp10f32 F
|
||||
GLIBC_2.27 exp10f32x F
|
||||
GLIBC_2.27 exp10f64 F
|
||||
GLIBC_2.27 exp2f F
|
||||
GLIBC_2.27 exp2f32 F
|
||||
GLIBC_2.27 exp2f32x F
|
||||
GLIBC_2.27 exp2f64 F
|
||||
GLIBC_2.27 expf F
|
||||
GLIBC_2.27 expf32 F
|
||||
GLIBC_2.27 expf32x F
|
||||
GLIBC_2.27 expf64 F
|
||||
GLIBC_2.27 expm1f32 F
|
||||
GLIBC_2.27 expm1f32x F
|
||||
GLIBC_2.27 expm1f64 F
|
||||
GLIBC_2.27 fabsf32 F
|
||||
GLIBC_2.27 fabsf32x F
|
||||
GLIBC_2.27 fabsf64 F
|
||||
GLIBC_2.27 fdimf32 F
|
||||
GLIBC_2.27 fdimf32x F
|
||||
GLIBC_2.27 fdimf64 F
|
||||
GLIBC_2.27 floorf32 F
|
||||
GLIBC_2.27 floorf32x F
|
||||
GLIBC_2.27 floorf64 F
|
||||
GLIBC_2.27 fmaf32 F
|
||||
GLIBC_2.27 fmaf32x F
|
||||
GLIBC_2.27 fmaf64 F
|
||||
GLIBC_2.27 fmaxf32 F
|
||||
GLIBC_2.27 fmaxf32x F
|
||||
GLIBC_2.27 fmaxf64 F
|
||||
GLIBC_2.27 fmaxmagf32 F
|
||||
GLIBC_2.27 fmaxmagf32x F
|
||||
GLIBC_2.27 fmaxmagf64 F
|
||||
GLIBC_2.27 fminf32 F
|
||||
GLIBC_2.27 fminf32x F
|
||||
GLIBC_2.27 fminf64 F
|
||||
GLIBC_2.27 fminmagf32 F
|
||||
GLIBC_2.27 fminmagf32x F
|
||||
GLIBC_2.27 fminmagf64 F
|
||||
GLIBC_2.27 fmodf32 F
|
||||
GLIBC_2.27 fmodf32x F
|
||||
GLIBC_2.27 fmodf64 F
|
||||
GLIBC_2.27 frexpf32 F
|
||||
GLIBC_2.27 frexpf32x F
|
||||
GLIBC_2.27 frexpf64 F
|
||||
GLIBC_2.27 fromfpf32 F
|
||||
GLIBC_2.27 fromfpf32x F
|
||||
GLIBC_2.27 fromfpf64 F
|
||||
GLIBC_2.27 fromfpxf32 F
|
||||
GLIBC_2.27 fromfpxf32x F
|
||||
GLIBC_2.27 fromfpxf64 F
|
||||
GLIBC_2.27 getpayloadf32 F
|
||||
GLIBC_2.27 getpayloadf32x F
|
||||
GLIBC_2.27 getpayloadf64 F
|
||||
GLIBC_2.27 hypotf32 F
|
||||
GLIBC_2.27 hypotf32x F
|
||||
GLIBC_2.27 hypotf64 F
|
||||
GLIBC_2.27 ilogbf32 F
|
||||
GLIBC_2.27 ilogbf32x F
|
||||
GLIBC_2.27 ilogbf64 F
|
||||
GLIBC_2.27 j0f32 F
|
||||
GLIBC_2.27 j0f32x F
|
||||
GLIBC_2.27 j0f64 F
|
||||
GLIBC_2.27 j1f32 F
|
||||
GLIBC_2.27 j1f32x F
|
||||
GLIBC_2.27 j1f64 F
|
||||
GLIBC_2.27 jnf32 F
|
||||
GLIBC_2.27 jnf32x F
|
||||
GLIBC_2.27 jnf64 F
|
||||
GLIBC_2.27 ldexpf32 F
|
||||
GLIBC_2.27 ldexpf32x F
|
||||
GLIBC_2.27 ldexpf64 F
|
||||
GLIBC_2.27 lgammaf32 F
|
||||
GLIBC_2.27 lgammaf32_r F
|
||||
GLIBC_2.27 lgammaf32x F
|
||||
GLIBC_2.27 lgammaf32x_r F
|
||||
GLIBC_2.27 lgammaf64 F
|
||||
GLIBC_2.27 lgammaf64_r F
|
||||
GLIBC_2.27 llogbf32 F
|
||||
GLIBC_2.27 llogbf32x F
|
||||
GLIBC_2.27 llogbf64 F
|
||||
GLIBC_2.27 llrintf32 F
|
||||
GLIBC_2.27 llrintf32x F
|
||||
GLIBC_2.27 llrintf64 F
|
||||
GLIBC_2.27 llroundf32 F
|
||||
GLIBC_2.27 llroundf32x F
|
||||
GLIBC_2.27 llroundf64 F
|
||||
GLIBC_2.27 log10f32 F
|
||||
GLIBC_2.27 log10f32x F
|
||||
GLIBC_2.27 log10f64 F
|
||||
GLIBC_2.27 log1pf32 F
|
||||
GLIBC_2.27 log1pf32x F
|
||||
GLIBC_2.27 log1pf64 F
|
||||
GLIBC_2.27 log2f F
|
||||
GLIBC_2.27 log2f32 F
|
||||
GLIBC_2.27 log2f32x F
|
||||
GLIBC_2.27 log2f64 F
|
||||
GLIBC_2.27 logbf32 F
|
||||
GLIBC_2.27 logbf32x F
|
||||
GLIBC_2.27 logbf64 F
|
||||
GLIBC_2.27 logf F
|
||||
GLIBC_2.27 logf32 F
|
||||
GLIBC_2.27 logf32x F
|
||||
GLIBC_2.27 logf64 F
|
||||
GLIBC_2.27 lrintf32 F
|
||||
GLIBC_2.27 lrintf32x F
|
||||
GLIBC_2.27 lrintf64 F
|
||||
GLIBC_2.27 lroundf32 F
|
||||
GLIBC_2.27 lroundf32x F
|
||||
GLIBC_2.27 lroundf64 F
|
||||
GLIBC_2.27 modff32 F
|
||||
GLIBC_2.27 modff32x F
|
||||
GLIBC_2.27 modff64 F
|
||||
GLIBC_2.27 nanf32 F
|
||||
GLIBC_2.27 nanf32x F
|
||||
GLIBC_2.27 nanf64 F
|
||||
GLIBC_2.27 nearbyintf32 F
|
||||
GLIBC_2.27 nearbyintf32x F
|
||||
GLIBC_2.27 nearbyintf64 F
|
||||
GLIBC_2.27 nextafterf32 F
|
||||
GLIBC_2.27 nextafterf32x F
|
||||
GLIBC_2.27 nextafterf64 F
|
||||
GLIBC_2.27 nextdownf32 F
|
||||
GLIBC_2.27 nextdownf32x F
|
||||
GLIBC_2.27 nextdownf64 F
|
||||
GLIBC_2.27 nextupf32 F
|
||||
GLIBC_2.27 nextupf32x F
|
||||
GLIBC_2.27 nextupf64 F
|
||||
GLIBC_2.27 powf F
|
||||
GLIBC_2.27 powf32 F
|
||||
GLIBC_2.27 powf32x F
|
||||
GLIBC_2.27 powf64 F
|
||||
GLIBC_2.27 remainderf32 F
|
||||
GLIBC_2.27 remainderf32x F
|
||||
GLIBC_2.27 remainderf64 F
|
||||
GLIBC_2.27 remquof32 F
|
||||
GLIBC_2.27 remquof32x F
|
||||
GLIBC_2.27 remquof64 F
|
||||
GLIBC_2.27 rintf32 F
|
||||
GLIBC_2.27 rintf32x F
|
||||
GLIBC_2.27 rintf64 F
|
||||
GLIBC_2.27 roundevenf32 F
|
||||
GLIBC_2.27 roundevenf32x F
|
||||
GLIBC_2.27 roundevenf64 F
|
||||
GLIBC_2.27 roundf32 F
|
||||
GLIBC_2.27 roundf32x F
|
||||
GLIBC_2.27 roundf64 F
|
||||
GLIBC_2.27 scalblnf32 F
|
||||
GLIBC_2.27 scalblnf32x F
|
||||
GLIBC_2.27 scalblnf64 F
|
||||
GLIBC_2.27 scalbnf32 F
|
||||
GLIBC_2.27 scalbnf32x F
|
||||
GLIBC_2.27 scalbnf64 F
|
||||
GLIBC_2.27 setpayloadf32 F
|
||||
GLIBC_2.27 setpayloadf32x F
|
||||
GLIBC_2.27 setpayloadf64 F
|
||||
GLIBC_2.27 setpayloadsigf32 F
|
||||
GLIBC_2.27 setpayloadsigf32x F
|
||||
GLIBC_2.27 setpayloadsigf64 F
|
||||
GLIBC_2.27 sincosf32 F
|
||||
GLIBC_2.27 sincosf32x F
|
||||
GLIBC_2.27 sincosf64 F
|
||||
GLIBC_2.27 sinf32 F
|
||||
GLIBC_2.27 sinf32x F
|
||||
GLIBC_2.27 sinf64 F
|
||||
GLIBC_2.27 sinhf32 F
|
||||
GLIBC_2.27 sinhf32x F
|
||||
GLIBC_2.27 sinhf64 F
|
||||
GLIBC_2.27 sqrtf32 F
|
||||
GLIBC_2.27 sqrtf32x F
|
||||
GLIBC_2.27 sqrtf64 F
|
||||
GLIBC_2.27 tanf32 F
|
||||
GLIBC_2.27 tanf32x F
|
||||
GLIBC_2.27 tanf64 F
|
||||
GLIBC_2.27 tanhf32 F
|
||||
GLIBC_2.27 tanhf32x F
|
||||
GLIBC_2.27 tanhf64 F
|
||||
GLIBC_2.27 tgammaf32 F
|
||||
GLIBC_2.27 tgammaf32x F
|
||||
GLIBC_2.27 tgammaf64 F
|
||||
GLIBC_2.27 totalorderf32 F
|
||||
GLIBC_2.27 totalorderf32x F
|
||||
GLIBC_2.27 totalorderf64 F
|
||||
GLIBC_2.27 totalordermagf32 F
|
||||
GLIBC_2.27 totalordermagf32x F
|
||||
GLIBC_2.27 totalordermagf64 F
|
||||
GLIBC_2.27 truncf32 F
|
||||
GLIBC_2.27 truncf32x F
|
||||
GLIBC_2.27 truncf64 F
|
||||
GLIBC_2.27 ufromfpf32 F
|
||||
GLIBC_2.27 ufromfpf32x F
|
||||
GLIBC_2.27 ufromfpf64 F
|
||||
GLIBC_2.27 ufromfpxf32 F
|
||||
GLIBC_2.27 ufromfpxf32x F
|
||||
GLIBC_2.27 ufromfpxf64 F
|
||||
GLIBC_2.27 y0f32 F
|
||||
GLIBC_2.27 y0f32x F
|
||||
GLIBC_2.27 y0f64 F
|
||||
GLIBC_2.27 y1f32 F
|
||||
GLIBC_2.27 y1f32x F
|
||||
GLIBC_2.27 y1f64 F
|
||||
GLIBC_2.27 ynf32 F
|
||||
GLIBC_2.27 ynf32x F
|
||||
GLIBC_2.27 ynf64 F
|
||||
GLIBC_2.28 daddl F
|
||||
GLIBC_2.28 ddivl F
|
||||
GLIBC_2.28 dmull F
|
||||
GLIBC_2.28 dsubl F
|
||||
GLIBC_2.28 f32addf32x F
|
||||
GLIBC_2.28 f32addf64 F
|
||||
GLIBC_2.28 f32divf32x F
|
||||
GLIBC_2.28 f32divf64 F
|
||||
GLIBC_2.28 f32mulf32x F
|
||||
GLIBC_2.28 f32mulf64 F
|
||||
GLIBC_2.28 f32subf32x F
|
||||
GLIBC_2.28 f32subf64 F
|
||||
GLIBC_2.28 f32xaddf64 F
|
||||
GLIBC_2.28 f32xdivf64 F
|
||||
GLIBC_2.28 f32xmulf64 F
|
||||
GLIBC_2.28 f32xsubf64 F
|
||||
GLIBC_2.28 fadd F
|
||||
GLIBC_2.28 faddl F
|
||||
GLIBC_2.28 fdiv F
|
||||
GLIBC_2.28 fdivl F
|
||||
GLIBC_2.28 fmul F
|
||||
GLIBC_2.28 fmull F
|
||||
GLIBC_2.28 fsub F
|
||||
GLIBC_2.28 fsubl F
|
||||
GLIBC_2.29 exp F
|
||||
GLIBC_2.29 exp2 F
|
||||
GLIBC_2.29 log F
|
||||
GLIBC_2.29 log2 F
|
||||
GLIBC_2.29 pow F
|
||||
GLIBC_2.31 totalorder F
|
||||
GLIBC_2.31 totalorderf F
|
||||
GLIBC_2.31 totalorderf32 F
|
||||
GLIBC_2.31 totalorderf32x F
|
||||
GLIBC_2.31 totalorderf64 F
|
||||
GLIBC_2.31 totalorderl F
|
||||
GLIBC_2.31 totalordermag F
|
||||
GLIBC_2.31 totalordermagf F
|
||||
GLIBC_2.31 totalordermagf32 F
|
||||
GLIBC_2.31 totalordermagf32x F
|
||||
GLIBC_2.31 totalordermagf64 F
|
||||
GLIBC_2.31 totalordermagl F
|
||||
GLIBC_2.32 exp10f F
|
||||
GLIBC_2.35 dfmal F
|
||||
GLIBC_2.35 dsqrtl F
|
||||
GLIBC_2.35 f32fmaf32x F
|
||||
GLIBC_2.35 f32fmaf64 F
|
||||
GLIBC_2.35 f32sqrtf32x F
|
||||
GLIBC_2.35 f32sqrtf64 F
|
||||
GLIBC_2.35 f32xfmaf64 F
|
||||
GLIBC_2.35 f32xsqrtf64 F
|
||||
GLIBC_2.35 ffma F
|
||||
GLIBC_2.35 ffmal F
|
||||
GLIBC_2.35 fmaximum F
|
||||
GLIBC_2.35 fmaximum_mag F
|
||||
GLIBC_2.35 fmaximum_mag_num F
|
||||
GLIBC_2.35 fmaximum_mag_numf F
|
||||
GLIBC_2.35 fmaximum_mag_numf32 F
|
||||
GLIBC_2.35 fmaximum_mag_numf32x F
|
||||
GLIBC_2.35 fmaximum_mag_numf64 F
|
||||
GLIBC_2.35 fmaximum_mag_numl F
|
||||
GLIBC_2.35 fmaximum_magf F
|
||||
GLIBC_2.35 fmaximum_magf32 F
|
||||
GLIBC_2.35 fmaximum_magf32x F
|
||||
GLIBC_2.35 fmaximum_magf64 F
|
||||
GLIBC_2.35 fmaximum_magl F
|
||||
GLIBC_2.35 fmaximum_num F
|
||||
GLIBC_2.35 fmaximum_numf F
|
||||
GLIBC_2.35 fmaximum_numf32 F
|
||||
GLIBC_2.35 fmaximum_numf32x F
|
||||
GLIBC_2.35 fmaximum_numf64 F
|
||||
GLIBC_2.35 fmaximum_numl F
|
||||
GLIBC_2.35 fmaximumf F
|
||||
GLIBC_2.35 fmaximumf32 F
|
||||
GLIBC_2.35 fmaximumf32x F
|
||||
GLIBC_2.35 fmaximumf64 F
|
||||
GLIBC_2.35 fmaximuml F
|
||||
GLIBC_2.35 fminimum F
|
||||
GLIBC_2.35 fminimum_mag F
|
||||
GLIBC_2.35 fminimum_mag_num F
|
||||
GLIBC_2.35 fminimum_mag_numf F
|
||||
GLIBC_2.35 fminimum_mag_numf32 F
|
||||
GLIBC_2.35 fminimum_mag_numf32x F
|
||||
GLIBC_2.35 fminimum_mag_numf64 F
|
||||
GLIBC_2.35 fminimum_mag_numl F
|
||||
GLIBC_2.35 fminimum_magf F
|
||||
GLIBC_2.35 fminimum_magf32 F
|
||||
GLIBC_2.35 fminimum_magf32x F
|
||||
GLIBC_2.35 fminimum_magf64 F
|
||||
GLIBC_2.35 fminimum_magl F
|
||||
GLIBC_2.35 fminimum_num F
|
||||
GLIBC_2.35 fminimum_numf F
|
||||
GLIBC_2.35 fminimum_numf32 F
|
||||
GLIBC_2.35 fminimum_numf32x F
|
||||
GLIBC_2.35 fminimum_numf64 F
|
||||
GLIBC_2.35 fminimum_numl F
|
||||
GLIBC_2.35 fminimumf F
|
||||
GLIBC_2.35 fminimumf32 F
|
||||
GLIBC_2.35 fminimumf32x F
|
||||
GLIBC_2.35 fminimumf64 F
|
||||
GLIBC_2.35 fminimuml F
|
||||
GLIBC_2.35 fsqrt F
|
||||
GLIBC_2.35 fsqrtl F
|
||||
GLIBC_2.35 hypot F
|
||||
GLIBC_2.35 hypotf F
|
||||
GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.40 exp10m1 F
|
||||
GLIBC_2.40 exp10m1f F
|
||||
GLIBC_2.40 exp10m1f32 F
|
||||
GLIBC_2.40 exp10m1f32x F
|
||||
GLIBC_2.40 exp10m1f64 F
|
||||
GLIBC_2.40 exp10m1l F
|
||||
GLIBC_2.40 exp2m1 F
|
||||
GLIBC_2.40 exp2m1f F
|
||||
GLIBC_2.40 exp2m1f32 F
|
||||
GLIBC_2.40 exp2m1f32x F
|
||||
GLIBC_2.40 exp2m1f64 F
|
||||
GLIBC_2.40 exp2m1l F
|
||||
GLIBC_2.40 log10p1 F
|
||||
GLIBC_2.40 log10p1f F
|
||||
GLIBC_2.40 log10p1f32 F
|
||||
GLIBC_2.40 log10p1f32x F
|
||||
GLIBC_2.40 log10p1f64 F
|
||||
GLIBC_2.40 log10p1l F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
GLIBC_2.40 logp1 F
|
||||
GLIBC_2.40 logp1f F
|
||||
GLIBC_2.40 logp1f32 F
|
||||
GLIBC_2.40 logp1f32x F
|
||||
GLIBC_2.40 logp1f64 F
|
||||
GLIBC_2.40 logp1l F
|
|
@ -1,121 +0,0 @@
|
|||
GLIBC_2.21 __free_fdresult F
|
||||
GLIBC_2.21 __nis_default_access F
|
||||
GLIBC_2.21 __nis_default_group F
|
||||
GLIBC_2.21 __nis_default_owner F
|
||||
GLIBC_2.21 __nis_default_ttl F
|
||||
GLIBC_2.21 __nis_finddirectory F
|
||||
GLIBC_2.21 __nis_hash F
|
||||
GLIBC_2.21 __nisbind_connect F
|
||||
GLIBC_2.21 __nisbind_create F
|
||||
GLIBC_2.21 __nisbind_destroy F
|
||||
GLIBC_2.21 __nisbind_next F
|
||||
GLIBC_2.21 __yp_check F
|
||||
GLIBC_2.21 nis_add F
|
||||
GLIBC_2.21 nis_add_entry F
|
||||
GLIBC_2.21 nis_addmember F
|
||||
GLIBC_2.21 nis_checkpoint F
|
||||
GLIBC_2.21 nis_clone_directory F
|
||||
GLIBC_2.21 nis_clone_object F
|
||||
GLIBC_2.21 nis_clone_result F
|
||||
GLIBC_2.21 nis_creategroup F
|
||||
GLIBC_2.21 nis_destroy_object F
|
||||
GLIBC_2.21 nis_destroygroup F
|
||||
GLIBC_2.21 nis_dir_cmp F
|
||||
GLIBC_2.21 nis_domain_of F
|
||||
GLIBC_2.21 nis_domain_of_r F
|
||||
GLIBC_2.21 nis_first_entry F
|
||||
GLIBC_2.21 nis_free_directory F
|
||||
GLIBC_2.21 nis_free_object F
|
||||
GLIBC_2.21 nis_free_request F
|
||||
GLIBC_2.21 nis_freenames F
|
||||
GLIBC_2.21 nis_freeresult F
|
||||
GLIBC_2.21 nis_freeservlist F
|
||||
GLIBC_2.21 nis_freetags F
|
||||
GLIBC_2.21 nis_getnames F
|
||||
GLIBC_2.21 nis_getservlist F
|
||||
GLIBC_2.21 nis_ismember F
|
||||
GLIBC_2.21 nis_leaf_of F
|
||||
GLIBC_2.21 nis_leaf_of_r F
|
||||
GLIBC_2.21 nis_lerror F
|
||||
GLIBC_2.21 nis_list F
|
||||
GLIBC_2.21 nis_local_directory F
|
||||
GLIBC_2.21 nis_local_group F
|
||||
GLIBC_2.21 nis_local_host F
|
||||
GLIBC_2.21 nis_local_principal F
|
||||
GLIBC_2.21 nis_lookup F
|
||||
GLIBC_2.21 nis_mkdir F
|
||||
GLIBC_2.21 nis_modify F
|
||||
GLIBC_2.21 nis_modify_entry F
|
||||
GLIBC_2.21 nis_name_of F
|
||||
GLIBC_2.21 nis_name_of_r F
|
||||
GLIBC_2.21 nis_next_entry F
|
||||
GLIBC_2.21 nis_perror F
|
||||
GLIBC_2.21 nis_ping F
|
||||
GLIBC_2.21 nis_print_directory F
|
||||
GLIBC_2.21 nis_print_entry F
|
||||
GLIBC_2.21 nis_print_group F
|
||||
GLIBC_2.21 nis_print_group_entry F
|
||||
GLIBC_2.21 nis_print_link F
|
||||
GLIBC_2.21 nis_print_object F
|
||||
GLIBC_2.21 nis_print_result F
|
||||
GLIBC_2.21 nis_print_rights F
|
||||
GLIBC_2.21 nis_print_table F
|
||||
GLIBC_2.21 nis_read_obj F
|
||||
GLIBC_2.21 nis_remove F
|
||||
GLIBC_2.21 nis_remove_entry F
|
||||
GLIBC_2.21 nis_removemember F
|
||||
GLIBC_2.21 nis_rmdir F
|
||||
GLIBC_2.21 nis_servstate F
|
||||
GLIBC_2.21 nis_sperrno F
|
||||
GLIBC_2.21 nis_sperror F
|
||||
GLIBC_2.21 nis_sperror_r F
|
||||
GLIBC_2.21 nis_stats F
|
||||
GLIBC_2.21 nis_verifygroup F
|
||||
GLIBC_2.21 nis_write_obj F
|
||||
GLIBC_2.21 readColdStartFile F
|
||||
GLIBC_2.21 writeColdStartFile F
|
||||
GLIBC_2.21 xdr_cback_data F
|
||||
GLIBC_2.21 xdr_domainname F
|
||||
GLIBC_2.21 xdr_keydat F
|
||||
GLIBC_2.21 xdr_mapname F
|
||||
GLIBC_2.21 xdr_obj_p F
|
||||
GLIBC_2.21 xdr_peername F
|
||||
GLIBC_2.21 xdr_valdat F
|
||||
GLIBC_2.21 xdr_yp_buf F
|
||||
GLIBC_2.21 xdr_ypall F
|
||||
GLIBC_2.21 xdr_ypbind_binding F
|
||||
GLIBC_2.21 xdr_ypbind_resp F
|
||||
GLIBC_2.21 xdr_ypbind_resptype F
|
||||
GLIBC_2.21 xdr_ypbind_setdom F
|
||||
GLIBC_2.21 xdr_ypdelete_args F
|
||||
GLIBC_2.21 xdr_ypmap_parms F
|
||||
GLIBC_2.21 xdr_ypmaplist F
|
||||
GLIBC_2.21 xdr_yppush_status F
|
||||
GLIBC_2.21 xdr_yppushresp_xfr F
|
||||
GLIBC_2.21 xdr_ypreq_key F
|
||||
GLIBC_2.21 xdr_ypreq_nokey F
|
||||
GLIBC_2.21 xdr_ypreq_xfr F
|
||||
GLIBC_2.21 xdr_ypresp_all F
|
||||
GLIBC_2.21 xdr_ypresp_key_val F
|
||||
GLIBC_2.21 xdr_ypresp_maplist F
|
||||
GLIBC_2.21 xdr_ypresp_master F
|
||||
GLIBC_2.21 xdr_ypresp_order F
|
||||
GLIBC_2.21 xdr_ypresp_val F
|
||||
GLIBC_2.21 xdr_ypresp_xfr F
|
||||
GLIBC_2.21 xdr_ypstat F
|
||||
GLIBC_2.21 xdr_ypupdate_args F
|
||||
GLIBC_2.21 xdr_ypxfrstat F
|
||||
GLIBC_2.21 yp_all F
|
||||
GLIBC_2.21 yp_bind F
|
||||
GLIBC_2.21 yp_first F
|
||||
GLIBC_2.21 yp_get_default_domain F
|
||||
GLIBC_2.21 yp_maplist F
|
||||
GLIBC_2.21 yp_master F
|
||||
GLIBC_2.21 yp_match F
|
||||
GLIBC_2.21 yp_next F
|
||||
GLIBC_2.21 yp_order F
|
||||
GLIBC_2.21 yp_unbind F
|
||||
GLIBC_2.21 yp_update F
|
||||
GLIBC_2.21 ypbinderr_string F
|
||||
GLIBC_2.21 yperr_string F
|
||||
GLIBC_2.21 ypprot_err F
|
|
@ -1,4 +0,0 @@
|
|||
GLIBC_2.21 __libpthread_version_placeholder F
|
||||
GLIBC_2.28 __libpthread_version_placeholder F
|
||||
GLIBC_2.30 __libpthread_version_placeholder F
|
||||
GLIBC_2.31 __libpthread_version_placeholder F
|
|
@ -1,67 +0,0 @@
|
|||
GLIBC_2.21 __b64_ntop F
|
||||
GLIBC_2.21 __b64_pton F
|
||||
GLIBC_2.21 __dn_count_labels F
|
||||
GLIBC_2.21 __fp_nquery F
|
||||
GLIBC_2.21 __fp_query F
|
||||
GLIBC_2.21 __fp_resstat F
|
||||
GLIBC_2.21 __hostalias F
|
||||
GLIBC_2.21 __loc_aton F
|
||||
GLIBC_2.21 __loc_ntoa F
|
||||
GLIBC_2.21 __p_cdname F
|
||||
GLIBC_2.21 __p_cdnname F
|
||||
GLIBC_2.21 __p_class F
|
||||
GLIBC_2.21 __p_class_syms D 0x54
|
||||
GLIBC_2.21 __p_fqname F
|
||||
GLIBC_2.21 __p_fqnname F
|
||||
GLIBC_2.21 __p_option F
|
||||
GLIBC_2.21 __p_query F
|
||||
GLIBC_2.21 __p_rcode F
|
||||
GLIBC_2.21 __p_secstodate F
|
||||
GLIBC_2.21 __p_time F
|
||||
GLIBC_2.21 __p_type F
|
||||
GLIBC_2.21 __p_type_syms D 0x228
|
||||
GLIBC_2.21 __putlong F
|
||||
GLIBC_2.21 __putshort F
|
||||
GLIBC_2.21 __res_close F
|
||||
GLIBC_2.21 __res_hostalias F
|
||||
GLIBC_2.21 __res_isourserver F
|
||||
GLIBC_2.21 __res_nameinquery F
|
||||
GLIBC_2.21 __res_queriesmatch F
|
||||
GLIBC_2.21 __sym_ntop F
|
||||
GLIBC_2.21 __sym_ntos F
|
||||
GLIBC_2.21 __sym_ston F
|
||||
GLIBC_2.21 _gethtbyaddr F
|
||||
GLIBC_2.21 _gethtbyname F
|
||||
GLIBC_2.21 _gethtbyname2 F
|
||||
GLIBC_2.21 _gethtent F
|
||||
GLIBC_2.21 _getlong F
|
||||
GLIBC_2.21 _getshort F
|
||||
GLIBC_2.21 _res_opcodes D 0x40
|
||||
GLIBC_2.21 _sethtent F
|
||||
GLIBC_2.21 inet_net_ntop F
|
||||
GLIBC_2.21 inet_net_pton F
|
||||
GLIBC_2.21 inet_neta F
|
||||
GLIBC_2.21 ns_datetosecs F
|
||||
GLIBC_2.21 ns_format_ttl F
|
||||
GLIBC_2.21 ns_get16 F
|
||||
GLIBC_2.21 ns_get32 F
|
||||
GLIBC_2.21 ns_initparse F
|
||||
GLIBC_2.21 ns_makecanon F
|
||||
GLIBC_2.21 ns_msg_getflag F
|
||||
GLIBC_2.21 ns_name_ntol F
|
||||
GLIBC_2.21 ns_name_rollback F
|
||||
GLIBC_2.21 ns_parse_ttl F
|
||||
GLIBC_2.21 ns_parserr F
|
||||
GLIBC_2.21 ns_put16 F
|
||||
GLIBC_2.21 ns_put32 F
|
||||
GLIBC_2.21 ns_samedomain F
|
||||
GLIBC_2.21 ns_samename F
|
||||
GLIBC_2.21 ns_skiprr F
|
||||
GLIBC_2.21 ns_sprintrr F
|
||||
GLIBC_2.21 ns_sprintrrf F
|
||||
GLIBC_2.21 ns_subdomain F
|
||||
GLIBC_2.21 res_gethostbyaddr F
|
||||
GLIBC_2.21 res_gethostbyname F
|
||||
GLIBC_2.21 res_gethostbyname2 F
|
||||
GLIBC_2.21 res_send_setqhook F
|
||||
GLIBC_2.21 res_send_setrhook F
|
|
@ -1 +0,0 @@
|
|||
GLIBC_2.21 __librt_version_placeholder F
|
|
@ -1,40 +0,0 @@
|
|||
GLIBC_2.21 td_init F
|
||||
GLIBC_2.21 td_log F
|
||||
GLIBC_2.21 td_symbol_list F
|
||||
GLIBC_2.21 td_ta_clear_event F
|
||||
GLIBC_2.21 td_ta_delete F
|
||||
GLIBC_2.21 td_ta_enable_stats F
|
||||
GLIBC_2.21 td_ta_event_addr F
|
||||
GLIBC_2.21 td_ta_event_getmsg F
|
||||
GLIBC_2.21 td_ta_get_nthreads F
|
||||
GLIBC_2.21 td_ta_get_ph F
|
||||
GLIBC_2.21 td_ta_get_stats F
|
||||
GLIBC_2.21 td_ta_map_id2thr F
|
||||
GLIBC_2.21 td_ta_map_lwp2thr F
|
||||
GLIBC_2.21 td_ta_new F
|
||||
GLIBC_2.21 td_ta_reset_stats F
|
||||
GLIBC_2.21 td_ta_set_event F
|
||||
GLIBC_2.21 td_ta_setconcurrency F
|
||||
GLIBC_2.21 td_ta_thr_iter F
|
||||
GLIBC_2.21 td_ta_tsd_iter F
|
||||
GLIBC_2.21 td_thr_clear_event F
|
||||
GLIBC_2.21 td_thr_dbresume F
|
||||
GLIBC_2.21 td_thr_dbsuspend F
|
||||
GLIBC_2.21 td_thr_event_enable F
|
||||
GLIBC_2.21 td_thr_event_getmsg F
|
||||
GLIBC_2.21 td_thr_get_info F
|
||||
GLIBC_2.21 td_thr_getfpregs F
|
||||
GLIBC_2.21 td_thr_getgregs F
|
||||
GLIBC_2.21 td_thr_getxregs F
|
||||
GLIBC_2.21 td_thr_getxregsize F
|
||||
GLIBC_2.21 td_thr_set_event F
|
||||
GLIBC_2.21 td_thr_setfpregs F
|
||||
GLIBC_2.21 td_thr_setgregs F
|
||||
GLIBC_2.21 td_thr_setprio F
|
||||
GLIBC_2.21 td_thr_setsigpending F
|
||||
GLIBC_2.21 td_thr_setxregs F
|
||||
GLIBC_2.21 td_thr_sigsetmask F
|
||||
GLIBC_2.21 td_thr_tls_get_addr F
|
||||
GLIBC_2.21 td_thr_tlsbase F
|
||||
GLIBC_2.21 td_thr_tsd F
|
||||
GLIBC_2.21 td_thr_validate F
|
|
@ -1 +0,0 @@
|
|||
GLIBC_2.21 __libutil_version_placeholder F
|
|
@ -1,30 +0,0 @@
|
|||
libc.so: realloc
|
||||
libc.so: __floatsisf
|
||||
libc.so: __gtdf2 ?
|
||||
libc.so: __ltdf2
|
||||
libc.so: __gedf2
|
||||
libc.so: malloc
|
||||
libc.so: __gtsf2 ?
|
||||
libc.so: __nesf2
|
||||
libc.so: __mulsf3
|
||||
libc.so: __floatunsisf
|
||||
libc.so: __addsf3
|
||||
libc.so: __fixsfsi
|
||||
libc.so: __subsf3
|
||||
libc.so: __unorddf2 ?
|
||||
libc.so: calloc
|
||||
libc.so: __muldf3
|
||||
libc.so: __unordsf2 ?
|
||||
libc.so: free
|
||||
libc.so: __subdf3
|
||||
libc.so: __ledf2
|
||||
libc.so: __adddf3
|
||||
libc.so: __divdf3
|
||||
libc.so: __floatsidf
|
||||
libc.so: __divsf3
|
||||
libc.so: __nedf2
|
||||
libc.so: __eqdf2
|
||||
libc.so: __extendsfdf2
|
||||
libc.so: __floatundidf ?
|
||||
libc.so: __floatunsidf ?
|
||||
libm.so: matherr
|
|
@ -1,79 +0,0 @@
|
|||
/* Create new context.
|
||||
Copyright (C) 2015-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdint.h>
|
||||
#include <ucontext.h>
|
||||
|
||||
/* makecontext sets up a stack and the registers for the
|
||||
user context. The stack looks like this:
|
||||
|
||||
+-----------------------+
|
||||
| padding as required |
|
||||
+-----------------------+
|
||||
sp -> | parameters 5 to n |
|
||||
+-----------------------+
|
||||
|
||||
The registers are set up like this:
|
||||
r4--r7 : parameter 1 to 4
|
||||
r16 : uc_link
|
||||
sp : stack pointer.
|
||||
*/
|
||||
|
||||
void
|
||||
__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
|
||||
{
|
||||
extern void __startcontext (void);
|
||||
unsigned long *sp;
|
||||
va_list ap;
|
||||
int i;
|
||||
|
||||
sp = (unsigned long *)
|
||||
((uintptr_t) ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size);
|
||||
|
||||
/* Allocate stack arguments. */
|
||||
sp -= argc < 4 ? 0 : argc - 4;
|
||||
|
||||
/* Keep the stack aligned. */
|
||||
sp = (unsigned long*) (((uintptr_t) sp) & -4L);
|
||||
|
||||
/* Init version field. */
|
||||
ucp->uc_mcontext.version = 2;
|
||||
/* Keep uc_link in r16. */
|
||||
ucp->uc_mcontext.regs[15] = (uintptr_t) ucp->uc_link;
|
||||
/* Return address points to __startcontext(). */
|
||||
ucp->uc_mcontext.regs[23] = (uintptr_t) &__startcontext;
|
||||
/* Frame pointer is null. */
|
||||
ucp->uc_mcontext.regs[24] = (uintptr_t) 0;
|
||||
/* Restart in user-space starting at 'func'. */
|
||||
ucp->uc_mcontext.regs[27] = (uintptr_t) func;
|
||||
/* Set stack pointer. */
|
||||
ucp->uc_mcontext.regs[28] = (uintptr_t) sp;
|
||||
|
||||
va_start (ap, argc);
|
||||
for (i = 0; i < argc; ++i)
|
||||
if (i < 4)
|
||||
ucp->uc_mcontext.regs[i + 3] = va_arg (ap, unsigned long);
|
||||
else
|
||||
sp[i - 4] = va_arg (ap, unsigned long);
|
||||
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
weak_alias (__makecontext, makecontext)
|
|
@ -1,40 +0,0 @@
|
|||
/* Pointer obfuscation implenentation. Nios II version.
|
||||
Copyright (C) 2015-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef POINTER_GUARD_H
|
||||
#define POINTER_GUARD_H
|
||||
|
||||
#if IS_IN (rtld)
|
||||
/* We cannot use the thread descriptor because in ld.so we use setjmp
|
||||
earlier than the descriptor is initialized. */
|
||||
# include <sysdeps/generic/pointer_guard.h>
|
||||
#else
|
||||
# ifdef __ASSEMBLER__
|
||||
# define PTR_MANGLE_GUARD(guard) ldw guard, POINTER_GUARD(r23)
|
||||
# define PTR_MANGLE(dst, src, guard) xor dst, src, guard
|
||||
# define PTR_DEMANGLE(dst, src, guard) PTR_MANGLE (dst, src, guard)
|
||||
# else
|
||||
# include <stdint.h>
|
||||
# include <tls.h>
|
||||
# define PTR_MANGLE(var) \
|
||||
(var) = (__typeof (var)) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ())
|
||||
# define PTR_DEMANGLE(var) PTR_MANGLE (var)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* POINTER_GUARD_H */
|
|
@ -1,9 +0,0 @@
|
|||
#include <shlib-compat.h>
|
||||
|
||||
#include <sysdeps/unix/sysv/linux/send.c>
|
||||
|
||||
#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_21, GLIBC_2_34)
|
||||
/* libpthread compat symbol: Nios2 used the generic version without the
|
||||
libc_hidden_def which lead in a non existent __send symbol in libc.so. */
|
||||
compat_symbol (libc, __libc_send, __send, GLIBC_2_21);
|
||||
#endif
|
|
@ -1,115 +0,0 @@
|
|||
/* Set current context.
|
||||
Copyright (C) 2015-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "ucontext_i.h"
|
||||
|
||||
/* int setcontext (const ucontext_t *ucp) */
|
||||
.text
|
||||
ENTRY(__setcontext)
|
||||
ldw r5, UCONTEXT_FLAGS(r4)
|
||||
movi r6, 1
|
||||
bne r5, r6, .Lsigreturn
|
||||
|
||||
mov r10, r4
|
||||
|
||||
/* Restore signal mask. */
|
||||
/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */
|
||||
movi r7, _NSIG8
|
||||
addi r5, r4, UCONTEXT_SIGMASK
|
||||
mov r6, zero
|
||||
movi r4, SIG_SETMASK
|
||||
movi r2, SYS_ify (rt_sigprocmask)
|
||||
trap
|
||||
bne r7, zero, SYSCALL_ERROR_LABEL
|
||||
|
||||
/* Restore argument registers, for the makecontext() case. */
|
||||
ldw r4, (UCONTEXT_MCONTEXT + 4*4)(r10)
|
||||
ldw r5, (UCONTEXT_MCONTEXT + 5*4)(r10)
|
||||
ldw r6, (UCONTEXT_MCONTEXT + 6*4)(r10)
|
||||
ldw r7, (UCONTEXT_MCONTEXT + 7*4)(r10)
|
||||
|
||||
ldw r16, (UCONTEXT_MCONTEXT + 16*4)(r10)
|
||||
ldw r17, (UCONTEXT_MCONTEXT + 17*4)(r10)
|
||||
ldw r18, (UCONTEXT_MCONTEXT + 18*4)(r10)
|
||||
ldw r19, (UCONTEXT_MCONTEXT + 19*4)(r10)
|
||||
ldw r20, (UCONTEXT_MCONTEXT + 20*4)(r10)
|
||||
ldw r21, (UCONTEXT_MCONTEXT + 21*4)(r10)
|
||||
ldw r22, (UCONTEXT_MCONTEXT + 22*4)(r10)
|
||||
ldw ra, (UCONTEXT_MCONTEXT + 24*4)(r10)
|
||||
ldw fp, (UCONTEXT_MCONTEXT + 25*4)(r10)
|
||||
ldw gp, (UCONTEXT_MCONTEXT + 26*4)(r10)
|
||||
/* Load address to continue execution. */
|
||||
ldw r3, (UCONTEXT_MCONTEXT + 28*4)(r10)
|
||||
ldw sp, (UCONTEXT_MCONTEXT + 29*4)(r10)
|
||||
|
||||
mov r2, zero
|
||||
jmp r3
|
||||
|
||||
.Lsigreturn:
|
||||
addi sp, sp, -RT_SIGFRAME_SIZE
|
||||
cfi_adjust_cfa_offset (RT_SIGFRAME_SIZE)
|
||||
|
||||
addi r2, sp, RT_SIGFRAME_UCONTEXT
|
||||
movi r3, UCONTEXT_SIZE-4
|
||||
1:
|
||||
add r6, r4, r3
|
||||
ldw r5, 0(r6)
|
||||
add r7, r2, r3
|
||||
addi r3, r3, -4
|
||||
stw r5, 0(r7)
|
||||
bgt r3, zero, 1b
|
||||
|
||||
movi r2, SYS_ify (rt_sigreturn)
|
||||
trap
|
||||
|
||||
addi sp, sp, RT_SIGFRAME_SIZE
|
||||
cfi_adjust_cfa_offset (-RT_SIGFRAME_SIZE)
|
||||
br SYSCALL_ERROR_LABEL
|
||||
|
||||
PSEUDO_END (__setcontext)
|
||||
weak_alias (__setcontext, setcontext)
|
||||
|
||||
/* We add an NOP here to separate between __setcontext/__startcontext.
|
||||
The wanted behavior that happens is: when unwinding from a function
|
||||
called inside a makecontext() context, FDE lookup will use
|
||||
'&__startcontext - 1', then returns NULL for no FDE found,
|
||||
and immediately ends the unwind, in a normal fashion.
|
||||
|
||||
If this NOP word does not exist, FDE lookup just repeatedly finds
|
||||
__setcontext's FDE in an infinite loop, due to the convention of
|
||||
using 'address - 1' for FDE lookup. Modifying/deleting the below
|
||||
__startcontext's FDE has no help on this. */
|
||||
nop
|
||||
|
||||
ENTRY(__startcontext)
|
||||
mov r4, r16
|
||||
bne r4, zero, __setcontext
|
||||
|
||||
/* If uc_link == zero, call exit. */
|
||||
#ifdef PIC
|
||||
nextpc r22
|
||||
1: movhi r8, %hiadj(_gp_got - 1b)
|
||||
addi r8, r8, %lo(_gp_got - 1b)
|
||||
add r22, r22, r8
|
||||
ldw r8, %call(HIDDEN_JUMPTARGET(exit))(r22)
|
||||
jmp r8
|
||||
#else
|
||||
jmpi exit
|
||||
#endif
|
||||
END(__startcontext)
|
|
@ -1,2 +0,0 @@
|
|||
DEFAULT GLIBC_2.21
|
||||
ld=ld-linux-nios2.so.1
|
|
@ -1,28 +0,0 @@
|
|||
/* Nios II definitions for signal handling calling conventions.
|
||||
Copyright (C) 2015-2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SIGCONTEXTINFO_H
|
||||
#define _SIGCONTEXTINFO_H
|
||||
|
||||
static inline uintptr_t
|
||||
sigcontext_get_pc (const ucontext_t *ctx)
|
||||
{
|
||||
return ctx->uc_mcontext.regs[27];
|
||||
}
|
||||
|
||||
#endif
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue