summaryrefslogtreecommitdiff
path: root/sysdeps/hppa
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/hppa')
-rw-r--r--sysdeps/hppa/Makefile2
-rw-r--r--sysdeps/hppa/__longjmp.c11
-rw-r--r--sysdeps/hppa/add_n.S2
-rw-r--r--sysdeps/hppa/bits/link.h2
-rw-r--r--sysdeps/hppa/bits/setjmp.h2
-rw-r--r--sysdeps/hppa/bsd-_setjmp.S2
-rw-r--r--sysdeps/hppa/bsd-setjmp.S2
-rw-r--r--sysdeps/hppa/crti.S101
-rw-r--r--sysdeps/hppa/crtn.S23
-rw-r--r--sysdeps/hppa/dl-fptr.c71
-rw-r--r--sysdeps/hppa/dl-fptr.h7
-rw-r--r--sysdeps/hppa/dl-irel.h2
-rw-r--r--sysdeps/hppa/dl-lookupcfg.h5
-rw-r--r--sysdeps/hppa/dl-machine.h53
-rw-r--r--sysdeps/hppa/dl-symaddr.c4
-rw-r--r--sysdeps/hppa/dl-tls.h5
-rw-r--r--sysdeps/hppa/dl-trampoline.S24
-rw-r--r--sysdeps/hppa/fpu/bits/fenv.h10
-rw-r--r--sysdeps/hppa/fpu/bits/mathdef.h43
-rw-r--r--sysdeps/hppa/fpu/fclrexcpt.c2
-rw-r--r--sysdeps/hppa/fpu/fedisblxcpt.c2
-rw-r--r--sysdeps/hppa/fpu/feenablxcpt.c2
-rw-r--r--sysdeps/hppa/fpu/fegetenv.c2
-rw-r--r--sysdeps/hppa/fpu/fegetexcept.c2
-rw-r--r--sysdeps/hppa/fpu/fegetmode.c (renamed from sysdeps/hppa/frame.h)20
-rw-r--r--sysdeps/hppa/fpu/fegetround.c2
-rw-r--r--sysdeps/hppa/fpu/feholdexcpt.c2
-rw-r--r--sysdeps/hppa/fpu/fesetenv.c2
-rw-r--r--sysdeps/hppa/fpu/fesetexcept.c (renamed from sysdeps/hppa/nptl/pthread_spin_lock.c)26
-rw-r--r--sysdeps/hppa/fpu/fesetmode.c36
-rw-r--r--sysdeps/hppa/fpu/fesetround.c2
-rw-r--r--sysdeps/hppa/fpu/feupdateenv.c2
-rw-r--r--sysdeps/hppa/fpu/fgetexcptflg.c2
-rw-r--r--sysdeps/hppa/fpu/fpu_control.h2
-rw-r--r--sysdeps/hppa/fpu/fraiseexcpt.c2
-rw-r--r--sysdeps/hppa/fpu/fsetexcptflg.c2
-rw-r--r--sysdeps/hppa/fpu/ftestexcept.c2
-rw-r--r--sysdeps/hppa/fpu/libm-test-ulps878
-rw-r--r--sysdeps/hppa/fpu/libm-test-ulps-name1
-rw-r--r--sysdeps/hppa/gccframe.h2
-rw-r--r--sysdeps/hppa/get-rounding-mode.h2
-rw-r--r--sysdeps/hppa/hppa1.1/addmul_1.S2
-rw-r--r--sysdeps/hppa/hppa1.1/mul_1.S2
-rw-r--r--sysdeps/hppa/hppa1.1/s_signbit.c2
-rw-r--r--sysdeps/hppa/hppa1.1/submul_1.S2
-rw-r--r--sysdeps/hppa/hppa1.1/udiv_qrnnd.S2
-rw-r--r--sysdeps/hppa/jmpbuf-offsets.h2
-rw-r--r--sysdeps/hppa/jmpbuf-unwind.h2
-rw-r--r--sysdeps/hppa/ldsodefs.h2
-rw-r--r--sysdeps/hppa/libc-tls.c2
-rw-r--r--sysdeps/hppa/libgcc-compat.c2
-rw-r--r--sysdeps/hppa/lshift.S2
-rw-r--r--sysdeps/hppa/machine-gmon.h2
-rw-r--r--sysdeps/hppa/math-tests.h (renamed from sysdeps/hppa/math_private.h)16
-rw-r--r--sysdeps/hppa/memusage.h2
-rw-r--r--sysdeps/hppa/nan-high-order-bit.h27
-rw-r--r--sysdeps/hppa/nptl/Makefile2
-rw-r--r--sysdeps/hppa/nptl/bits/pthreadtypes-arch.h91
-rw-r--r--sysdeps/hppa/nptl/bits/pthreadtypes.h230
-rw-r--r--sysdeps/hppa/nptl/bits/semaphore.h2
-rw-r--r--sysdeps/hppa/nptl/jmpbuf-unwind.h2
-rw-r--r--sysdeps/hppa/nptl/pthread-offsets.h5
-rw-r--r--sysdeps/hppa/nptl/pthread_spin_init.c2
-rw-r--r--sysdeps/hppa/nptl/pthread_spin_unlock.c2
-rw-r--r--sysdeps/hppa/nptl/pthreaddef.h2
-rw-r--r--sysdeps/hppa/nptl/tcb-offsets.sym2
-rw-r--r--sysdeps/hppa/nptl/tls.h15
-rw-r--r--sysdeps/hppa/nptl/tst-oddstacklimit.c2
-rw-r--r--sysdeps/hppa/rshift.S2
-rw-r--r--sysdeps/hppa/setjmp.S3
-rw-r--r--sysdeps/hppa/sotruss-lib.c2
-rw-r--r--sysdeps/hppa/stackinfo.h2
-rw-r--r--sysdeps/hppa/start.S29
-rw-r--r--sysdeps/hppa/sub_n.S2
-rw-r--r--sysdeps/hppa/sysdep.h2
-rw-r--r--sysdeps/hppa/tst-audit.h2
-rw-r--r--sysdeps/hppa/udiv_qrnnd.S2
77 files changed, 970 insertions, 868 deletions
diff --git a/sysdeps/hppa/Makefile b/sysdeps/hppa/Makefile
index 08098a8d20..e62838baf0 100644
--- a/sysdeps/hppa/Makefile
+++ b/sysdeps/hppa/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2016 Free Software Foundation, Inc.
+# Copyright (C) 2000-2018 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by David Huggins-Daines (dhd@debian.org)
diff --git a/sysdeps/hppa/__longjmp.c b/sysdeps/hppa/__longjmp.c
index bc14a51c0f..a90678d55f 100644
--- a/sysdeps/hppa/__longjmp.c
+++ b/sysdeps/hppa/__longjmp.c
@@ -1,5 +1,5 @@
/* longjmp for PA-RISC.
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2018 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
@@ -24,15 +24,15 @@
void
__longjmp (__jmp_buf env, int val)
{
+#ifdef CHECK_SP
+ CHECK_SP (env[0].__jmp_buf.__sp);
+#endif
+
/* We must use one of the non-callee saves registers
for env. */
register unsigned long r26 asm ("r26") = (unsigned long)&env[0];
register unsigned long r25 asm ("r25") = (unsigned long)(val == 0 ? 1 : val);
-#ifdef CHECK_SP
- CHECK_SP (env[0].__jmp_buf.__sp);
-#endif
-
asm volatile(
/* Set return value. */
"copy %0, %%r28\n\t"
@@ -79,6 +79,7 @@ __longjmp (__jmp_buf env, int val)
: /* No outputs. */
: "r" (r25), "r" (r26)
: /* No point in clobbers. */ );
+
/* Avoid `volatile function does return' warnings. */
for (;;);
}
diff --git a/sysdeps/hppa/add_n.S b/sysdeps/hppa/add_n.S
index 0c5745774e..10f9368acb 100644
--- a/sysdeps/hppa/add_n.S
+++ b/sysdeps/hppa/add_n.S
@@ -1,7 +1,7 @@
;! HP-PA __mpn_add_n -- Add two limb vectors of the same length > 0 and store
;! sum in a third limb vector.
-;! Copyright (C) 1992-2016 Free Software Foundation, Inc.
+;! Copyright (C) 1992-2018 Free Software Foundation, Inc.
;! This file is part of the GNU MP Library.
diff --git a/sysdeps/hppa/bits/link.h b/sysdeps/hppa/bits/link.h
index f83e107191..e070db11ab 100644
--- a/sysdeps/hppa/bits/link.h
+++ b/sysdeps/hppa/bits/link.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2018 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
diff --git a/sysdeps/hppa/bits/setjmp.h b/sysdeps/hppa/bits/setjmp.h
index 93b2c74c86..f36c4ced57 100644
--- a/sysdeps/hppa/bits/setjmp.h
+++ b/sysdeps/hppa/bits/setjmp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 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
diff --git a/sysdeps/hppa/bsd-_setjmp.S b/sysdeps/hppa/bsd-_setjmp.S
index 51321d2bd4..843f8ed933 100644
--- a/sysdeps/hppa/bsd-_setjmp.S
+++ b/sysdeps/hppa/bsd-_setjmp.S
@@ -1,5 +1,5 @@
/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. HPPA version.
- Copyright (C) 2001-2016 Free Software Foundation, Inc.
+ Copyright (C) 2001-2018 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
diff --git a/sysdeps/hppa/bsd-setjmp.S b/sysdeps/hppa/bsd-setjmp.S
index 49b2ff7bb7..75681ad82d 100644
--- a/sysdeps/hppa/bsd-setjmp.S
+++ b/sysdeps/hppa/bsd-setjmp.S
@@ -1,5 +1,5 @@
/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. HPPA version.
- Copyright (C) 2001-2016 Free Software Foundation, Inc.
+ Copyright (C) 2001-2018 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
diff --git a/sysdeps/hppa/crti.S b/sysdeps/hppa/crti.S
index 6e2bc7d2ba..28550e5758 100644
--- a/sysdeps/hppa/crti.S
+++ b/sysdeps/hppa/crti.S
@@ -1,5 +1,5 @@
/* Special .init and .fini section support for HPPA
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 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
@@ -49,28 +49,111 @@
# define PREINIT_FUNCTION_WEAK 1
#endif
+#if PREINIT_FUNCTION_WEAK
+ weak_extern (PREINIT_FUNCTION)
+#else
+ .hidden PREINIT_FUNCTION
+#endif
+
+
+/* If we have working .init_array support, we want to keep the .init
+ section empty (apart from the mandatory prologue/epilogue. This
+ ensures that the default unwind conventions (return-pointer in b0,
+ frame state in ar.pfs, etc.) will do the Right Thing. To ensure
+ an empty .init section, we register gmon_initializer() via the
+ .init_array.
+
+ --davidm 02/10/29 */
+
+#if PREINIT_FUNCTION_WEAK
+/* This blob of assembly code is one simple C function:
+
+static void
+__attribute__ ((used))
+gmon_initializer (void)
+{
+ extern void weak_function __gmon_start__ (void);
+
+ if (__gmon_start__)
+ (*__gmon_start__)();
+}
+
+In a final executable, PLABEL32 relocations for function pointers are
+resolved at link time. Typically, binutils/ld resolves __gmon_start__
+using an external shared library. __gmon_start__ is always called if
+it is found at link time. If __gmon_start__ is not found at runtime
+due to a library update, then the function pointer will point at a null
+function descriptor and calling it will cause a segmentation fault.
+So, we call __canonicalize_funcptr_for_compare to obtain the canonicalized
+address of __gmon_start__ and skip calling __gmon_start__ if it is zero.
+
+ */
+ .type __canonicalize_funcptr_for_compare,@function
+ .type $$dyncall,@function
+
+ .section .data.rel.ro,"aw",@progbits
+ .align 4
+.LC0:
+ .type __gmon_start__,@function
+ .word P%__gmon_start__
+
+ .text
+ .align 4
+ .type gmon_initializer,@function
+gmon_initializer:
+ .PROC
+ .CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=4
+ .ENTRY
+ stw %r2,-20(%r30)
+ stwm %r4,64(%r30)
+ stw %r3,-60(%r30)
+ addil LT'.LC0,%r19
+ ldw RT'.LC0(%r1),%r28
+ ldw 0(%r28),%r3
+ comib,= 0,%r3,1f
+ copy %r19,%r4
+ stw %r19,-32(%r30)
+ bl __canonicalize_funcptr_for_compare,%r2
+ copy %r3,%r26
+ comib,= 0,%r28,1f
+ copy %r4,%r19
+ copy %r3,%r22
+ .CALL ARGW0=GR
+ bl $$dyncall,%r31
+ copy %r31,%r2
+1:
+ ldw -84(%r30),%r2
+ ldw -60(%r30),%r3
+ bv %r0(%r2)
+ ldwm -64(%r30),%r4
+ .EXIT
+ .PROCEND
+ .size gmon_initializer, .-gmon_initializer
+
+# undef PREINIT_FUNCTION
+# define PREINIT_FUNCTION gmon_initializer
+#endif
+
+ .section .init_array, "aw"
+ .word P% PREINIT_FUNCTION
+
+
/* _init prologue. */
.section .init, "ax", %progbits
.align 4
.globl _init
+ .hidden _init
.type _init,@function
_init:
stw %rp,-20(%sp)
stwm %r4,64(%sp)
stw %r19,-32(%sp)
-#if PREINIT_FUNCTION_WEAK
- bl PREINIT_FUNCTION,%rp
- copy %r19,%r4 /* delay slot */
-#else
- bl PREINIT_FUNCTION,%rp
- copy %r19,%r4 /* delay slot */
-#endif
- copy %r4,%r19
/* _fini prologue. */
.section .fini,"ax",%progbits
.align 4
.globl _fini
+ .hidden _fini
.type _fini,@function
_fini:
stw %rp,-20(%sp)
diff --git a/sysdeps/hppa/crtn.S b/sysdeps/hppa/crtn.S
index acd41d3ec8..69562d00b4 100644
--- a/sysdeps/hppa/crtn.S
+++ b/sysdeps/hppa/crtn.S
@@ -1,5 +1,5 @@
/* Special .init and .fini section support for HPPA
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 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
@@ -38,27 +38,6 @@
/* crtn.S puts function epilogues in the .init and .fini sections
corresponding to the prologues in crti.S. */
-/* Note that we cannot have a weak undefined __gmon_start__, because
- that would require this to be PIC, and the linker is currently not
- able to generate a proper procedure descriptor for _init. Sad but
- true. Anyway, HPPA is one of those horrible architectures where
- making the comparison and indirect call is quite expensive (see the
- comment in sysdeps/generic/initfini.c). */
- .text
- .align 4
- .weak __gmon_start__
- .type __gmon_start__,@function
-__gmon_start__:
- .proc
- .callinfo
- .entry
- bv,n %r0(%r2)
- .exit
- .procend
-
-/* Here is the tail end of _init. We put __gmon_start before this so
- that the assembler creates the .PARISC.unwind section for us, ie.
- with the right attributes. */
.section .init, "ax", @progbits
ldw -84(%sp),%rp
copy %r4,%r19
diff --git a/sysdeps/hppa/dl-fptr.c b/sysdeps/hppa/dl-fptr.c
index 083242b7e3..17b93538c3 100644
--- a/sysdeps/hppa/dl-fptr.c
+++ b/sysdeps/hppa/dl-fptr.c
@@ -1,5 +1,5 @@
/* Manage function descriptors. Generic version.
- Copyright (C) 1999-2016 Free Software Foundation, Inc.
+ Copyright (C) 1999-2018 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
@@ -28,6 +28,7 @@
#include <dl-fptr.h>
#include <dl-unmap-segments.h>
#include <atomic.h>
+#include <libc-pointer-arith.h>
#ifndef ELF_MACHINE_BOOT_FPTR_TABLE_LEN
/* ELF_MACHINE_BOOT_FPTR_TABLE_LEN should be greater than the number of
@@ -181,24 +182,29 @@ make_fdesc (ElfW(Addr) ip, ElfW(Addr) gp)
static inline ElfW(Addr) * __attribute__ ((always_inline))
make_fptr_table (struct link_map *map)
{
- const ElfW(Sym) *symtab
- = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
+ const ElfW(Sym) *symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
ElfW(Addr) *fptr_table;
size_t size;
size_t len;
+ const ElfW(Sym) *symtabend;
- /* XXX Apparently the only way to find out the size of the dynamic
- symbol section is to assume that the string table follows right
- afterwards... */
- len = ((strtab - (char *) symtab)
+ /* Determine the end of the dynamic symbol table using the hash. */
+ if (map->l_info[DT_HASH] != NULL)
+ symtabend = (symtab + ((Elf_Symndx *) D_PTR (map, l_info[DT_HASH]))[1]);
+ else
+ /* There is no direct way to determine the number of symbols in the
+ dynamic symbol table and no hash table is present. The ELF
+ binary is ill-formed but what shall we do? Use the beginning of
+ the string table which generally follows the symbol table. */
+ symtabend = (const ElfW(Sym) *) strtab;
+
+ len = (((char *) symtabend - (char *) symtab)
/ map->l_info[DT_SYMENT]->d_un.d_val);
- size = ((len * sizeof (fptr_table[0]) + GLRO(dl_pagesize) - 1)
- & -GLRO(dl_pagesize));
- /* XXX We don't support here in the moment systems without MAP_ANON.
- There probably are none for IA-64. In case this is proven wrong
- we will have to open /dev/null here and use the file descriptor
- instead of the hard-coded -1. */
+ size = ALIGN_UP (len * sizeof (fptr_table[0]), GLRO(dl_pagesize));
+
+ /* We don't support systems without MAP_ANON. We avoid using malloc
+ because this might get called before malloc is setup. */
fptr_table = __mmap (NULL, size,
PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE,
-1, 0);
@@ -323,30 +329,52 @@ elf_machine_resolve (void)
Elf32_Addr addr;
asm ("b,l 1f,%0\n"
-" depi 0,31,2,%0\n"
-"1: addil L'_dl_runtime_resolve - ($PIC_pcrel$0 - 8),%0\n"
-" ldo R'_dl_runtime_resolve - ($PIC_pcrel$0 - 12)(%%r1),%0\n"
+" addil L'_dl_runtime_resolve - ($PIC_pcrel$0 - 1),%0\n"
+"1: ldo R'_dl_runtime_resolve - ($PIC_pcrel$0 - 5)(%%r1),%0\n"
: "=r" (addr) : : "r1");
return addr;
}
+static inline int
+_dl_read_access_allowed (unsigned int *addr)
+{
+ int result;
+
+ asm ("proberi (%1),3,%0" : "=r" (result) : "r" (addr) : );
+
+ return result;
+}
+
ElfW(Addr)
_dl_lookup_address (const void *address)
{
ElfW(Addr) addr = (ElfW(Addr)) address;
unsigned int *desc, *gptr;
- /* Check for special cases. */
- if ((int) addr == -1
- || (unsigned int) addr < 4096
- || !((unsigned int) addr & 2))
+ /* Return ADDR if the least-significant two bits of ADDR are not consistent
+ with ADDR being a linker defined function pointer. The normal value for
+ a code address in a backtrace is 3. */
+ if (((unsigned int) addr & 3) != 2)
+ return addr;
+
+ /* Handle special case where ADDR points to page 0. */
+ if ((unsigned int) addr < 4096)
return addr;
/* Clear least-significant two bits from descriptor address. */
desc = (unsigned int *) ((unsigned int) addr & ~3);
+ if (!_dl_read_access_allowed (desc))
+ return addr;
- /* Check if descriptor requires resolution. The following trampoline is
+ /* Load first word of candidate descriptor. It should be a pointer
+ with word alignment and point to memory that can be read. */
+ gptr = (unsigned int *) desc[0];
+ if (((unsigned int) gptr & 3) != 0
+ || !_dl_read_access_allowed (gptr))
+ return addr;
+
+ /* See if descriptor requires resolution. The following trampoline is
used in each global offset table for function resolution:
ldw 0(r20),r22
@@ -358,7 +386,6 @@ _dl_lookup_address (const void *address)
.word "_dl_runtime_resolve ltp"
got: .word _DYNAMIC
.word "struct link map address" */
- gptr = (unsigned int *) desc[0];
if (gptr[0] == 0xea9f1fdd /* b,l .-12,r20 */
&& gptr[1] == 0xd6801c1e /* depwi 0,31,2,r20 */
&& (ElfW(Addr)) gptr[2] == elf_machine_resolve ())
diff --git a/sysdeps/hppa/dl-fptr.h b/sysdeps/hppa/dl-fptr.h
index 8ecfedacfc..81ae07a480 100644
--- a/sysdeps/hppa/dl-fptr.h
+++ b/sysdeps/hppa/dl-fptr.h
@@ -1,5 +1,5 @@
/* Function descriptors. HPPA version.
- Copyright (C) 2003-2016 Free Software Foundation, Inc.
+ Copyright (C) 2003-2018 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
@@ -31,9 +31,8 @@ extern void _dl_fptr_init (void);
#define ELF_MACHINE_LOAD_ADDRESS(var, symbol) \
asm ( \
" b,l 1f,%0\n" \
-" depi 0,31,2,%0\n" \
-"1: addil L'" #symbol " - ($PIC_pcrel$0 - 8),%0\n" \
-" ldo R'" #symbol " - ($PIC_pcrel$0 - 12)(%%r1),%0\n" \
+" addil L'" #symbol " - ($PIC_pcrel$0 - 1),%0\n" \
+"1: ldo R'" #symbol " - ($PIC_pcrel$0 - 5)(%%r1),%0\n" \
: "=&r" (var) : : "r1");
#endif /* !dl_hppa_fptr_h */
diff --git a/sysdeps/hppa/dl-irel.h b/sysdeps/hppa/dl-irel.h
index b01a99d799..d144b658a2 100644
--- a/sysdeps/hppa/dl-irel.h
+++ b/sysdeps/hppa/dl-irel.h
@@ -1,6 +1,6 @@
/* Machine-dependent ELF indirect relocation inline functions.
HP-PARISC version.
- Copyright (C) 2012-2016 Free Software Foundation, Inc.
+ Copyright (C) 2012-2018 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
diff --git a/sysdeps/hppa/dl-lookupcfg.h b/sysdeps/hppa/dl-lookupcfg.h
index 3f1d14aa2f..38db345936 100644
--- a/sysdeps/hppa/dl-lookupcfg.h
+++ b/sysdeps/hppa/dl-lookupcfg.h
@@ -1,5 +1,5 @@
/* Configuration of lookup functions.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 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
@@ -73,7 +73,8 @@ void attribute_hidden _dl_unmap (struct link_map *map);
/* Construct a fixup value from the address and linkmap */
#define DL_FIXUP_MAKE_VALUE(map, addr) \
- ((struct fdesc) { (addr), (map)->l_info[DT_PLTGOT]->d_un.d_ptr })
+ (map) ? ((struct fdesc) { (addr), (map)->l_info[DT_PLTGOT]->d_un.d_ptr }) \
+ : ((struct fdesc) { 0, 0 })
/* Extract the code address from a fixup value */
#define DL_FIXUP_VALUE_CODE_ADDR(value) ((value).ip)
diff --git a/sysdeps/hppa/dl-machine.h b/sysdeps/hppa/dl-machine.h
index 9404211819..5f4e0d3823 100644
--- a/sysdeps/hppa/dl-machine.h
+++ b/sysdeps/hppa/dl-machine.h
@@ -1,5 +1,5 @@
/* Machine-dependent ELF dynamic relocation inline functions. PA-RISC version.
- Copyright (C) 1995-2016 Free Software Foundation, Inc.
+ Copyright (C) 1995-2018 Free Software Foundation, Inc.
Contributed by David Huggins-Daines <dhd@debian.org>
This file is part of the GNU C Library.
@@ -62,7 +62,7 @@ __hppa_init_bootstrap_fdesc_table (struct link_map *map)
}
#define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info) \
- __hppa_init_bootstrap_fdesc_table (&bootstrap_map); \
+ __hppa_init_bootstrap_fdesc_table (BOOTSTRAP_MAP); \
_dl_fptr_init();
/* Return nonzero iff ELF header is compatible with the running host. */
@@ -81,10 +81,9 @@ elf_machine_dynamic (void)
{
Elf32_Addr dynamic;
- asm ("b,l 1f,%0\n"
-" depi 0,31,2,%0\n"
-"1: addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 8),%0\n"
-" ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 12)(%%r1),%0\n"
+ asm ("bl 1f,%0\n"
+" addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 1),%0\n"
+"1: ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 5)(%%r1),%0\n"
: "=r" (dynamic) : : "r1");
return dynamic;
@@ -100,10 +99,9 @@ elf_machine_load_address (void)
Elf32_Addr dynamic;
asm (
-" b,l 1f,%0\n"
-" depi 0,31,2,%0\n"
-"1: addil L'_DYNAMIC - ($PIC_pcrel$0 - 8),%0\n"
-" ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%%r1),%0\n"
+" bl 1f,%0\n"
+" addil L'_DYNAMIC - ($PIC_pcrel$0 - 1),%0\n"
+"1: ldo R'_DYNAMIC - ($PIC_pcrel$0 - 5)(%%r1),%0\n"
: "=r" (dynamic) : : "r1");
return dynamic - elf_machine_dynamic ();
@@ -112,6 +110,7 @@ elf_machine_load_address (void)
/* Fixup a PLT entry to bounce directly to the function at VALUE. */
static inline struct fdesc __attribute__ ((always_inline))
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, struct fdesc value)
{
@@ -302,6 +301,10 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
#define ARCH_LA_PLTENTER hppa_gnu_pltenter
#define ARCH_LA_PLTEXIT hppa_gnu_pltexit
+/* Adjust DL_STACK_END to get value we want in __libc_stack_end. */
+#define DL_STACK_END(cookie) \
+ ((void *) (((long) (cookie)) + 0x160))
+
/* 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. */
@@ -334,14 +337,13 @@ asm ( \
just like a branch reloc. This sequence gets us the \
runtime address of _DYNAMIC. */ \
" bl 0f,%r19\n" \
-" depi 0,31,2,%r19\n" /* clear priviledge bits */ \
-"0: addil L'_DYNAMIC - ($PIC_pcrel$0 - 8),%r19\n" \
-" ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%r1),%r26\n" \
+" addil L'_DYNAMIC - ($PIC_pcrel$0 - 1),%r19\n" \
+"0: ldo R'_DYNAMIC - ($PIC_pcrel$0 - 5)(%r1),%r26\n" \
\
/* The link time address is stored in the first entry of the \
GOT. */ \
-" addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 16),%r19\n" \
-" ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 20)(%r1),%r20\n" \
+" addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 9),%r19\n" \
+" ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 13)(%r1),%r20\n" \
\
" sub %r26,%r20,%r20\n" /* Calculate load offset */ \
\
@@ -401,11 +403,6 @@ asm ( \
/* Save the entry point in %r3. */ \
" copy %ret0,%r3\n" \
\
- /* Remember the lowest stack address. */ \
-" addil LT'__libc_stack_end,%r19\n" \
-" ldw RT'__libc_stack_end(%r1),%r20\n" \
-" stw %sp,0(%r20)\n" \
- \
/* See if we were called as a command with the executable file \
name as an extra leading argument. */ \
" addil LT'_dl_skip_args,%r19\n" \
@@ -565,7 +562,7 @@ elf_machine_rela (struct link_map *map,
if (sym_map)
{
- value = sym ? sym_map->l_addr + sym->st_value : 0;
+ value = SYMBOL_ADDRESS (sym_map, sym, true);
value += reloc->r_addend;
}
else
@@ -589,8 +586,8 @@ elf_machine_rela (struct link_map *map,
case R_PARISC_DIR21L:
{
unsigned int insn = *(unsigned int *)reloc_addr;
- value = sym_map->l_addr + sym->st_value
- + ((reloc->r_addend + 0x1000) & -0x2000);
+ value = (SYMBOL_ADDRESS (sym_map, sym, true)
+ + ((reloc->r_addend + 0x1000) & -0x2000));
value = value >> 11;
insn = (insn &~ 0x1fffff) | reassemble_21 (value);
*(unsigned int *)reloc_addr = insn;
@@ -600,8 +597,8 @@ elf_machine_rela (struct link_map *map,
case R_PARISC_DIR14R:
{
unsigned int insn = *(unsigned int *)reloc_addr;
- value = ((sym_map->l_addr + sym->st_value) & 0x7ff)
- + (((reloc->r_addend & 0x1fff) ^ 0x1000) - 0x1000);
+ value = ((SYMBOL_ADDRESS (sym_map, sym, true) & 0x7ff)
+ + (((reloc->r_addend & 0x1fff) ^ 0x1000) - 0x1000));
insn = (insn &~ 0x3fff) | reassemble_14 (value);
*(unsigned int *)reloc_addr = insn;
}
@@ -653,13 +650,13 @@ elf_machine_rela (struct link_map *map,
case R_PARISC_IPLT:
if (__builtin_expect (sym_map != NULL, 1))
{
- elf_machine_fixup_plt (NULL, sym_map, reloc, reloc_addr,
+ elf_machine_fixup_plt (NULL, sym_map, NULL, NULL, reloc, reloc_addr,
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,
+ elf_machine_fixup_plt (NULL, map, NULL, NULL, reloc, reloc_addr,
DL_FIXUP_MAKE_VALUE(map, value));
}
return;
@@ -693,7 +690,7 @@ elf_machine_rela (struct link_map *map,
/* During relocation all TLS symbols are defined and used.
Therefore the offset is already correct. */
if (sym != NULL)
- *reloc_addr = sym->st_value;
+ *reloc_addr = sym->st_value + reloc->r_addend;
return;
case R_PARISC_TLS_TPREL32:
diff --git a/sysdeps/hppa/dl-symaddr.c b/sysdeps/hppa/dl-symaddr.c
index e03a9489ad..4615dfc5b8 100644
--- a/sysdeps/hppa/dl-symaddr.c
+++ b/sysdeps/hppa/dl-symaddr.c
@@ -1,5 +1,5 @@
/* Get the symbol address. HPPA version.
- Copyright (C) 1999-2016 Free Software Foundation, Inc.
+ Copyright (C) 1999-2018 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
@@ -23,7 +23,7 @@ void *
_dl_symbol_address (struct link_map *map, const ElfW(Sym) *ref)
{
/* Find the "ip" from the "map" and symbol "ref" */
- Elf32_Addr value = (map ? map->l_addr : 0) + ref->st_value;
+ Elf32_Addr value = SYMBOL_ADDRESS (map, ref, false);
/* On hppa, we have to return the pointer to function descriptor.
This involves an "| 2" to inform $$dyncall that this is a plabel32 */
diff --git a/sysdeps/hppa/dl-tls.h b/sysdeps/hppa/dl-tls.h
index 58b9280848..9a2ed59701 100644
--- a/sysdeps/hppa/dl-tls.h
+++ b/sysdeps/hppa/dl-tls.h
@@ -1,5 +1,5 @@
/* Thread-local storage handling in the ELF dynamic linker. hppa version.
- Copyright (C) 2003-2016 Free Software Foundation, Inc.
+ Copyright (C) 2003-2018 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
@@ -26,6 +26,3 @@ typedef struct
extern void *__tls_get_addr (tls_index *ti);
-
-/* Value used for dtv entries for which the allocation is delayed. */
-#define TLS_DTV_UNALLOCATED ((void *) -1l)
diff --git a/sysdeps/hppa/dl-trampoline.S b/sysdeps/hppa/dl-trampoline.S
index 8123dbea83..7ee4331cc2 100644
--- a/sysdeps/hppa/dl-trampoline.S
+++ b/sysdeps/hppa/dl-trampoline.S
@@ -1,5 +1,5 @@
/* PLT trampolines. hppa version.
- Copyright (C) 2005-2016 Free Software Foundation, Inc.
+ Copyright (C) 2005-2018 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
@@ -82,6 +82,21 @@ _dl_runtime_resolve:
bl _dl_fixup,%rp
copy %r21,%r19 /* set fixup func ltp */
+ /* While the linker will set a function pointer to NULL when it
+ encounters an undefined weak function, we need to dynamically
+ detect removed weak functions. The issue arises because a weak
+ __gmon_start__ function was added to shared executables to work
+ around issues in _init that are now resolved. The presence of
+ __gmon_start__ in every shared library breaks the linker
+ `--as-needed' option. This __gmon_start__ function does nothing
+ but removal is tricky. Depending on the binding, removal can
+ cause an application using it to fault. The call to _dl_fixup
+ returns NULL when a function isn't resolved. In order to help
+ with __gmon_start__ removal, we return directly to the caller
+ when _dl_fixup returns NULL. This check could be removed when
+ BZ 19170 is fixed. */
+ comib,= 0,%r28,1f
+
/* Load up the returned func descriptor */
copy %r28, %r22
copy %r29, %r19
@@ -107,6 +122,13 @@ _dl_runtime_resolve:
/* Jump to new function, but return to previous function */
bv %r0(%r22)
ldw -20(%sp),%rp
+
+1:
+ /* Return to previous function */
+ ldw -148(%sp),%rp
+ bv %r0(%rp)
+ ldo -128(%sp),%sp
+
.EXIT
.PROCEND
cfi_endproc
diff --git a/sysdeps/hppa/fpu/bits/fenv.h b/sysdeps/hppa/fpu/bits/fenv.h
index cae9daeb04..fe7474de1b 100644
--- a/sysdeps/hppa/fpu/bits/fenv.h
+++ b/sysdeps/hppa/fpu/bits/fenv.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>
@@ -89,3 +89,11 @@ typedef struct
/* Floating-point environment where none of the exceptions are masked. */
# define FE_NOMASK_ENV ((const fenv_t *) -2)
#endif
+
+#if __GLIBC_USE (IEC_60559_BFP_EXT)
+/* 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
diff --git a/sysdeps/hppa/fpu/bits/mathdef.h b/sysdeps/hppa/fpu/bits/mathdef.h
deleted file mode 100644
index 99c9cffd25..0000000000
--- a/sysdeps/hppa/fpu/bits/mathdef.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (C) 2006-2016 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
- <http://www.gnu.org/licenses/>. */
-
-#if !defined _MATH_H && !defined _COMPLEX_H
-# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
-#endif
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* GCC does not promote `float' values to `double'. */
-typedef float float_t; /* `float' expressions are evaluated as
- `float'. */
-typedef double double_t; /* `double' expressions are evaluated as
- `double'. */
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647)
-# define FP_ILOGBNAN (2147483647)
-
-#endif /* ISO C99 */
-
-#ifndef __NO_LONG_DOUBLE_MATH
-/* On hppa `long double' and `double' are 64-bits. So, libm is built
- with NO_LONG_DOUBLE defined. The following define ensures the library
- and headers are consistent. This disables the declaration of all the
- `long double' function variants. */
-# define __NO_LONG_DOUBLE_MATH 1
-#endif
diff --git a/sysdeps/hppa/fpu/fclrexcpt.c b/sysdeps/hppa/fpu/fclrexcpt.c
index 97da0b5596..49c1778712 100644
--- a/sysdeps/hppa/fpu/fclrexcpt.c
+++ b/sysdeps/hppa/fpu/fclrexcpt.c
@@ -1,5 +1,5 @@
/* Clear given exceptions in current floating-point environment.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/fpu/fedisblxcpt.c b/sysdeps/hppa/fpu/fedisblxcpt.c
index 7b062604aa..bd03b6b644 100644
--- a/sysdeps/hppa/fpu/fedisblxcpt.c
+++ b/sysdeps/hppa/fpu/fedisblxcpt.c
@@ -1,5 +1,5 @@
/* Disable floating-point exceptions.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/fpu/feenablxcpt.c b/sysdeps/hppa/fpu/feenablxcpt.c
index dffbf9440c..62fec44dde 100644
--- a/sysdeps/hppa/fpu/feenablxcpt.c
+++ b/sysdeps/hppa/fpu/feenablxcpt.c
@@ -1,5 +1,5 @@
/* Enable floating-point exceptions.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/fpu/fegetenv.c b/sysdeps/hppa/fpu/fegetenv.c
index ec6a963bf2..06c7374a3f 100644
--- a/sysdeps/hppa/fpu/fegetenv.c
+++ b/sysdeps/hppa/fpu/fegetenv.c
@@ -1,5 +1,5 @@
/* Store current floating-point environment.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/fpu/fegetexcept.c b/sysdeps/hppa/fpu/fegetexcept.c
index e4702502bf..6f58b7d31c 100644
--- a/sysdeps/hppa/fpu/fegetexcept.c
+++ b/sysdeps/hppa/fpu/fegetexcept.c
@@ -1,5 +1,5 @@
/* Get enabled floating-point exceptions.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/frame.h b/sysdeps/hppa/fpu/fegetmode.c
index 66777e44d7..7e2e06b67b 100644
--- a/sysdeps/hppa/frame.h
+++ b/sysdeps/hppa/fpu/fegetmode.c
@@ -1,5 +1,5 @@
-/* Definition of stack frame structure. HPPA version.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+/* Store current floating-point control modes. HPPA version.
+ Copyright (C) 2016-2018 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
@@ -13,15 +13,15 @@
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
+ License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-/* PA stacks grow upwards. */
-#define INNER_THAN >
+#include <fenv.h>
+#include <fpu_control.h>
-/* FIXME: will verify this later */
-struct layout
+int
+fegetmode (femode_t *modep)
{
- void *next;
- void *return_address;
-};
+ _FPU_GETCW (*modep);
+ return 0;
+}
diff --git a/sysdeps/hppa/fpu/fegetround.c b/sysdeps/hppa/fpu/fegetround.c
index 80fabe7d6c..bb82a2e922 100644
--- a/sysdeps/hppa/fpu/fegetround.c
+++ b/sysdeps/hppa/fpu/fegetround.c
@@ -1,5 +1,5 @@
/* Return current rounding direction.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/fpu/feholdexcpt.c b/sysdeps/hppa/fpu/feholdexcpt.c
index 98b4b15036..7ae1f3cab9 100644
--- a/sysdeps/hppa/fpu/feholdexcpt.c
+++ b/sysdeps/hppa/fpu/feholdexcpt.c
@@ -1,5 +1,5 @@
/* Store current floating-point environment and clear exceptions.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/fpu/fesetenv.c b/sysdeps/hppa/fpu/fesetenv.c
index 8916e32b85..2cf05f85f5 100644
--- a/sysdeps/hppa/fpu/fesetenv.c
+++ b/sysdeps/hppa/fpu/fesetenv.c
@@ -1,5 +1,5 @@
/* Install given floating-point environment.
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
Based on the m68k version by
diff --git a/sysdeps/hppa/nptl/pthread_spin_lock.c b/sysdeps/hppa/fpu/fesetexcept.c
index 2dea818315..eeb0a36223 100644
--- a/sysdeps/hppa/nptl/pthread_spin_lock.c
+++ b/sysdeps/hppa/fpu/fesetexcept.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2005-2016 Free Software Foundation, Inc.
+/* Set given exception flags. HPPA version.
+ Copyright (C) 2016-2018 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
@@ -12,12 +13,23 @@
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
+ License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#define SPIN_LOCK_READS_BETWEEN_CMPXCHG 1000
+#include <fenv.h>
+#include <fpu_control.h>
-/* We can't use the normal "#include <nptl/pthread_spin_lock.c>" because
- it will resolve to this very file. Using "sysdeps/.." as reference to the
- top level directory does the job. */
-#include <sysdeps/../nptl/pthread_spin_lock.c>
+int
+fesetexcept (int excepts)
+{
+ fpu_control_t fpsr;
+ fpu_control_t fpsr_new;
+
+ _FPU_GETCW (fpsr);
+ excepts &= FE_ALL_EXCEPT;
+ fpsr_new = fpsr | (excepts << _FPU_HPPA_SHIFT_FLAGS);
+ if (fpsr != fpsr_new)
+ _FPU_SETCW (fpsr_new);
+
+ return 0;
+}
diff --git a/sysdeps/hppa/fpu/fesetmode.c b/sysdeps/hppa/fpu/fesetmode.c
new file mode 100644
index 0000000000..cf03bf72d4
--- /dev/null
+++ b/sysdeps/hppa/fpu/fesetmode.c
@@ -0,0 +1,36 @@
+/* Install given floating-point control modes. HPPA version.
+ Copyright (C) 2016-2018 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
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <fpu_control.h>
+
+#define FPU_CONTROL_BITS (_FPU_HPPA_MASK_RM | 0x20 | _FPU_HPPA_MASK_INT)
+
+int
+fesetmode (const femode_t *modep)
+{
+ fpu_control_t cw;
+ _FPU_GETCW (cw);
+ cw &= ~FPU_CONTROL_BITS;
+ if (modep == FE_DFL_MODE)
+ cw |= _FPU_DEFAULT;
+ else
+ cw |= *modep & FPU_CONTROL_BITS;
+ _FPU_SETCW (cw);
+ return 0;
+}
diff --git a/sysdeps/hppa/fpu/fesetround.c b/sysdeps/hppa/fpu/fesetround.c
index 6a444aa077..36ca40801d 100644
--- a/sysdeps/hppa/fpu/fesetround.c
+++ b/sysdeps/hppa/fpu/fesetround.c
@@ -1,5 +1,5 @@
/* Set current rounding direction.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/fpu/feupdateenv.c b/sysdeps/hppa/fpu/feupdateenv.c
index 17a2dcd957..be88c0205d 100644
--- a/sysdeps/hppa/fpu/feupdateenv.c
+++ b/sysdeps/hppa/fpu/feupdateenv.c
@@ -1,5 +1,5 @@
/* Install given floating-point environment and raise exceptions.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/fpu/fgetexcptflg.c b/sysdeps/hppa/fpu/fgetexcptflg.c
index c8f7490dcd..2c9aa4e774 100644
--- a/sysdeps/hppa/fpu/fgetexcptflg.c
+++ b/sysdeps/hppa/fpu/fgetexcptflg.c
@@ -1,5 +1,5 @@
/* Store current representation for exceptions.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/fpu/fpu_control.h b/sysdeps/hppa/fpu/fpu_control.h
index 5ea8cbc7de..afe355b825 100644
--- a/sysdeps/hppa/fpu/fpu_control.h
+++ b/sysdeps/hppa/fpu/fpu_control.h
@@ -1,5 +1,5 @@
/* FPU control word definitions. HP-PARISC version.
- Copyright (C) 2012-2016 Free Software Foundation, Inc.
+ Copyright (C) 2012-2018 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
diff --git a/sysdeps/hppa/fpu/fraiseexcpt.c b/sysdeps/hppa/fpu/fraiseexcpt.c
index b6cc6a1017..5fffad4f27 100644
--- a/sysdeps/hppa/fpu/fraiseexcpt.c
+++ b/sysdeps/hppa/fpu/fraiseexcpt.c
@@ -1,5 +1,5 @@
/* Raise given exceptions.
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>
diff --git a/sysdeps/hppa/fpu/fsetexcptflg.c b/sysdeps/hppa/fpu/fsetexcptflg.c
index 58350d1a89..0fdd56a40c 100644
--- a/sysdeps/hppa/fpu/fsetexcptflg.c
+++ b/sysdeps/hppa/fpu/fsetexcptflg.c
@@ -1,5 +1,5 @@
/* Set floating-point environment exception handling.
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/fpu/ftestexcept.c b/sysdeps/hppa/fpu/ftestexcept.c
index ae5b66b50a..fd6548e58d 100644
--- a/sysdeps/hppa/fpu/ftestexcept.c
+++ b/sysdeps/hppa/fpu/ftestexcept.c
@@ -1,5 +1,5 @@
/* Test exception in current environment.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
diff --git a/sysdeps/hppa/fpu/libm-test-ulps b/sysdeps/hppa/fpu/libm-test-ulps
index 3f1f2fa414..d0c4dea001 100644
--- a/sysdeps/hppa/fpu/libm-test-ulps
+++ b/sysdeps/hppa/fpu/libm-test-ulps
@@ -1,6 +1,10 @@
# Begin of automatic generation
# Maximal error of functions:
+Function: "acos":
+float: 1
+ifloat: 1
+
Function: "acos_downward":
double: 1
float: 1
@@ -15,30 +19,36 @@ ifloat: 1
Function: "acos_upward":
double: 1
-idouble: 1
-
-Function: "acosh":
-double: 1
float: 1
idouble: 1
ifloat: 1
+Function: "acosh":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+
Function: "acosh_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
Function: "acosh_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
Function: "acosh_upward":
-double: 1
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+
+Function: "asin":
float: 1
-idouble: 1
ifloat: 1
Function: "asin_downward":
@@ -66,10 +76,10 @@ idouble: 1
ifloat: 1
Function: "asinh_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
Function: "asinh_towardzero":
double: 2
@@ -78,9 +88,13 @@ idouble: 2
ifloat: 2
Function: "asinh_upward":
-double: 2
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+
+Function: "atan":
float: 1
-idouble: 2
ifloat: 1
Function: "atan2":
@@ -107,9 +121,9 @@ ifloat: 2
Function: "atan_downward":
double: 1
-float: 1
+float: 2
idouble: 1
-ifloat: 1
+ifloat: 2
Function: "atan_towardzero":
double: 1
@@ -119,33 +133,49 @@ ifloat: 1
Function: "atan_upward":
double: 1
-float: 1
+float: 2
idouble: 1
-ifloat: 1
+ifloat: 2
Function: "atanh":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+
+Function: "atanh_downward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+
+Function: "atanh_towardzero":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+
+Function: "atanh_upward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+
+Function: "cabs":
double: 1
-float: 1
idouble: 1
-ifloat: 1
-Function: "atanh_downward":
+Function: "cabs_downward":
double: 1
-float: 1
idouble: 1
-ifloat: 1
-Function: "atanh_towardzero":
+Function: "cabs_towardzero":
double: 1
-float: 1
idouble: 1
-ifloat: 1
-Function: "atanh_upward":
+Function: "cabs_upward":
double: 1
-float: 1
idouble: 1
-ifloat: 1
Function: Real part of "cacos":
double: 1
@@ -154,15 +184,15 @@ idouble: 1
ifloat: 2
Function: Imaginary part of "cacos":
-double: 1
+double: 2
float: 2
-idouble: 1
+idouble: 2
ifloat: 2
Function: Real part of "cacos_downward":
-double: 1
+double: 3
float: 2
-idouble: 1
+idouble: 3
ifloat: 2
Function: Imaginary part of "cacos_downward":
@@ -172,9 +202,9 @@ idouble: 5
ifloat: 3
Function: Real part of "cacos_towardzero":
-double: 1
+double: 3
float: 2
-idouble: 1
+idouble: 3
ifloat: 2
Function: Imaginary part of "cacos_towardzero":
@@ -190,15 +220,15 @@ idouble: 2
ifloat: 2
Function: Imaginary part of "cacos_upward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
+double: 5
+float: 7
+idouble: 5
+ifloat: 7
Function: Real part of "cacosh":
-double: 1
+double: 2
float: 2
-idouble: 1
+idouble: 2
ifloat: 2
Function: Imaginary part of "cacosh":
@@ -214,10 +244,10 @@ idouble: 5
ifloat: 3
Function: Imaginary part of "cacosh_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
Function: Real part of "cacosh_towardzero":
double: 5
@@ -226,9 +256,9 @@ idouble: 5
ifloat: 3
Function: Imaginary part of "cacosh_towardzero":
-double: 1
+double: 3
float: 2
-idouble: 1
+idouble: 3
ifloat: 2
Function: Real part of "cacosh_upward":
@@ -238,11 +268,15 @@ idouble: 4
ifloat: 4
Function: Imaginary part of "cacosh_upward":
-double: 2
+double: 3
float: 2
-idouble: 2
+idouble: 3
ifloat: 2
+Function: "carg":
+float: 1
+ifloat: 1
+
Function: "carg_downward":
double: 1
float: 2
@@ -250,8 +284,10 @@ idouble: 1
ifloat: 2
Function: "carg_towardzero":
-float: 1
-ifloat: 1
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
Function: "carg_upward":
double: 1
@@ -268,16 +304,16 @@ ildouble: 1
ldouble: 1
Function: Imaginary part of "casin":
-double: 1
+double: 2
float: 2
-idouble: 1
+idouble: 2
ifloat: 2
Function: Real part of "casin_downward":
double: 3
-float: 1
+float: 2
idouble: 3
-ifloat: 1
+ifloat: 2
Function: Imaginary part of "casin_downward":
double: 5
@@ -298,16 +334,16 @@ idouble: 5
ifloat: 3
Function: Real part of "casin_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
Function: Imaginary part of "casin_upward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
+double: 5
+float: 7
+idouble: 5
+ifloat: 7
Function: Real part of "casinh":
double: 5
@@ -333,9 +369,9 @@ ifloat: 3
Function: Imaginary part of "casinh_downward":
double: 3
-float: 1
+float: 2
idouble: 3
-ifloat: 1
+ifloat: 2
Function: Real part of "casinh_towardzero":
double: 5
@@ -350,19 +386,21 @@ idouble: 3
ifloat: 1
Function: Real part of "casinh_upward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
+double: 5
+float: 7
+idouble: 5
+ifloat: 7
Function: Imaginary part of "casinh_upward":
-double: 1
+double: 3
float: 2
-idouble: 1
+idouble: 3
ifloat: 2
Function: Real part of "catan":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Function: Imaginary part of "catan":
@@ -375,9 +413,9 @@ ldouble: 1
Function: Real part of "catan_downward":
double: 1
-float: 1
+float: 2
idouble: 1
-ifloat: 1
+ifloat: 2
Function: Imaginary part of "catan_downward":
double: 2
@@ -387,15 +425,15 @@ ifloat: 2
Function: Real part of "catan_towardzero":
double: 1
-float: 1
+float: 2
idouble: 1
-ifloat: 1
+ifloat: 2
Function: Imaginary part of "catan_towardzero":
double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
+ifloat: 2
Function: Real part of "catan_upward":
double: 1
@@ -418,7 +456,9 @@ ildouble: 4
ldouble: 4
Function: Imaginary part of "catanh":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Function: Real part of "catanh_downward":
@@ -435,9 +475,9 @@ ifloat: 2
Function: Real part of "catanh_towardzero":
double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
+ifloat: 2
Function: Imaginary part of "catanh_towardzero":
double: 1
@@ -447,9 +487,9 @@ ifloat: 2
Function: Real part of "catanh_upward":
double: 4
-float: 3
+float: 4
idouble: 4
-ifloat: 3
+ifloat: 4
Function: Imaginary part of "catanh_upward":
double: 1
@@ -458,29 +498,31 @@ idouble: 1
ifloat: 1
Function: "cbrt":
-double: 1
+double: 3
float: 1
-idouble: 1
+idouble: 3
ifloat: 1
ildouble: 1
ldouble: 1
Function: "cbrt_downward":
-double: 2
+double: 4
float: 1
-idouble: 2
+idouble: 4
ifloat: 1
Function: "cbrt_towardzero":
-double: 2
-idouble: 2
-
-Function: "cbrt_upward":
double: 3
float: 1
idouble: 3
ifloat: 1
+Function: "cbrt_upward":
+double: 5
+float: 1
+idouble: 5
+ifloat: 1
+
Function: Real part of "ccos":
double: 1
float: 1
@@ -593,71 +635,107 @@ float: 2
idouble: 1
ifloat: 2
-Function: Real part of "clog":
+Function: Real part of "cexp_downward":
double: 1
-float: 1
+float: 2
idouble: 1
-ifloat: 1
+ifloat: 2
+
+Function: Imaginary part of "cexp_downward":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+
+Function: Real part of "cexp_towardzero":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+
+Function: Imaginary part of "cexp_towardzero":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+
+Function: Real part of "cexp_upward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+
+Function: Imaginary part of "cexp_upward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+
+Function: Real part of "clog":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
Function: Imaginary part of "clog":
float: 1
ifloat: 1
Function: Real part of "clog10":
+double: 3
+float: 4
+idouble: 3
+ifloat: 4
+
+Function: Imaginary part of "clog10":
double: 2
float: 2
idouble: 2
ifloat: 2
-
-Function: Imaginary part of "clog10":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
ildouble: 1
ldouble: 1
Function: Real part of "clog10_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
Function: Imaginary part of "clog10_downward":
double: 3
-float: 2
+float: 4
idouble: 3
-ifloat: 2
+ifloat: 4
Function: Real part of "clog10_towardzero":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
Function: Imaginary part of "clog10_towardzero":
double: 3
-float: 2
+float: 4
idouble: 3
-ifloat: 2
+ifloat: 4
Function: Real part of "clog10_upward":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
+double: 6
+float: 5
+idouble: 6
+ifloat: 5
Function: Imaginary part of "clog10_upward":
double: 2
-float: 2
+float: 4
idouble: 2
-ifloat: 2
+ifloat: 4
Function: Real part of "clog_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
+double: 4
+float: 3
+idouble: 4
+ifloat: 3
Function: Imaginary part of "clog_downward":
double: 1
@@ -666,22 +744,22 @@ idouble: 1
ifloat: 2
Function: Real part of "clog_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
+double: 4
+float: 4
+idouble: 4
+ifloat: 4
Function: Imaginary part of "clog_towardzero":
double: 1
-float: 2
+float: 3
idouble: 1
-ifloat: 2
+ifloat: 3
Function: Real part of "clog_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
+double: 4
+float: 3
+idouble: 4
+ifloat: 3
Function: Imaginary part of "clog_upward":
double: 2
@@ -703,10 +781,6 @@ float: 2
idouble: 1
ifloat: 2
-Function: "cos_tonearest":
-float: 1
-ifloat: 1
-
Function: "cos_towardzero":
double: 1
float: 1
@@ -731,12 +805,6 @@ float: 1
idouble: 1
ifloat: 1
-Function: "cosh_tonearest":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
Function: "cosh_towardzero":
double: 1
float: 1
@@ -751,9 +819,9 @@ ifloat: 2
Function: Real part of "cpow":
double: 2
-float: 4
+float: 5
idouble: 2
-ifloat: 4
+ifloat: 5
ildouble: 2
ldouble: 2
@@ -832,9 +900,9 @@ idouble: 2
ifloat: 2
Function: Real part of "csin_upward":
-double: 1
+double: 2
float: 3
-idouble: 1
+idouble: 2
ifloat: 3
Function: Imaginary part of "csin_upward":
@@ -856,10 +924,10 @@ ildouble: 1
ldouble: 1
Function: Real part of "csinh_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
Function: Imaginary part of "csinh_downward":
double: 2
@@ -892,52 +960,52 @@ idouble: 2
ifloat: 3
Function: Real part of "csqrt":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "csqrt":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "csqrt_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-
-Function: Imaginary part of "csqrt_downward":
double: 2
float: 2
idouble: 2
ifloat: 2
-Function: Real part of "csqrt_towardzero":
+Function: Imaginary part of "csqrt":
double: 2
float: 2
idouble: 2
ifloat: 2
+Function: Real part of "csqrt_downward":
+double: 5
+float: 4
+idouble: 5
+ifloat: 4
+
+Function: Imaginary part of "csqrt_downward":
+double: 4
+float: 3
+idouble: 4
+ifloat: 3
+
+Function: Real part of "csqrt_towardzero":
+double: 4
+float: 3
+idouble: 4
+ifloat: 3
+
Function: Imaginary part of "csqrt_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
+double: 4
+float: 3
+idouble: 4
+ifloat: 3
Function: Real part of "csqrt_upward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
+double: 5
+float: 4
+idouble: 5
+ifloat: 4
Function: Imaginary part of "csqrt_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
Function: Real part of "ctan":
double: 1
@@ -947,9 +1015,9 @@ ifloat: 1
Function: Imaginary part of "ctan":
double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
+ifloat: 2
ildouble: 1
ldouble: 1
@@ -961,21 +1029,9 @@ ifloat: 5
Function: Imaginary part of "ctan_downward":
double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: Real part of "ctan_tonearest":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "ctan_tonearest":
-double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
+ifloat: 2
Function: Real part of "ctan_towardzero":
double: 5
@@ -991,9 +1047,9 @@ ifloat: 2
Function: Real part of "ctan_upward":
double: 2
-float: 3
+float: 4
idouble: 2
-ifloat: 3
+ifloat: 4
Function: Imaginary part of "ctan_upward":
double: 2
@@ -1003,9 +1059,9 @@ ifloat: 3
Function: Real part of "ctanh":
double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
+ifloat: 2
ildouble: 1
ldouble: 1
@@ -1017,9 +1073,9 @@ ifloat: 2
Function: Real part of "ctanh_downward":
double: 4
-float: 1
+float: 2
idouble: 4
-ifloat: 1
+ifloat: 2
Function: Imaginary part of "ctanh_downward":
double: 6
@@ -1027,18 +1083,6 @@ float: 5
idouble: 6
ifloat: 5
-Function: Real part of "ctanh_tonearest":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: Imaginary part of "ctanh_tonearest":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
Function: Real part of "ctanh_towardzero":
double: 2
float: 2
@@ -1065,47 +1109,59 @@ ifloat: 3
Function: "erf":
double: 1
+float: 1
idouble: 1
+ifloat: 1
ildouble: 1
ldouble: 1
Function: "erf_downward":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Function: "erf_towardzero":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Function: "erf_upward":
-float: 1
-ifloat: 1
-
-Function: "erfc":
double: 1
float: 1
idouble: 1
ifloat: 1
+
+Function: "erfc":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
ildouble: 1
ldouble: 1
Function: "erfc_downward":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
+double: 5
+float: 6
+idouble: 5
+ifloat: 6
Function: "erfc_towardzero":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
+double: 3
+float: 4
+idouble: 3
+ifloat: 4
Function: "erfc_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
+double: 5
+float: 6
+idouble: 5
+ifloat: 6
+
+Function: "exp":
+float: 1
+ifloat: 1
Function: "exp10":
double: 6
@@ -1116,22 +1172,42 @@ ildouble: 6
ldouble: 6
Function: "exp10_downward":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+
+Function: "exp10_towardzero":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+
+Function: "exp10_upward":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+
+Function: "exp2":
double: 1
float: 1
idouble: 1
ifloat: 1
-Function: "exp10_tonearest":
+Function: "exp2_downward":
double: 1
+float: 1
idouble: 1
+ifloat: 1
-Function: "exp10_towardzero":
+Function: "exp2_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-Function: "exp10_upward":
+Function: "exp2_upward":
double: 1
float: 1
idouble: 1
@@ -1169,17 +1245,11 @@ float: 1
idouble: 1
ifloat: 1
-Function: "expm1_tonearest":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
Function: "expm1_towardzero":
double: 1
-float: 1
+float: 2
idouble: 1
-ifloat: 1
+ifloat: 2
Function: "expm1_upward":
double: 1
@@ -1188,28 +1258,28 @@ idouble: 1
ifloat: 1
Function: "gamma":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
+double: 4
+float: 4
+idouble: 4
+ifloat: 4
Function: "gamma_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
+double: 5
+float: 4
+idouble: 5
+ifloat: 4
Function: "gamma_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 5
+float: 4
+idouble: 5
+ifloat: 4
Function: "gamma_upward":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
Function: "hypot":
double: 1
@@ -1239,9 +1309,9 @@ ldouble: 2
Function: "j0_downward":
double: 2
-float: 3
+float: 4
idouble: 2
-ifloat: 3
+ifloat: 4
Function: "j0_towardzero":
double: 3
@@ -1265,9 +1335,9 @@ ldouble: 1
Function: "j1_downward":
double: 3
-float: 2
+float: 3
idouble: 3
-ifloat: 2
+ifloat: 3
Function: "j1_towardzero":
double: 3
@@ -1289,131 +1359,143 @@ ifloat: 5
ildouble: 4
ldouble: 4
+Function: "jn_downward":
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
+
+Function: "jn_towardzero":
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
+
+Function: "jn_upward":
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
+
Function: "lgamma":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
+double: 4
+float: 4
+idouble: 4
+ifloat: 4
ildouble: 1
ldouble: 1
Function: "lgamma_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
+double: 5
+float: 4
+idouble: 5
+ifloat: 4
Function: "lgamma_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 5
+float: 4
+idouble: 5
+ifloat: 4
Function: "lgamma_upward":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
Function: "log":
float: 1
ifloat: 1
Function: "log10":
-double: 1
+double: 2
float: 2
-idouble: 1
+idouble: 2
ifloat: 2
ildouble: 1
ldouble: 1
Function: "log10_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
Function: "log10_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
Function: "log10_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
Function: "log1p":
-float: 1
-ifloat: 1
-
-Function: "log1p_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
+Function: "log1p_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+
Function: "log1p_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
Function: "log1p_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "log2_downward":
double: 2
float: 2
idouble: 2
ifloat: 2
-Function: "log2_towardzero":
-double: 1
+Function: "log2":
+double: 2
float: 1
-idouble: 1
+idouble: 2
ifloat: 1
-Function: "log2_upward":
+Function: "log2_downward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+
+Function: "log2_towardzero":
double: 2
float: 2
idouble: 2
ifloat: 2
-Function: "log_downward":
-float: 1
-ifloat: 1
-
-Function: "log_upward":
-float: 1
-ifloat: 1
-
-Function: "pow":
-float: 1
-ifloat: 1
+Function: "log2_upward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
-Function: "pow10":
-double: 1
-idouble: 1
+Function: "log_downward":
+float: 2
+ifloat: 2
-Function: "pow10_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+Function: "log_towardzero":
+float: 2
+ifloat: 2
-Function: "pow10_towardzero":
+Function: "log_upward":
double: 1
-float: 1
+float: 2
idouble: 1
-ifloat: 1
+ifloat: 2
-Function: "pow10_upward":
+Function: "pow":
double: 1
float: 1
idouble: 1
@@ -1425,10 +1507,6 @@ float: 1
idouble: 1
ifloat: 1
-Function: "pow_tonearest":
-float: 1
-ifloat: 1
-
Function: "pow_towardzero":
double: 1
float: 1
@@ -1442,7 +1520,9 @@ idouble: 1
ifloat: 1
Function: "sin":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Function: "sin_downward":
@@ -1451,10 +1531,6 @@ float: 2
idouble: 1
ifloat: 2
-Function: "sin_tonearest":
-float: 1
-ifloat: 1
-
Function: "sin_towardzero":
double: 1
float: 1
@@ -1489,31 +1565,39 @@ ifloat: 1
Function: "sincos_upward":
double: 1
-float: 1
+float: 2
idouble: 1
-ifloat: 1
+ifloat: 2
+
+Function: "sinh":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
Function: "sinh_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
Function: "sinh_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
Function: "sinh_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
Function: "tan":
double: 1
+float: 1
idouble: 1
+ifloat: 1
ildouble: 1
ldouble: 1
@@ -1535,32 +1619,56 @@ float: 1
idouble: 1
ifloat: 1
+Function: "tanh":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+
Function: "tanh_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
Function: "tanh_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
Function: "tanh_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "tgamma":
-double: 4
+double: 3
float: 3
-idouble: 4
+idouble: 3
ifloat: 3
+
+Function: "tgamma":
+double: 5
+float: 4
+idouble: 5
+ifloat: 4
ildouble: 1
ldouble: 1
+Function: "tgamma_downward":
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
+
+Function: "tgamma_towardzero":
+double: 5
+float: 4
+idouble: 5
+ifloat: 4
+
+Function: "tgamma_upward":
+double: 4
+float: 4
+idouble: 4
+ifloat: 4
+
Function: "y0":
double: 2
float: 1
@@ -1571,9 +1679,9 @@ ldouble: 2
Function: "y0_downward":
double: 3
-float: 2
+float: 4
idouble: 3
-ifloat: 2
+ifloat: 4
Function: "y0_towardzero":
double: 3
@@ -1583,9 +1691,9 @@ ifloat: 3
Function: "y0_upward":
double: 3
-float: 4
+float: 5
idouble: 3
-ifloat: 4
+ifloat: 5
Function: "y1":
double: 3
@@ -1615,17 +1723,17 @@ ifloat: 2
Function: "yn":
double: 3
-float: 2
+float: 3
idouble: 3
-ifloat: 2
+ifloat: 3
ildouble: 3
ldouble: 3
Function: "yn_downward":
double: 3
-float: 2
+float: 4
idouble: 3
-ifloat: 2
+ifloat: 4
Function: "yn_towardzero":
double: 3
@@ -1635,8 +1743,8 @@ ifloat: 3
Function: "yn_upward":
double: 4
-float: 4
+float: 5
idouble: 4
-ifloat: 4
+ifloat: 5
# end of automatic generation
diff --git a/sysdeps/hppa/fpu/libm-test-ulps-name b/sysdeps/hppa/fpu/libm-test-ulps-name
new file mode 100644
index 0000000000..808d1bc741
--- /dev/null
+++ b/sysdeps/hppa/fpu/libm-test-ulps-name
@@ -0,0 +1 @@
+HPPA
diff --git a/sysdeps/hppa/gccframe.h b/sysdeps/hppa/gccframe.h
index 18cd40b172..4b8ec5cd9f 100644
--- a/sysdeps/hppa/gccframe.h
+++ b/sysdeps/hppa/gccframe.h
@@ -1,5 +1,5 @@
/* Definition of object in frame unwind info. hppa version.
- Copyright (C) 2001-2016 Free Software Foundation, Inc.
+ Copyright (C) 2001-2018 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
diff --git a/sysdeps/hppa/get-rounding-mode.h b/sysdeps/hppa/get-rounding-mode.h
index 6f189fc023..7e1d03b3f7 100644
--- a/sysdeps/hppa/get-rounding-mode.h
+++ b/sysdeps/hppa/get-rounding-mode.h
@@ -1,5 +1,5 @@
/* Determine floating-point rounding mode within libc. HP-PARISC version.
- Copyright (C) 2012-2016 Free Software Foundation, Inc.
+ Copyright (C) 2012-2018 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
diff --git a/sysdeps/hppa/hppa1.1/addmul_1.S b/sysdeps/hppa/hppa1.1/addmul_1.S
index 72a794aeb9..3dec0253bf 100644
--- a/sysdeps/hppa/hppa1.1/addmul_1.S
+++ b/sysdeps/hppa/hppa1.1/addmul_1.S
@@ -1,7 +1,7 @@
;! HP-PA-1.1 __mpn_addmul_1 -- Multiply a limb vector with a limb and
;! add the result to a second limb vector.
-;! Copyright (C) 1992-2016 Free Software Foundation, Inc.
+;! Copyright (C) 1992-2018 Free Software Foundation, Inc.
;! This file is part of the GNU MP Library.
diff --git a/sysdeps/hppa/hppa1.1/mul_1.S b/sysdeps/hppa/hppa1.1/mul_1.S
index 7d80056885..fcafd74002 100644
--- a/sysdeps/hppa/hppa1.1/mul_1.S
+++ b/sysdeps/hppa/hppa1.1/mul_1.S
@@ -1,7 +1,7 @@
;! HP-PA-1.1 __mpn_mul_1 -- Multiply a limb vector with a limb and store
;! the result in a second limb vector.
-;! Copyright (C) 1992-2016 Free Software Foundation, Inc.
+;! Copyright (C) 1992-2018 Free Software Foundation, Inc.
;! This file is part of the GNU MP Library.
diff --git a/sysdeps/hppa/hppa1.1/s_signbit.c b/sysdeps/hppa/hppa1.1/s_signbit.c
index 8ec4c77079..6139c5a6fd 100644
--- a/sysdeps/hppa/hppa1.1/s_signbit.c
+++ b/sysdeps/hppa/hppa1.1/s_signbit.c
@@ -1,5 +1,5 @@
/* Return nonzero value if number is negative.
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/hppa/hppa1.1/submul_1.S b/sysdeps/hppa/hppa1.1/submul_1.S
index d047ce98ad..cfcf2db85a 100644
--- a/sysdeps/hppa/hppa1.1/submul_1.S
+++ b/sysdeps/hppa/hppa1.1/submul_1.S
@@ -1,7 +1,7 @@
;! HP-PA-1.1 __mpn_submul_1 -- Multiply a limb vector with a limb and
;! subtract the result from a second limb vector.
-;! Copyright (C) 1992-2016 Free Software Foundation, Inc.
+;! Copyright (C) 1992-2018 Free Software Foundation, Inc.
;! This file is part of the GNU MP Library.
diff --git a/sysdeps/hppa/hppa1.1/udiv_qrnnd.S b/sysdeps/hppa/hppa1.1/udiv_qrnnd.S
index 4f7117f8b0..74069f7ace 100644
--- a/sysdeps/hppa/hppa1.1/udiv_qrnnd.S
+++ b/sysdeps/hppa/hppa1.1/udiv_qrnnd.S
@@ -1,7 +1,7 @@
;! HP-PA __udiv_qrnnd division support, used from longlong.h.
;! This version runs fast on PA 7000 and later.
-;! Copyright (C) 1993-2016 Free Software Foundation, Inc.
+;! Copyright (C) 1993-2018 Free Software Foundation, Inc.
;! This file is part of the GNU MP Library.
diff --git a/sysdeps/hppa/jmpbuf-offsets.h b/sysdeps/hppa/jmpbuf-offsets.h
index fd2b341452..b01f47453f 100644
--- a/sysdeps/hppa/jmpbuf-offsets.h
+++ b/sysdeps/hppa/jmpbuf-offsets.h
@@ -1,5 +1,5 @@
/* Private macros for accessing __jmp_buf contents. HPPA version.
- Copyright (C) 2006-2016 Free Software Foundation, Inc.
+ Copyright (C) 2006-2018 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
diff --git a/sysdeps/hppa/jmpbuf-unwind.h b/sysdeps/hppa/jmpbuf-unwind.h
index d5723803fd..9e38981389 100644
--- a/sysdeps/hppa/jmpbuf-unwind.h
+++ b/sysdeps/hppa/jmpbuf-unwind.h
@@ -1,5 +1,5 @@
/* Examine __jmp_buf for unwinding frames. HPPA version.
- Copyright (C) 2006-2016 Free Software Foundation, Inc.
+ Copyright (C) 2006-2018 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
diff --git a/sysdeps/hppa/ldsodefs.h b/sysdeps/hppa/ldsodefs.h
index b120a218bc..292fdbef4e 100644
--- a/sysdeps/hppa/ldsodefs.h
+++ b/sysdeps/hppa/ldsodefs.h
@@ -1,5 +1,5 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 2006-2016 Free Software Foundation, Inc.
+ Copyright (C) 2006-2018 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
diff --git a/sysdeps/hppa/libc-tls.c b/sysdeps/hppa/libc-tls.c
index b58bd04c35..9e9aa94903 100644
--- a/sysdeps/hppa/libc-tls.c
+++ b/sysdeps/hppa/libc-tls.c
@@ -1,5 +1,5 @@
/* Thread-local storage handling in the ELF dynamic linker. hppa version.
- Copyright (C) 2003-2016 Free Software Foundation, Inc.
+ Copyright (C) 2003-2018 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
diff --git a/sysdeps/hppa/libgcc-compat.c b/sysdeps/hppa/libgcc-compat.c
index 077261072f..1438a8e0f0 100644
--- a/sysdeps/hppa/libgcc-compat.c
+++ b/sysdeps/hppa/libgcc-compat.c
@@ -1,5 +1,5 @@
/* pre-.hidden libgcc compatibility
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Randolph Chung
diff --git a/sysdeps/hppa/lshift.S b/sysdeps/hppa/lshift.S
index 7a795e29e1..ab23dd0ee8 100644
--- a/sysdeps/hppa/lshift.S
+++ b/sysdeps/hppa/lshift.S
@@ -1,6 +1,6 @@
;! HP-PA __mpn_lshift --
-;! Copyright (C) 1992-2016 Free Software Foundation, Inc.
+;! Copyright (C) 1992-2018 Free Software Foundation, Inc.
;! This file is part of the GNU MP Library.
diff --git a/sysdeps/hppa/machine-gmon.h b/sysdeps/hppa/machine-gmon.h
index 6afa4197e8..08b3c3a6b9 100644
--- a/sysdeps/hppa/machine-gmon.h
+++ b/sysdeps/hppa/machine-gmon.h
@@ -1,5 +1,5 @@
/* Machine-specific calling sequence for `mcount' profiling function. PA-RISC
- Copyright (C) 1995-2016 Free Software Foundation, Inc.
+ Copyright (C) 1995-2018 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
diff --git a/sysdeps/hppa/math_private.h b/sysdeps/hppa/math-tests.h
index 1acfb9ae4a..2fb3a55899 100644
--- a/sysdeps/hppa/math_private.h
+++ b/sysdeps/hppa/math-tests.h
@@ -1,5 +1,5 @@
-/* Internal math stuff. HPPA version.
- Copyright (C) 2013-2016 Free Software Foundation, Inc.
+/* Configuration for math tests. hppa version.
+ Copyright (C) 2017-2018 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
@@ -16,13 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef HPPA_MATH_PRIVATE_H
-#define HPPA_MATH_PRIVATE_H 1
+/* SNaN tests do not preserve payloads. */
+#define SNAN_TESTS_PRESERVE_PAYLOAD 0
-/* One of the few architectures where the meaning of the quiet/signaling bit is
- inverse to IEEE 754-2008 (as well as common practice for IEEE 754-1985). */
-#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN
-
-#include_next <math_private.h>
-
-#endif
+#include_next <math-tests.h>
diff --git a/sysdeps/hppa/memusage.h b/sysdeps/hppa/memusage.h
index ffb923ad37..b82e665614 100644
--- a/sysdeps/hppa/memusage.h
+++ b/sysdeps/hppa/memusage.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 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
diff --git a/sysdeps/hppa/nan-high-order-bit.h b/sysdeps/hppa/nan-high-order-bit.h
new file mode 100644
index 0000000000..fa2ea53aa9
--- /dev/null
+++ b/sysdeps/hppa/nan-high-order-bit.h
@@ -0,0 +1,27 @@
+/* Specify NaN high-order bit conventions. HPPA version.
+ Copyright (C) 2016-2018 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
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef NAN_HIGH_ORDER_BIT_H
+#define NAN_HIGH_ORDER_BIT_H 1
+
+/* One of the few architectures where the meaning of the
+ quiet/signaling bit is inverse to IEEE 754-2008 (as well as common
+ practice for IEEE 754-1985). */
+#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN 1
+
+#endif /* nan-high-order-bit.h */
diff --git a/sysdeps/hppa/nptl/Makefile b/sysdeps/hppa/nptl/Makefile
index 2dea713081..cac490cfd5 100644
--- a/sysdeps/hppa/nptl/Makefile
+++ b/sysdeps/hppa/nptl/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2016 Free Software Foundation, Inc.
+# Copyright (C) 2005-2018 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
diff --git a/sysdeps/hppa/nptl/bits/pthreadtypes-arch.h b/sysdeps/hppa/nptl/bits/pthreadtypes-arch.h
new file mode 100644
index 0000000000..9af995716e
--- /dev/null
+++ b/sysdeps/hppa/nptl/bits/pthreadtypes-arch.h
@@ -0,0 +1,91 @@
+/* Copyright (C) 2005-2018 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
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _BITS_PTHREADTYPES_ARCH_H
+#define _BITS_PTHREADTYPES_ARCH_H 1
+
+/* Linuxthread type sizes (bytes):
+ sizeof(pthread_attr_t) = 0x24 (36)
+ sizeof(pthread_barrier_t) = 0x30 (48)
+ sizeof(pthread_barrierattr_t) = 0x4 (4)
+ sizeof(pthread_cond_t) = 0x30 (48)
+ sizeof(pthread_condattr_t) = 0x4 (4)
+ sizeof(pthread_mutex_t) = 0x30 (48)
+ sizeof(pthread_mutexattr_t) = 0x4 (4)
+ sizeof(pthread_rwlock_t) = 0x40 (64)
+ sizeof(pthread_rwlockattr_t) = 0x8 (8)
+ sizeof(pthread_spinlock_t) = 0x10 (16) */
+
+#define __SIZEOF_PTHREAD_ATTR_T 36
+#define __SIZEOF_PTHREAD_MUTEX_T 48
+#define __SIZEOF_PTHREAD_BARRIER_T 48
+#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
+#define __SIZEOF_PTHREAD_COND_T 48
+#define __SIZEOF_PTHREAD_CONDATTR_T 4
+#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
+#define __SIZEOF_PTHREAD_RWLOCK_T 64
+#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
+
+/* The old 4-word 16-byte aligned lock. This is initalized
+ to all ones by the Linuxthreads PTHREAD_MUTEX_INITIALIZER.
+ Unused in NPTL. */
+#define __PTHREAD_COMPAT_PADDING_MID int __compat_padding[4];
+/* Two more words are left before the NPTL
+ pthread_mutex_t is larger than Linuxthreads. */
+#define __PTHREAD_COMPAT_PADDING_END int __reserved[2];
+#define __PTHREAD_MUTEX_LOCK_ELISION 0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND 1
+#define __PTHREAD_MUTEX_USE_UNION 1
+
+#define __LOCK_ALIGNMENT __attribute__ ((__aligned__(16)))
+#define __ONCE_ALIGNMENT
+
+struct __pthread_rwlock_arch_t
+{
+ /* In the old Linuxthreads pthread_rwlock_t, this is the
+ start of the 4-word 16-byte aligned lock structure. The
+ next four words are all set to 1 by the Linuxthreads
+ PTHREAD_RWLOCK_INITIALIZER. We ignore them in NPTL. */
+ int __compat_padding[4] __attribute__ ((__aligned__(16)));
+ unsigned int __readers;
+ unsigned int __writers;
+ unsigned int __wrphase_futex;
+ unsigned int __writers_futex;
+ unsigned int __pad3;
+ unsigned int __pad4;
+ int __cur_writer;
+ /* An unused word, reserved for future use. It was added
+ to maintain the location of the flags from the Linuxthreads
+ layout of this structure. */
+ int __reserved1;
+ /* FLAGS must stay at this position in the structure to maintain
+ binary compatibility. */
+ unsigned char __pad2;
+ unsigned char __pad1;
+ unsigned char __shared;
+ unsigned char __flags;
+ /* The NPTL pthread_rwlock_t is 4 words smaller than the
+ Linuxthreads version. One word is in the middle of the
+ structure, the other three are at the end. */
+ int __reserved2;
+ int __reserved3;
+ int __reserved4;
+};
+
+#define __PTHREAD_RWLOCK_ELISION_EXTRA 0
+
+#endif /* bits/pthreadtypes.h */
diff --git a/sysdeps/hppa/nptl/bits/pthreadtypes.h b/sysdeps/hppa/nptl/bits/pthreadtypes.h
deleted file mode 100644
index 540802a70c..0000000000
--- a/sysdeps/hppa/nptl/bits/pthreadtypes.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/* Copyright (C) 2005-2016 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
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _BITS_PTHREADTYPES_H
-#define _BITS_PTHREADTYPES_H 1
-
-/* Linuxthread type sizes (bytes):
- sizeof(pthread_attr_t) = 0x24 (36)
- sizeof(pthread_barrier_t) = 0x30 (48)
- sizeof(pthread_barrierattr_t) = 0x4 (4)
- sizeof(pthread_cond_t) = 0x30 (48)
- sizeof(pthread_condattr_t) = 0x4 (4)
- sizeof(pthread_mutex_t) = 0x30 (48)
- sizeof(pthread_mutexattr_t) = 0x4 (4)
- sizeof(pthread_rwlock_t) = 0x40 (64)
- sizeof(pthread_rwlockattr_t) = 0x8 (8)
- sizeof(pthread_spinlock_t) = 0x10 (16) */
-
-#define __SIZEOF_PTHREAD_ATTR_T 36
-#define __SIZEOF_PTHREAD_BARRIER_T 48
-#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-#define __SIZEOF_PTHREAD_COND_T 48
-#define __SIZEOF_PTHREAD_CONDATTR_T 4
-#define __SIZEOF_PTHREAD_MUTEX_T 48
-#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-#define __SIZEOF_PTHREAD_RWLOCK_T 64
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-
-/* Thread identifiers. The structure of the attribute type is not
- exposed on purpose. */
-typedef unsigned long int pthread_t;
-
-union pthread_attr_t
-{
- char __size[__SIZEOF_PTHREAD_ATTR_T];
- long int __align;
-};
-#ifndef __have_pthread_attr_t
-typedef union pthread_attr_t pthread_attr_t;
-# define __have_pthread_attr_t 1
-#endif
-
-
-typedef struct __pthread_internal_slist
-{
- struct __pthread_internal_slist *__next;
-} __pthread_slist_t;
-
-
-/* Data structures for mutex handling. The structure of the attribute
- type is not exposed on purpose. */
-typedef union
-{
- struct __pthread_mutex_s
- {
- int __lock __attribute__ ((__aligned__(16)));
- unsigned int __count;
- int __owner;
- /* KIND must stay at this position in the structure to maintain
- binary compatibility. */
- int __kind;
- /* The old 4-word 16-byte aligned lock. This is initalized
- to all ones by the Linuxthreads PTHREAD_MUTEX_INITIALIZER.
- Unused in NPTL. */
- int __compat_padding[4];
- /* In the old structure there are 4 words left due to alignment.
- In NPTL two words are used. */
- unsigned int __nusers;
- __extension__ union
- {
- int __spins;
- __pthread_slist_t __list;
- };
- /* Two more words are left before the NPTL
- pthread_mutex_t is larger than Linuxthreads. */
- int __reserved1;
- int __reserved2;
- } __data;
- char __size[__SIZEOF_PTHREAD_MUTEX_T];
- long int __align;
-} pthread_mutex_t;
-
-/* Mutex __spins initializer used by PTHREAD_MUTEX_INITIALIZER. */
-#define __PTHREAD_SPINS 0
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
- long int __align;
-} pthread_mutexattr_t;
-
-
-/* Data structure for conditional variable handling. The structure of
- the attribute type is not exposed on purpose. However, this structure
- is exposed via PTHREAD_COND_INITIALIZER, and because of this, the
- Linuxthreads version sets the first four ints to one. In the NPTL
- version we must check, in every function using pthread_cond_t,
- for the static Linuxthreads initializer and clear the appropriate
- words. */
-typedef union
-{
- struct
- {
- /* In the old Linuxthreads pthread_cond_t, this is the
- start of the 4-word lock structure, the next four words
- are set all to 1 by the Linuxthreads
- PTHREAD_COND_INITIALIZER. */
- int __lock __attribute__ ((__aligned__(16)));
- /* Tracks the initialization of this structure:
- 0 initialized with NPTL PTHREAD_COND_INITIALIZER.
- 1 initialized with Linuxthreads PTHREAD_COND_INITIALIZER.
- 2 initialization in progress. */
- int __initializer;
- unsigned int __futex;
- void *__mutex;
- /* In the old Linuxthreads this would have been the start
- of the pthread_fastlock status word. */
- __extension__ unsigned long long int __total_seq;
- __extension__ unsigned long long int __wakeup_seq;
- __extension__ unsigned long long int __woken_seq;
- unsigned int __nwaiters;
- unsigned int __broadcast_seq;
- /* The NPTL pthread_cond_t is exactly the same size as
- the Linuxthreads version, there are no words to spare. */
- } __data;
- char __size[__SIZEOF_PTHREAD_COND_T];
- __extension__ long long int __align;
-} pthread_cond_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_CONDATTR_T];
- long int __align;
-} pthread_condattr_t;
-
-
-/* Keys for thread-specific data */
-typedef unsigned int pthread_key_t;
-
-
-/* Once-only execution */
-typedef int pthread_once_t;
-
-
-#if defined __USE_UNIX98 || defined __USE_XOPEN2K
-/* Data structure for read-write lock variable handling. The
- structure of the attribute type is not exposed on purpose. */
-typedef union
-{
- struct
- {
- /* In the old Linuxthreads pthread_rwlock_t, this is the
- start of the 4-word 16-byte aligned lock structure. The
- next four words are all set to 1 by the Linuxthreads
- PTHREAD_RWLOCK_INITIALIZER. We ignore them in NPTL. */
- int __compat_padding[4] __attribute__ ((__aligned__(16)));
- int __lock;
- unsigned int __nr_readers;
- unsigned int __readers_wakeup;
- unsigned int __writer_wakeup;
- unsigned int __nr_readers_queued;
- unsigned int __nr_writers_queued;
- int __writer;
- /* An unused word, reserved for future use. It was added
- to maintain the location of the flags from the Linuxthreads
- layout of this structure. */
- int __reserved1;
- /* FLAGS must stay at this position in the structure to maintain
- binary compatibility. */
- unsigned char __pad2;
- unsigned char __pad1;
- unsigned char __shared;
- unsigned char __flags;
- /* The NPTL pthread_rwlock_t is 4 words smaller than the
- Linuxthreads version. One word is in the middle of the
- structure, the other three are at the end. */
- int __reserved2;
- int __reserved3;
- int __reserved4;
- } __data;
- char __size[__SIZEOF_PTHREAD_RWLOCK_T];
- long int __align;
-} pthread_rwlock_t;
-
-#define __PTHREAD_RWLOCK_ELISION_EXTRA 0
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T];
- long int __align;
-} pthread_rwlockattr_t;
-#endif
-
-
-#ifdef __USE_XOPEN2K
-/* POSIX spinlock data type. */
-typedef volatile int pthread_spinlock_t;
-
-
-/* POSIX barriers data type. The structure of the type is
- deliberately not exposed. */
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_BARRIER_T];
- long int __align;
-} pthread_barrier_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_BARRIERATTR_T];
- int __align;
-} pthread_barrierattr_t;
-#endif
-
-
-#endif /* bits/pthreadtypes.h */
diff --git a/sysdeps/hppa/nptl/bits/semaphore.h b/sysdeps/hppa/nptl/bits/semaphore.h
index 4cdac957fb..e6f75bf49b 100644
--- a/sysdeps/hppa/nptl/bits/semaphore.h
+++ b/sysdeps/hppa/nptl/bits/semaphore.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2018 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
diff --git a/sysdeps/hppa/nptl/jmpbuf-unwind.h b/sysdeps/hppa/nptl/jmpbuf-unwind.h
index 27c4f6f116..6ee404fd6f 100644
--- a/sysdeps/hppa/nptl/jmpbuf-unwind.h
+++ b/sysdeps/hppa/nptl/jmpbuf-unwind.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2018 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
diff --git a/sysdeps/hppa/nptl/pthread-offsets.h b/sysdeps/hppa/nptl/pthread-offsets.h
new file mode 100644
index 0000000000..8ae01b9d95
--- /dev/null
+++ b/sysdeps/hppa/nptl/pthread-offsets.h
@@ -0,0 +1,5 @@
+#define __PTHREAD_MUTEX_NUSERS_OFFSET 32
+#define __PTHREAD_MUTEX_KIND_OFFSET 12
+#define __PTHREAD_MUTEX_SPINS_OFFSET 36
+#define __PTHREAD_MUTEX_ELISION_OFFSET 22
+#define __PTHREAD_MUTEX_LIST_OFFSET 36
diff --git a/sysdeps/hppa/nptl/pthread_spin_init.c b/sysdeps/hppa/nptl/pthread_spin_init.c
index 2df0376d8b..eaf07bd717 100644
--- a/sysdeps/hppa/nptl/pthread_spin_init.c
+++ b/sysdeps/hppa/nptl/pthread_spin_init.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2018 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
diff --git a/sysdeps/hppa/nptl/pthread_spin_unlock.c b/sysdeps/hppa/nptl/pthread_spin_unlock.c
index 6e4d71ecf1..1581247330 100644
--- a/sysdeps/hppa/nptl/pthread_spin_unlock.c
+++ b/sysdeps/hppa/nptl/pthread_spin_unlock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2018 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
diff --git a/sysdeps/hppa/nptl/pthreaddef.h b/sysdeps/hppa/nptl/pthreaddef.h
index fa1ab4c697..cdb55687f5 100644
--- a/sysdeps/hppa/nptl/pthreaddef.h
+++ b/sysdeps/hppa/nptl/pthreaddef.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2018 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
diff --git a/sysdeps/hppa/nptl/tcb-offsets.sym b/sysdeps/hppa/nptl/tcb-offsets.sym
index c2f326ee3d..6e852f35b1 100644
--- a/sysdeps/hppa/nptl/tcb-offsets.sym
+++ b/sysdeps/hppa/nptl/tcb-offsets.sym
@@ -3,7 +3,6 @@
RESULT offsetof (struct pthread, result)
TID offsetof (struct pthread, tid)
-PID offsetof (struct pthread, pid)
CANCELHANDLING offsetof (struct pthread, cancelhandling)
CLEANUP_JMP_BUF offsetof (struct pthread, cleanup_jmp_buf)
MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads)
@@ -14,6 +13,5 @@ MUTEX_FUTEX offsetof (pthread_mutex_t, __data.__lock)
-- This way we get the offset of a member in the struct pthread that
-- preceeds the thread pointer (which points to the dtv).
#define thread_offsetof(mem) (unsigned int)(offsetof(struct pthread, mem) - sizeof(struct pthread))
-PID_THREAD_OFFSET thread_offsetof (pid)
TID_THREAD_OFFSET thread_offsetof (tid)
MULTIPLE_THREADS_THREAD_OFFSET thread_offsetof (header.multiple_threads)
diff --git a/sysdeps/hppa/nptl/tls.h b/sysdeps/hppa/nptl/tls.h
index 2e0c861e09..2b94e346c1 100644
--- a/sysdeps/hppa/nptl/tls.h
+++ b/sysdeps/hppa/nptl/tls.h
@@ -1,5 +1,5 @@
/* Definition for thread-local data handling. NPTL/hppa version.
- Copyright (C) 2005-2016 Free Software Foundation, Inc.
+ Copyright (C) 2005-2018 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
@@ -25,17 +25,7 @@
# include <stdbool.h>
# include <stddef.h>
# include <stdint.h>
-
-/* Type for the dtv. */
-typedef union dtv
-{
- size_t counter;
- struct
- {
- void *val;
- bool is_static;
- } pointer;
-} dtv_t;
+# include <dl-dtv.h>
#else /* __ASSEMBLER__ */
# include <tcb-offsets.h>
@@ -144,6 +134,7 @@ static inline void __set_cr27(struct pthread *cr27)
}
/* Get and set the global scope generation counter in struct pthread. */
+#define THREAD_GSCOPE_IN_TCB 1
#define THREAD_GSCOPE_FLAG_UNUSED 0
#define THREAD_GSCOPE_FLAG_USED 1
#define THREAD_GSCOPE_FLAG_WAIT 2
diff --git a/sysdeps/hppa/nptl/tst-oddstacklimit.c b/sysdeps/hppa/nptl/tst-oddstacklimit.c
index 7579235957..c8579dc0e2 100644
--- a/sysdeps/hppa/nptl/tst-oddstacklimit.c
+++ b/sysdeps/hppa/nptl/tst-oddstacklimit.c
@@ -1,6 +1,6 @@
/* Test NPTL with stack limit that is not a multiple of the page size.
HPPA version.
- Copyright (C) 2012-2016 Free Software Foundation, Inc.
+ Copyright (C) 2012-2018 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
diff --git a/sysdeps/hppa/rshift.S b/sysdeps/hppa/rshift.S
index 82bb4ce461..882a5c3c3a 100644
--- a/sysdeps/hppa/rshift.S
+++ b/sysdeps/hppa/rshift.S
@@ -1,6 +1,6 @@
;! HP-PA __mpn_rshift --
-;! Copyright (C) 1992-2016 Free Software Foundation, Inc.
+;! Copyright (C) 1992-2018 Free Software Foundation, Inc.
;! This file is part of the GNU MP Library.
diff --git a/sysdeps/hppa/setjmp.S b/sysdeps/hppa/setjmp.S
index cdf65146ad..941ecb1d45 100644
--- a/sysdeps/hppa/setjmp.S
+++ b/sysdeps/hppa/setjmp.S
@@ -1,5 +1,5 @@
/* setjmp for HPPA.
- Copyright (C) 1995-2016 Free Software Foundation, Inc.
+ Copyright (C) 1995-2018 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
@@ -70,3 +70,4 @@ __sigsetjmp:
b __sigjmp_save
nop
.procend
+hidden_def (__sigsetjmp)
diff --git a/sysdeps/hppa/sotruss-lib.c b/sysdeps/hppa/sotruss-lib.c
index d7fd81b637..1530b13d34 100644
--- a/sysdeps/hppa/sotruss-lib.c
+++ b/sysdeps/hppa/sotruss-lib.c
@@ -1,5 +1,5 @@
/* Override generic sotruss-lib.c to define actual functions for HP-PARISC.
- Copyright (C) 2012-2016 Free Software Foundation, Inc.
+ Copyright (C) 2012-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
diff --git a/sysdeps/hppa/stackinfo.h b/sysdeps/hppa/stackinfo.h
index fc680f323f..ae9d9f02a2 100644
--- a/sysdeps/hppa/stackinfo.h
+++ b/sysdeps/hppa/stackinfo.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2018 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
diff --git a/sysdeps/hppa/start.S b/sysdeps/hppa/start.S
index 90d4331f5a..c1d2bd4bb7 100644
--- a/sysdeps/hppa/start.S
+++ b/sysdeps/hppa/start.S
@@ -1,5 +1,5 @@
/* ELF startup code for HPPA.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
@@ -42,7 +42,7 @@
/* Have the linker create plabel words so we get PLABEL32
relocs and not 21/14. The use of 21/14 relocs is only
supported in the latest dynamic linker. */
-#ifdef SHARED
+#ifdef PIC
.section .data.rel.ro,"aw",@progbits
#else
.section .rodata,"a",@progbits
@@ -56,10 +56,6 @@
.word P%__libc_csu_fini
.Lp__libc_csu_init:
.word P%__libc_csu_init
-#ifdef SHARED
-.Lp__global:
- .word $global$
-#endif
.text
.align 4
@@ -99,9 +95,15 @@ _start:
/* argc and argv should be in 25 and 24 (2nd and 3rd argument) */
/* void (*rtld_fini) (void) (6th argument) */
stw %r23, -56(%sp)
+
/* Need to setup 1, 4, 5, and 7th arguments */
-#ifdef SHARED
+#ifdef PIC
+ /* Load $global$ address into %dp */
+ bl .+8, %dp
+ addil L'$global$-$PIC_pcrel$0+1, %dp
+ ldo R'$global$-$PIC_pcrel$0+5(%r1), %dp
+
/* load main (1st argument) */
addil LT'.Lpmain, %r19
ldw RT'.Lpmain(%r1), %r26
@@ -115,6 +117,10 @@ _start:
ldw RT'.Lp__libc_csu_fini(%r1), %r22
ldw 0(%r22), %r22
#else
+ /* Load $global$ address into %dp */
+ ldil L%$global$, %dp
+ ldo R%$global$(%dp), %dp
+
/* load main (1st argument) */
ldil LR'.Lpmain, %r26
ldw RR'.Lpmain(%r26), %r26
@@ -129,15 +135,6 @@ _start:
stw %r22, -52(%sp)
/* void *stack_end (7th argument) */
stw %sp, -60(%sp)
-
-#ifdef SHARED
- addil LT'.Lp__global, %r19
- ldw RT'.Lp__global(%r1), %dp
-#else
- /* load global */
- ldil L%$global$, %dp
- ldo R%$global$(%dp), %dp
-#endif
bl __libc_start_main,%r2
nop
/* die horribly if it returned (it shouldn't) */
diff --git a/sysdeps/hppa/sub_n.S b/sysdeps/hppa/sub_n.S
index 998e885c4c..d42001e798 100644
--- a/sysdeps/hppa/sub_n.S
+++ b/sysdeps/hppa/sub_n.S
@@ -1,7 +1,7 @@
;! HP-PA __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
;! store difference in a third limb vector.
-;! Copyright (C) 1992-2016 Free Software Foundation, Inc.
+;! Copyright (C) 1992-2018 Free Software Foundation, Inc.
;! This file is part of the GNU MP Library.
diff --git a/sysdeps/hppa/sysdep.h b/sysdeps/hppa/sysdep.h
index 46c22c41d4..4b139228a1 100644
--- a/sysdeps/hppa/sysdep.h
+++ b/sysdeps/hppa/sysdep.h
@@ -1,5 +1,5 @@
/* Assembler macros for HP/PA.
- Copyright (C) 1999-2016 Free Software Foundation, Inc.
+ Copyright (C) 1999-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@cygnus.com>, August 1999.
diff --git a/sysdeps/hppa/tst-audit.h b/sysdeps/hppa/tst-audit.h
index 88eb06fd97..4ba373448c 100644
--- a/sysdeps/hppa/tst-audit.h
+++ b/sysdeps/hppa/tst-audit.h
@@ -1,6 +1,6 @@
/* Definitions for testing PLT entry/exit auditing. HP-PARISC version.
- Copyright (C) 2006-2016 Free Software Foundation, Inc.
+ Copyright (C) 2006-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
diff --git a/sysdeps/hppa/udiv_qrnnd.S b/sysdeps/hppa/udiv_qrnnd.S
index e26e1fb61e..e7e850b98a 100644
--- a/sysdeps/hppa/udiv_qrnnd.S
+++ b/sysdeps/hppa/udiv_qrnnd.S
@@ -1,7 +1,7 @@
;! HP-PA __udiv_qrnnd division support, used from longlong.h.
;! This version runs fast on pre-PA7000 CPUs.
-;! Copyright (C) 1993-2016 Free Software Foundation, Inc.
+;! Copyright (C) 1993-2018 Free Software Foundation, Inc.
;! This file is part of the GNU MP Library.