+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>
[BZ #16754]
aarch64*-*-linux-gnu
alpha*-*-linux-gnu
arm-*-linux-gnueabi
+ hppa-*-linux-gnu Not currently functional without patches.
i[4567]86-*-linux-gnu
x86_64-*-linux-gnu Can build either x86_64 or x32
ia64-*-linux-gnu
the core glibc maintenance effort is contained in the `ports' add-on,
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
maintainers; see http://www.gnu.org/software/libc/ for more
information.
# We implement a 64-bit `long double'. The standard says we can do this.
# This means our `long double' and `double' are identical.
-long-double-fcts = no
-
+long-double-fcts = no
stwm %r4,64(%sp)
stw %r19,-32(%sp)
copy %r19,%r4
-
.extern _fini
.word _fini, _end_fini
.byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08
-
#define DL_FIXUP_VALUE_CODE_ADDR(value) ((value).ip)
#define DL_FIXUP_VALUE_ADDR(value) ((uintptr_t) &(value))
#define DL_FIXUP_ADDR_VALUE(addr) (*(struct fdesc *) (addr))
-
of the main executable's symbols, as for a COPY reloc. */
#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
# define elf_machine_type_class(type) \
- ((((type) == R_PARISC_IPLT \
+ ((((type) == R_PARISC_IPLT \
|| (type) == R_PARISC_EPLT \
|| (type) == R_PARISC_TLS_DTPMOD32 \
|| (type) == R_PARISC_TLS_DTPOFF32 \
* ELF_RTYPE_CLASS_PLT) \
| (((type) == R_PARISC_COPY) * ELF_RTYPE_CLASS_COPY))
#else
-#define elf_machine_type_class(type) \
+#define elf_machine_type_class(type) \
((((type) == R_PARISC_IPLT \
|| (type) == R_PARISC_EPLT) \
* ELF_RTYPE_CLASS_PLT) \
auto void __attribute__((always_inline))
elf_machine_rela (struct link_map *map,
- const Elf32_Rela *reloc,
+ const Elf32_Rela *reloc,
const Elf32_Sym *sym,
const struct r_found_version *version,
void *const reloc_addr_arg,
if (__builtin_expect (sym_map != NULL, 1))
{
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
{
/* If we get here, it's a (weak) undefined sym. */
elf_machine_fixup_plt (NULL, map, reloc, reloc_addr,
- DL_FIXUP_MAKE_VALUE(map, value));
+ DL_FIXUP_MAKE_VALUE(map, value));
}
return;
/* Save static link register */
stw %r29,-16(%sp)
- /* Save argument registers */
+ /* Save argument registers */
stw %r26,-36(%sp)
stw %r25,-40(%sp)
stw %r24,-44(%sp)
fstd,ma %fr6,-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 */
copy %r19,%r25 /* (2) reloc offset */
- /* Call the real address resolver. */
+ /* Call the real address resolver. */
bl _dl_fixup,%rp
copy %r21,%r19 /* set fixup func ltp */
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 */
stw %r26,-116(%sp) /* Save struct link_map */
copy %r19,%r25 /* (2) reloc offset */
ldo -112(%sp), %r1
stw %r1, -52(%sp) /* (5) long int *framesizep */
- /* Call the real address resolver. */
+ /* Call the real address resolver. */
bl _dl_profile_fixup,%rp
copy %r21,%r19 /* set fixup func ltp */
/* Arguments to _dl_call_pltexit */
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 -124(%sp), %r23 /* (4) *La_hppa_retval */
.PROCEND
cfi_endproc
.size _dl_runtime_profile, . - _dl_runtime_profile
-
/* On hppa `long double' is 64-bits. */
#undef __NO_LONG_DOUBLE_MATH
-
/* Get the current status word. */
__asm__ ("fstd %%fr0,0(%1) \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);
}
}
libm_hidden_def (feholdexcept)
-
/* Get the current status word. */
__asm__ ("fstd %%fr0,0(%1) \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;
/* Success. */
return 0;
}
-
/* Get the current status word. */
__asm__ ("fstd %%fr0,0(%1) \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;
}
/* Install new dtv for current thread. */
# define INSTALL_NEW_DTV(dtv) \
({ tcbhead_t *__tcbp = (tcbhead_t *)__get_cr27(); \
- __tcbp->dtv = dtv; \
+ __tcbp->dtv = dtv; \
})
/* Return dtv of given thread descriptor. */
/* Return the address of the dtv for the current thread. */
# define THREAD_DTV() \
({ tcbhead_t *__tcbp = (tcbhead_t *)__get_cr27(); \
- __tcbp->dtv; \
+ __tcbp->dtv; \
})
/* Return the thread descriptor for the current thread. */
# define THREAD_SELF \
({ struct pthread *__self; \
__self = __get_cr27(); \
- __self - 1; \
+ __self - 1; \
})
/* Magic for libthread_db to know how to do THREAD_SELF.
ifeq ($(subdir),stdlib)
gen-as-const-headers += ucontext_i.sym
endif
-
#if __ASSUME_LWS_CAS
/* 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_ret; \
"nop \n\t" \
"stw %%r28, %0 \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) \
: _LWS_CLOBBER \
); \
- \
+ \
if(lws_errno == -EFAULT || lws_errno == -ENOSYS) \
- ABORT_INSTRUCTION; \
- \
+ ABORT_INSTRUCTION; \
+ \
lws_ret; \
})
-# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
+# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
({ \
int ret; \
ret = atomic_compare_and_exchange_val_acq(mem, newval, oldval); \
va_end (ap);
}
weak_alias(__makecontext, makecontext)
-
char __size[__SIZEOF_SEM_T];
long int __align;
} sem_t;
-
PSEUDO_END (__vfork)
libc_hidden_def (__vfork)
weak_alias (__vfork, vfork)
-
extern int __pthread_cond_wait_internal (pthread_cond_t *cond,
pthread_mutex_t *mutex);
#endif
-
# define __pthread_cond_broadcast __pthread_cond_broadcast_internal
# include_next <pthread_cond_broadcast.c>
#endif
-
# define __pthread_cond_destroy __pthread_cond_destroy_internal
# include_next <pthread_cond_destroy.c>
#endif
-
# define __pthread_cond_init __pthread_cond_init_internal
# include_next <pthread_cond_init.c>
#endif
-
# define __pthread_cond_signal __pthread_cond_signal_internal
# include_next <pthread_cond_signal.c>
#endif
-
# define __pthread_cond_timedwait __pthread_cond_timedwait_internal
# include_next <pthread_cond_timedwait.c>
#endif
-
# define __pthread_cond_wait __pthread_cond_wait_internal
# include_next <pthread_cond_wait.c>
#endif
-
/* The syscall cancellation mechanism requires userspace
assistance, the following code does roughly this:
- do arguments (read arg5 and arg6 to registers)
+ do arguments (read arg5 and arg6 to registers)
setup frame
check if there are threads, yes jump to pseudo_cancel
header.multiple_threads) == 0, 1)
# else
/* Read the value of header.multiple_threads from the thread pointer */
-# define SINGLE_THREAD_P \
+# define SINGLE_THREAD_P \
mfctl %cr27, %ret0 ASM_LINE_SEP \
ldw MULTIPLE_THREADS_THREAD_OFFSET(%sr0,%ret0),%ret0 ASM_LINE_SEP
# endif
__builtin_expect (THREAD_GETMEM (THREAD_SELF, \
header.multiple_threads) == 0, 1)
#endif
-
/* mark sc_sar flag to skip the setcontext call on reactivation. */
if (oucp->uc_mcontext.sc_sar == 0) {
- oucp->uc_mcontext.sc_sar++;
+ oucp->uc_mcontext.sc_sar++;
/* Restore the machine context in ucp. */
- __setcontext (ucp);
+ __setcontext (ucp);
}
return 0;
#undef END
#define END(name) \
- .EXIT ASM_LINE_SEP \
+ .EXIT ASM_LINE_SEP \
.PROCEND ASM_LINE_SEP \
cfi_endproc ASM_LINE_SEP \
.size C_SYMBOL_NAME(name), .-C_SYMBOL_NAME(name) ASM_LINE_SEP
/* int * __errno_location(void) so you have to store your value
into the return address! */
-#define DEFAULT_SYSCALL_ERROR_HANDLER \
+#define DEFAULT_SYSCALL_ERROR_HANDLER \
.import __errno_location,code ASM_LINE_SEP \
/* branch to errno handler */ ASM_LINE_SEP \
bl __errno_location,%rp ASM_LINE_SEP
across the syscall. */
#define CALL_CLOB_REGS "%r1", "%r2", CLOB_TREG \
- "%r20", "%r29", "%r31"
+ "%r20", "%r29", "%r31"
#undef INLINE_SYSCALL
#define INLINE_SYSCALL(name, nr, args...) \
/* Similar to INLINE_SYSCALL but we don't set errno */
#undef INTERNAL_SYSCALL
-#define INTERNAL_SYSCALL(name, err, nr, args...) \
+#define INTERNAL_SYSCALL(name, err, nr, args...) \
({ \
long __sys_res; \
{ \
/* The _NCS variant allows non-constant syscall numbers. */
#undef INTERNAL_SYSCALL_NCS
-#define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
+#define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
({ \
long __sys_res; \
{ \
/* Pointer mangling is not yet supported for HPPA. */
#define PTR_MANGLE(var) (void) (var)
#define PTR_DEMANGLE(var) (void) (var)
-