mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Relocate hppa from ports to libc.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2014-05-29 Carlos O'Donell <carlos@systemhalted.org>
|
||||||
|
|
||||||
|
* sysdeps/hppa: Move directory from ports/sysdeps/hppa.
|
||||||
|
* sysdeps/unix/sysv/linux/hppa: Move directory from
|
||||||
|
ports/systeps/unix/sysv/linux/hppa.
|
||||||
|
* README: Update listing for hppa-*-linux-gnu.
|
||||||
|
|
||||||
2014-04-28 Ondřej Bílka <neleai@seznam.cz>
|
2014-04-28 Ondřej Bílka <neleai@seznam.cz>
|
||||||
|
|
||||||
[BZ #16754]
|
[BZ #16754]
|
||||||
|
3
README
3
README
@ -27,6 +27,7 @@ The GNU C Library supports these configurations for using Linux kernels:
|
|||||||
aarch64*-*-linux-gnu
|
aarch64*-*-linux-gnu
|
||||||
alpha*-*-linux-gnu
|
alpha*-*-linux-gnu
|
||||||
arm-*-linux-gnueabi
|
arm-*-linux-gnueabi
|
||||||
|
hppa-*-linux-gnu Not currently functional without patches.
|
||||||
i[4567]86-*-linux-gnu
|
i[4567]86-*-linux-gnu
|
||||||
x86_64-*-linux-gnu Can build either x86_64 or x32
|
x86_64-*-linux-gnu Can build either x86_64 or x32
|
||||||
ia64-*-linux-gnu
|
ia64-*-linux-gnu
|
||||||
@ -48,8 +49,6 @@ The code for other CPU configurations supported by volunteers outside of
|
|||||||
the core glibc maintenance effort is contained in the `ports' add-on,
|
the core glibc maintenance effort is contained in the `ports' add-on,
|
||||||
located in the `ports' subdirectory of the source tree.
|
located in the `ports' subdirectory of the source tree.
|
||||||
|
|
||||||
hppa-*-linux-gnu Not currently functional without patches.
|
|
||||||
|
|
||||||
If you are interested in doing a port, please contact the glibc
|
If you are interested in doing a port, please contact the glibc
|
||||||
maintainers; see http://www.gnu.org/software/libc/ for more
|
maintainers; see http://www.gnu.org/software/libc/ for more
|
||||||
information.
|
information.
|
||||||
|
@ -41,5 +41,4 @@ endif
|
|||||||
|
|
||||||
# We implement a 64-bit `long double'. The standard says we can do this.
|
# We implement a 64-bit `long double'. The standard says we can do this.
|
||||||
# This means our `long double' and `double' are identical.
|
# This means our `long double' and `double' are identical.
|
||||||
long-double-fcts = no
|
long-double-fcts = no
|
||||||
|
|
@ -77,4 +77,3 @@ _fini:
|
|||||||
stwm %r4,64(%sp)
|
stwm %r4,64(%sp)
|
||||||
stw %r19,-32(%sp)
|
stw %r19,-32(%sp)
|
||||||
copy %r19,%r4
|
copy %r19,%r4
|
||||||
|
|
@ -85,4 +85,3 @@ _end_fini:
|
|||||||
.extern _fini
|
.extern _fini
|
||||||
.word _fini, _end_fini
|
.word _fini, _end_fini
|
||||||
.byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08
|
.byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08
|
||||||
|
|
@ -80,4 +80,3 @@ void _dl_unmap (struct link_map *map);
|
|||||||
#define DL_FIXUP_VALUE_CODE_ADDR(value) ((value).ip)
|
#define DL_FIXUP_VALUE_CODE_ADDR(value) ((value).ip)
|
||||||
#define DL_FIXUP_VALUE_ADDR(value) ((uintptr_t) &(value))
|
#define DL_FIXUP_VALUE_ADDR(value) ((uintptr_t) &(value))
|
||||||
#define DL_FIXUP_ADDR_VALUE(addr) (*(struct fdesc *) (addr))
|
#define DL_FIXUP_ADDR_VALUE(addr) (*(struct fdesc *) (addr))
|
||||||
|
|
@ -467,7 +467,7 @@ asm ( \
|
|||||||
of the main executable's symbols, as for a COPY reloc. */
|
of the main executable's symbols, as for a COPY reloc. */
|
||||||
#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
|
#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
|
||||||
# define elf_machine_type_class(type) \
|
# define elf_machine_type_class(type) \
|
||||||
((((type) == R_PARISC_IPLT \
|
((((type) == R_PARISC_IPLT \
|
||||||
|| (type) == R_PARISC_EPLT \
|
|| (type) == R_PARISC_EPLT \
|
||||||
|| (type) == R_PARISC_TLS_DTPMOD32 \
|
|| (type) == R_PARISC_TLS_DTPMOD32 \
|
||||||
|| (type) == R_PARISC_TLS_DTPOFF32 \
|
|| (type) == R_PARISC_TLS_DTPOFF32 \
|
||||||
@ -475,7 +475,7 @@ asm ( \
|
|||||||
* ELF_RTYPE_CLASS_PLT) \
|
* ELF_RTYPE_CLASS_PLT) \
|
||||||
| (((type) == R_PARISC_COPY) * ELF_RTYPE_CLASS_COPY))
|
| (((type) == R_PARISC_COPY) * ELF_RTYPE_CLASS_COPY))
|
||||||
#else
|
#else
|
||||||
#define elf_machine_type_class(type) \
|
#define elf_machine_type_class(type) \
|
||||||
((((type) == R_PARISC_IPLT \
|
((((type) == R_PARISC_IPLT \
|
||||||
|| (type) == R_PARISC_EPLT) \
|
|| (type) == R_PARISC_EPLT) \
|
||||||
* ELF_RTYPE_CLASS_PLT) \
|
* ELF_RTYPE_CLASS_PLT) \
|
||||||
@ -527,7 +527,7 @@ dl_platform_init (void)
|
|||||||
|
|
||||||
auto void __attribute__((always_inline))
|
auto void __attribute__((always_inline))
|
||||||
elf_machine_rela (struct link_map *map,
|
elf_machine_rela (struct link_map *map,
|
||||||
const Elf32_Rela *reloc,
|
const Elf32_Rela *reloc,
|
||||||
const Elf32_Sym *sym,
|
const Elf32_Sym *sym,
|
||||||
const struct r_found_version *version,
|
const struct r_found_version *version,
|
||||||
void *const reloc_addr_arg,
|
void *const reloc_addr_arg,
|
||||||
@ -653,13 +653,13 @@ elf_machine_rela (struct link_map *map,
|
|||||||
if (__builtin_expect (sym_map != NULL, 1))
|
if (__builtin_expect (sym_map != NULL, 1))
|
||||||
{
|
{
|
||||||
elf_machine_fixup_plt (NULL, sym_map, reloc, reloc_addr,
|
elf_machine_fixup_plt (NULL, sym_map, reloc, reloc_addr,
|
||||||
DL_FIXUP_MAKE_VALUE(sym_map, value));
|
DL_FIXUP_MAKE_VALUE(sym_map, value));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* If we get here, it's a (weak) undefined sym. */
|
/* If we get here, it's a (weak) undefined sym. */
|
||||||
elf_machine_fixup_plt (NULL, map, reloc, reloc_addr,
|
elf_machine_fixup_plt (NULL, map, reloc, reloc_addr,
|
||||||
DL_FIXUP_MAKE_VALUE(map, value));
|
DL_FIXUP_MAKE_VALUE(map, value));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
@ -51,7 +51,7 @@ _dl_runtime_resolve:
|
|||||||
|
|
||||||
/* Save static link register */
|
/* Save static link register */
|
||||||
stw %r29,-16(%sp)
|
stw %r29,-16(%sp)
|
||||||
/* Save argument registers */
|
/* Save argument registers */
|
||||||
stw %r26,-36(%sp)
|
stw %r26,-36(%sp)
|
||||||
stw %r25,-40(%sp)
|
stw %r25,-40(%sp)
|
||||||
stw %r24,-44(%sp)
|
stw %r24,-44(%sp)
|
||||||
@ -74,11 +74,11 @@ _dl_runtime_resolve:
|
|||||||
fstd,ma %fr6,-8(%r1)
|
fstd,ma %fr6,-8(%r1)
|
||||||
fstd,ma %fr7,-8(%r1)
|
fstd,ma %fr7,-8(%r1)
|
||||||
|
|
||||||
/* Set up args to fixup func, needs only two arguments */
|
/* Set up args to fixup func, needs only two arguments */
|
||||||
ldw 8+4(%r20),%r26 /* (1) got[1] == struct link_map */
|
ldw 8+4(%r20),%r26 /* (1) got[1] == struct link_map */
|
||||||
copy %r19,%r25 /* (2) reloc offset */
|
copy %r19,%r25 /* (2) reloc offset */
|
||||||
|
|
||||||
/* Call the real address resolver. */
|
/* Call the real address resolver. */
|
||||||
bl _dl_fixup,%rp
|
bl _dl_fixup,%rp
|
||||||
copy %r21,%r19 /* set fixup func ltp */
|
copy %r21,%r19 /* set fixup func ltp */
|
||||||
|
|
||||||
@ -164,7 +164,7 @@ _dl_runtime_profile:
|
|||||||
stw %r2,-52(%sp)
|
stw %r2,-52(%sp)
|
||||||
|
|
||||||
|
|
||||||
/* Set up args to fixup func, needs five arguments */
|
/* Set up args to fixup func, needs five arguments */
|
||||||
ldw 8+4(%r20),%r26 /* (1) got[1] == struct link_map */
|
ldw 8+4(%r20),%r26 /* (1) got[1] == struct link_map */
|
||||||
stw %r26,-116(%sp) /* Save struct link_map */
|
stw %r26,-116(%sp) /* Save struct link_map */
|
||||||
copy %r19,%r25 /* (2) reloc offset */
|
copy %r19,%r25 /* (2) reloc offset */
|
||||||
@ -174,7 +174,7 @@ _dl_runtime_profile:
|
|||||||
ldo -112(%sp), %r1
|
ldo -112(%sp), %r1
|
||||||
stw %r1, -52(%sp) /* (5) long int *framesizep */
|
stw %r1, -52(%sp) /* (5) long int *framesizep */
|
||||||
|
|
||||||
/* Call the real address resolver. */
|
/* Call the real address resolver. */
|
||||||
bl _dl_profile_fixup,%rp
|
bl _dl_profile_fixup,%rp
|
||||||
copy %r21,%r19 /* set fixup func ltp */
|
copy %r21,%r19 /* set fixup func ltp */
|
||||||
|
|
||||||
@ -255,7 +255,7 @@ L(cont):
|
|||||||
|
|
||||||
/* Arguments to _dl_call_pltexit */
|
/* Arguments to _dl_call_pltexit */
|
||||||
ldw -116(%sp), %r26 /* (1) got[1] == struct link_map */
|
ldw -116(%sp), %r26 /* (1) got[1] == struct link_map */
|
||||||
ldw -120(%sp), %r25 /* (2) reloc offsets */
|
ldw -120(%sp), %r25 /* (2) reloc offsets */
|
||||||
ldo -56(%sp), %r24 /* (3) *La_hppa_regs */
|
ldo -56(%sp), %r24 /* (3) *La_hppa_regs */
|
||||||
ldo -124(%sp), %r23 /* (4) *La_hppa_retval */
|
ldo -124(%sp), %r23 /* (4) *La_hppa_retval */
|
||||||
|
|
||||||
@ -285,4 +285,3 @@ L(cont):
|
|||||||
.PROCEND
|
.PROCEND
|
||||||
cfi_endproc
|
cfi_endproc
|
||||||
.size _dl_runtime_profile, . - _dl_runtime_profile
|
.size _dl_runtime_profile, . - _dl_runtime_profile
|
||||||
|
|
@ -36,4 +36,3 @@ typedef double double_t; /* `double' expressions are evaluated as
|
|||||||
|
|
||||||
/* On hppa `long double' is 64-bits. */
|
/* On hppa `long double' is 64-bits. */
|
||||||
#undef __NO_LONG_DOUBLE_MATH
|
#undef __NO_LONG_DOUBLE_MATH
|
||||||
|
|
@ -27,7 +27,7 @@ fegetexcept (void)
|
|||||||
/* Get the current status word. */
|
/* Get the current status word. */
|
||||||
__asm__ ("fstd %%fr0,0(%1) \n\t"
|
__asm__ ("fstd %%fr0,0(%1) \n\t"
|
||||||
"fldd 0(%1),%%fr0 \n\t"
|
"fldd 0(%1),%%fr0 \n\t"
|
||||||
: "=m" (s.l) : "r" (&s.l) : "%r0");
|
: "=m" (s.l) : "r" (&s.l) : "%r0");
|
||||||
|
|
||||||
return (s.sw[0] & FE_ALL_EXCEPT);
|
return (s.sw[0] & FE_ALL_EXCEPT);
|
||||||
}
|
}
|
@ -51,4 +51,3 @@ feholdexcept (fenv_t *envp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
libm_hidden_def (feholdexcept)
|
libm_hidden_def (feholdexcept)
|
||||||
|
|
@ -27,11 +27,10 @@ fegetexceptflag (fexcept_t *flagp, int excepts)
|
|||||||
/* Get the current status word. */
|
/* Get the current status word. */
|
||||||
__asm__ ("fstd %%fr0,0(%1) \n\t"
|
__asm__ ("fstd %%fr0,0(%1) \n\t"
|
||||||
"fldd 0(%1),%%fr0 \n\t"
|
"fldd 0(%1),%%fr0 \n\t"
|
||||||
: "=m" (s.l) : "r" (&s.l) : "%r0");
|
: "=m" (s.l) : "r" (&s.l) : "%r0");
|
||||||
|
|
||||||
*flagp = (s.sw[0] >> 27) & excepts & FE_ALL_EXCEPT;
|
*flagp = (s.sw[0] >> 27) & excepts & FE_ALL_EXCEPT;
|
||||||
|
|
||||||
/* Success. */
|
/* Success. */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -27,7 +27,7 @@ fetestexcept (int excepts)
|
|||||||
/* Get the current status word. */
|
/* Get the current status word. */
|
||||||
__asm__ ("fstd %%fr0,0(%1) \n\t"
|
__asm__ ("fstd %%fr0,0(%1) \n\t"
|
||||||
"fldd 0(%1),%%fr0 \n\t"
|
"fldd 0(%1),%%fr0 \n\t"
|
||||||
: "=m" (s.l) : "r" (&s.l));
|
: "=m" (s.l) : "r" (&s.l));
|
||||||
|
|
||||||
return (s.sw[0] >> 27) & excepts & FE_ALL_EXCEPT;
|
return (s.sw[0] >> 27) & excepts & FE_ALL_EXCEPT;
|
||||||
}
|
}
|
@ -34,4 +34,3 @@ __tls_get_addr (tls_index *ti)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -85,7 +85,7 @@ typedef struct
|
|||||||
/* Install new dtv for current thread. */
|
/* Install new dtv for current thread. */
|
||||||
# define INSTALL_NEW_DTV(dtv) \
|
# define INSTALL_NEW_DTV(dtv) \
|
||||||
({ tcbhead_t *__tcbp = (tcbhead_t *)__get_cr27(); \
|
({ tcbhead_t *__tcbp = (tcbhead_t *)__get_cr27(); \
|
||||||
__tcbp->dtv = dtv; \
|
__tcbp->dtv = dtv; \
|
||||||
})
|
})
|
||||||
|
|
||||||
/* Return dtv of given thread descriptor. */
|
/* Return dtv of given thread descriptor. */
|
||||||
@ -101,14 +101,14 @@ typedef struct
|
|||||||
/* Return the address of the dtv for the current thread. */
|
/* Return the address of the dtv for the current thread. */
|
||||||
# define THREAD_DTV() \
|
# define THREAD_DTV() \
|
||||||
({ tcbhead_t *__tcbp = (tcbhead_t *)__get_cr27(); \
|
({ tcbhead_t *__tcbp = (tcbhead_t *)__get_cr27(); \
|
||||||
__tcbp->dtv; \
|
__tcbp->dtv; \
|
||||||
})
|
})
|
||||||
|
|
||||||
/* Return the thread descriptor for the current thread. */
|
/* Return the thread descriptor for the current thread. */
|
||||||
# define THREAD_SELF \
|
# define THREAD_SELF \
|
||||||
({ struct pthread *__self; \
|
({ struct pthread *__self; \
|
||||||
__self = __get_cr27(); \
|
__self = __get_cr27(); \
|
||||||
__self - 1; \
|
__self - 1; \
|
||||||
})
|
})
|
||||||
|
|
||||||
/* Magic for libthread_db to know how to do THREAD_SELF.
|
/* Magic for libthread_db to know how to do THREAD_SELF.
|
@ -112,4 +112,3 @@
|
|||||||
__result; \
|
__result; \
|
||||||
})
|
})
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -2,4 +2,3 @@
|
|||||||
ifeq ($(subdir),stdlib)
|
ifeq ($(subdir),stdlib)
|
||||||
gen-as-const-headers += ucontext_i.sym
|
gen-as-const-headers += ucontext_i.sym
|
||||||
endif
|
endif
|
||||||
|
|
@ -61,7 +61,7 @@ typedef uintmax_t uatomic_max_t;
|
|||||||
|
|
||||||
#if __ASSUME_LWS_CAS
|
#if __ASSUME_LWS_CAS
|
||||||
/* The only basic operation needed is compare and exchange. */
|
/* The only basic operation needed is compare and exchange. */
|
||||||
# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
|
# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
|
||||||
({ \
|
({ \
|
||||||
volatile int lws_errno; \
|
volatile int lws_errno; \
|
||||||
volatile int lws_ret; \
|
volatile int lws_ret; \
|
||||||
@ -80,18 +80,18 @@ typedef uintmax_t uatomic_max_t;
|
|||||||
"nop \n\t" \
|
"nop \n\t" \
|
||||||
"stw %%r28, %0 \n\t" \
|
"stw %%r28, %0 \n\t" \
|
||||||
"stw %%r21, %1 \n\t" \
|
"stw %%r21, %1 \n\t" \
|
||||||
: "=m" (lws_ret), "=m" (lws_errno) \
|
: "=m" (lws_ret), "=m" (lws_errno) \
|
||||||
: "r" (mem), "r" (oldval), "r" (newval) \
|
: "r" (mem), "r" (oldval), "r" (newval) \
|
||||||
: _LWS_CLOBBER \
|
: _LWS_CLOBBER \
|
||||||
); \
|
); \
|
||||||
\
|
\
|
||||||
if(lws_errno == -EFAULT || lws_errno == -ENOSYS) \
|
if(lws_errno == -EFAULT || lws_errno == -ENOSYS) \
|
||||||
ABORT_INSTRUCTION; \
|
ABORT_INSTRUCTION; \
|
||||||
\
|
\
|
||||||
lws_ret; \
|
lws_ret; \
|
||||||
})
|
})
|
||||||
|
|
||||||
# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
|
# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
|
||||||
({ \
|
({ \
|
||||||
int ret; \
|
int ret; \
|
||||||
ret = atomic_compare_and_exchange_val_acq(mem, newval, oldval); \
|
ret = atomic_compare_and_exchange_val_acq(mem, newval, oldval); \
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user