Commit Graph

261 Commits

Author SHA1 Message Date
David S. Miller
8d6bb57c44 Fix build on pre-v9 32-bit Sparc.
We cannot use fnegd in this code, as fnegd was added in v9.
Only fnegs exists in v8 and earlier.

	[BZ #15985]
	* sysdeps/sparc/sparc32/fpu/s_fdim.S (__fdim): Do not use fnegd
	on pre-v9 cpus, use a fnegs+fmovs sequence instead.
2013-11-06 13:23:36 -08:00
Joseph Myers
2ae21ed2d2 soft-fp: fix negation NaN handling (bug 16034). 2013-10-10 11:38:56 +00:00
Carlos O'Donell
c61b4d41c9 BZ #15754: CVE-2013-4788
The pointer guard used for pointer mangling was not initialized for
static applications resulting in the security feature being disabled.
The pointer guard is now correctly initialized to a random value for
static applications. Existing static applications need to be
recompiled to take advantage of the fix.

The test tst-ptrguard1-static and tst-ptrguard1 add regression
coverage to ensure the pointer guards are sufficiently random
and initialized to a default value.
2013-09-23 00:52:09 -04:00
Ondrej Bilka
350635a59a Fix leading whitespaces. 2013-06-06 20:36:07 +02:00
Joseph Myers
9c84384cc1 Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
Siddhesh Poyarekar
b937534868 Avoid crashing in LD_DEBUG when program name is unavailable
Resolves: #15465

The program name may be unavailable if the user application tampers
with argc and argv[].  Some parts of the dynamic linker caters for
this while others don't, so this patch consolidates the check and
fallback into a single macro and updates all users.
2013-05-29 21:34:12 +05:30
Maciej W. Rozycki
2848b10585 MIPS: soft-fp NaN representation corrections
[BZ #15442] This adds support for the inverse interpretation of the
quiet bit of IEEE 754 floating-point NaN data that some processors
use.  This includes in particular MIPS architecture processors; the
payload used for the canonical qNaN encoding is updated accordingly
so as not to interfere with the quiet bit.
2013-05-16 23:33:55 +01:00
Joseph Myers
daaa7713e9 Remove bounded-pointers build system support. 2013-02-15 15:07:54 +00:00
Joseph Myers
6277fdabc0 Remove CHECK_STRING, CHECK_STRING_NULL_OK and __ubp_memchr. 2013-02-04 16:29:39 +00:00
David S. Miller
bae8e7f5ed Add a minor 'cas' atomic optimization on sparc.
* sysdeps/sparc/sparc32/sparcv9/bits/atomic.h
	(__arch_compare_and_exchange_val_32_acq): Use %g0 as second
	argument of CAS if possible.
	* sysdeps/sparc/sparc64/bits/atomic.h
	(__arch_compare_and_exchange_val_32_acq): Likewise.
	(__arch_compare_and_exchange_val_64_acq): Likewise.
2013-01-23 11:27:24 -08:00
David S. Miller
7c1e01aabc Use libgcc unwinder for sparc backtraces, if available.
* sysdeps/sparc/backtrace.c: New file.
	* sysdeps/sparc/sparc32/backtrace.h: New file.
	* sysdeps/sparc/sparc32/sparcv9/backtrace.h: New file.
	* sysdeps/sparc/sparc64/backtrace.h: New file.
	* sysdeps/sparc/sparc64/backtrace.c: Delete.
	* sysdeps/sparc/Makefile (CFLAGS-backtrace.c): Add
	-funwind-tables.
2013-01-21 14:15:30 -08:00
David S. Miller
1aa6176780 Optimize trunc{,f} on sparc.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile: Add vis3
	trunc{,f} to libm-sysdep_routes.
	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_trunc-vis3.S: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_trunc.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_truncf-vis3.S: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_truncf.S: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_trunc.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_truncf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_trunc-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_trunc.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_truncf-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_truncf.S: New file.
	* sysdeps/sparc/sparc64/fpu/s_trunc.S: New file.
	* sysdeps/sparc/sparc64/fpu/s_truncf.S: New file.
2013-01-16 00:00:54 -08:00
David S. Miller
c42d5e9862 Optimize nearbyint{,f} on sparc.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile: Add vis3
	nearbyint{,f} to libm-sysdep_routes.
	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S:
	New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint.S: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S:
	New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf.S: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint-vis3.S: New
	file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf-vis3.S: New
	file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.S: New file.
	* sysdeps/sparc/sparc64/fpu/s_nearbyint.S: New file.
	* sysdeps/sparc/sparc64/fpu/s_nearbyintf.S: New file.
2013-01-15 20:59:54 -08:00
David S. Miller
8b954ab9b8 Optimize sparc {ceil,floor}{,f} using vis2 'siam' instruction.
* sysdeps/sparc/sparc-ifunc.h (SPARC_ASM_IFUNC2): New macro.
	(SPARC_ASM_VIS2_IFUNC): Likewise.
	(SPARC_ASM_VIS3_VIS2_IFUNC): Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil-vis3.S: Make
	use of 'siam' instruction.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf-vis3.S:
	Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor-vis3.S:
	Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf-vis3.S:
	Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis3.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis3.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis3.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-vis3.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil-vis2.S: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf-vis2.S: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor-vis2.S: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf-vis2.S: New
	file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis2.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis2.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis2.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-vis2.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S: Hook in
	new VIS2 routines.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf.S:
	Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floor.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile: Add new VIS2
	routines to libm-sysdep_routines.
	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile: Likewise.
2013-01-14 21:47:29 -08:00
David S. Miller
65a82e3dd5 Optimize fdim/fdimf on sparc.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile: Add vis3
	fdim/fdimf to libm-sysdep_routines.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S: New file.
	* sysdeps/sparc/sparc32/fpu/s_fdim.S: New file.
	* sysdeps/sparc/sparc32/fpu/s_fdimf.S: New file.
	* sysdeps/sparc/sparc64/fpu/s_fdim.S: New file.
	* sysdeps/sparc/sparc64/fpu/s_fdimf.S: New file.
2013-01-14 18:21:59 -08:00
David S. Miller
4ae4244d4b Redo sparc 32-bit V9 GMP optimizations with fixed copyrights.
* sysdeps/sparc/sparc32/sparcv9/mul_1.S: Properly optimize for 32-bit
	sparc V9 rather than using V8 code.
	* sysdeps/sparc/sparc32/sparcv9/addmul_1.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/submul_1.S: Likewise.
2013-01-11 20:53:10 -08:00
David S. Miller
8794a96418 Adjust sparc for Roland's multiarch sysdep directory changes.
* sysdeps/sparc/sparc32/sparcv9/fpu/unix/sysv/linux/multiarch/Implies:
	Move to...
	* sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/fpu/multiarch/Implies:
	Here.
2013-01-11 18:04:10 -08:00
David S. Miller
9e6919c8ae Undo receive sparc 32-bit V9 gmp routine commit.
* sysdeps/sparc/sparc32/sparcv9/mul_1.S: Revert previous changes.
	* sysdeps/sparc/sparc32/sparcv9/addmul_1.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/submul_1.S: Likewise.
2013-01-10 21:28:07 -08:00
David S. Miller
b9de2dde53 Optimize sparc 32-bit V9 GMP multiply routines.
* sysdeps/sparc/sparc32/sparcv9/mul_1.S: Properly optimize for 32-bit
	sparc V9 rather than using V8 code.
	* sysdeps/sparc/sparc32/sparcv9/addmul_1.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/submul_1.S: Likewise.
2013-01-10 16:15:32 -08:00
Joseph Myers
568035b787 Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
David S. Miller
3a0d900a99 Add support for sparc cryptographic hash opcodes.
* crypt/Makefile: Move test targets after toplevel Rules
	inclusion.  Grab any necessary sysdep routines when linking.
	* crypt/md5.c (md5_process_block): Remove define, we will always
	name it __md5_process_block.
	(md5_finish_ctx): Update md5_process_block call.
	(md5_stream): Likewise.
	(md5_process_bytes): Likewise.
	(md5_process_block): Rename to __md5_process_block and move to ...
	* crypt/md5-block.c: ... here.
	* crypt/sha256.c (sha256_process_block): Move to ...
	* crypt/sha256-block.c: ... here.
	* crypt/sha512.c (sha512_process_block): Move to ...
	* crypt/sha512-block.c: ... here.
	* locale/Makefile (CFLAGS-md5.c): Define to add crypt/ to include
	path.
	* sysdeps/sparc/sparc-ifunc.c (sparc_libc_ifunc): Define.
	* sysdeps/sparc/sparc64/multiarch/Makefile
	(libcrypt-sysdep_routines): Add crypto assembler sysdeps when in
	crypt subdir.
	(localedef-aux): Add md5 crypto assembler when in locale subdir.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile: Mirror sparc64
	multiarch changes.
	* sysdeps/sparc/sparc64/multiarch/md5-block.c: New file.
	* sysdeps/sparc/sparc64/multiarch/md5-crop.S: New file.
	* sysdeps/sparc/sparc64/multiarch/sha256-block.c: New file.
	* sysdeps/sparc/sparc64/multiarch/sha256-crop.S: New file.
	* sysdeps/sparc/sparc64/multiarch/sha512-block.c: New file.
	* sysdeps/sparc/sparc64/multiarch/sha512-crop.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c: New file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c: New
	file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S: New file.
2012-11-13 17:12:45 -08:00
David S. Miller
f303f97c29 Add IFUNC test lists for memcpy/mempcpy/memset on sparc.
* sysdeps/sparc/sparc64/multiarch/memcpy.S: Add comments for
	ifunc-impl-list.c
	* sysdeps/sparc/sparc64/multiarch/memset.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/ifunc-impl-list.c: New file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/ifunc-impl-list.c: New
	file.
2012-10-25 16:34:26 -07:00
David S. Miller
3baddb72a4 Add Niagara-4 optimized memset/bzero implementation.
* sysdeps/sparc/sparc64/multiarch/memset-niagara4.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/memset-niagara4.S: New
	file.
	* sysdeps/sparc/sparc64/multiarch/Makefile: Add to
	sysdep_routines.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memset.S: Use Niagara-4 memset
	and bzero when HWCAP_SPARC_CRYPTO is present.
2012-10-05 14:46:47 -07:00
David S. Miller
1d9a6d96ac Add Niagara-4 optimized memcpy and mempcpy.
* sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/memcpy-niagara4.S: New
	file.
	* sysdeps/sparc/sparc64/multiarch/Makefile: Add to
	sysdep_routines.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy.S: Use Niagara-4 memcpy
	and mempcpy when HWCAP_SPARC_CRYPTO is set.
2012-09-28 13:06:24 -07:00
H.J. Lu
9bac1d8624 Define VERSYMIDX/VALIDX/ADDRIDX in ldsodefs.h 2012-09-28 11:30:57 -07:00
David S. Miller
0a9f1987ad Use sparcv8 GMP routines when building 32-bit sparcv9.
* sysdeps/sparc/sparc32/sparcv9/addmul_1.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/submul_1.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/mul_1.S: New file.
2012-09-04 19:20:03 -07:00
Joseph Myers
3129cfc6ec Move testsuite audit definitions to sysdeps tst-audit.h files. 2012-07-26 11:29:07 +00:00
Joseph Myers
cfc82fd8ac Split tls-macros.h into sysdeps directories. 2012-07-17 11:30:58 +00:00
David S. Miller
1c58d5dceb Simulate sparc fpu exceptions using real FP ops again in soft-fp.
* sysdeps/sparc/sparc32/soft-fp/q_util.c
	(___Q_simulate_exceptions): Use real FP ops rather than writing
	into the %fsr.
	* sysdeps/sparc/sparc32/soft-fp/q_util.c (__Qp_handle_exceptions):
	Likewise.
2012-05-30 23:09:25 -07:00
David S. Miller
ae251b0b58 Fix underflow generation in soft-fp.
* soft-fp/soft-fp.h (FP_CUR_EXCEPTIONS): Define.
	(FP_TRAPPING_EXCEPTIONS): Provide default implementation.
	* sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
	(FP_TRAPPING_EXCEPTIONS): Define.
	* sysdeps/sparc/sparc64/soft-fp/sfp-machine.h
	(FP_TRAPPING_EXCEPTIONS): Define.
	* soft-fp/op-common.h (_FP_PACK_SEMIRAW): Signal underflow for
	subnormals only when inexact has been signalled or underflow
	exceptions are enabled.
	(_FP_PACK_CANONICAL): Likewise.
2012-05-30 13:41:01 -07:00
David S. Miller
d66ef399f5 Fix underflow reporting and tie up loose ends in sparc soft-fp.
* sysdeps/sparc/sparc32/soft-fp/q_util.c (___Q_numbers): Delete.
	(___Q_zero): New.
	(__Q_simulate_exceptions): Return void.  Change to simulate
	exceptions by writing into the %fsr.
	* sysdeps/sparc/sparc64/soft-fp/qp_util.c
	(__Qp_handle_exceptions): Likewise.
	(numbers): Delete.
	* sysdeps/sparc/sparc64/soft-fp/Versions: Remove entry for
	__Qp_handle_exceptions.
	* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist: Remove
	__Qp_handle_exceptions.
	* sysdeps/sparc/sparc32/soft-fp/sfp-machine.h (_FP_DECL_EX): Mark
	as unused and give dummy FP_RND_NEAREST initializer.
	(FP_INHIBIT_RESULTS): Define.
	(___Q_simulate_exceptions): Update declaration.
	(FP_HANDLE_EXCEPTIONS): Use ___Q_zero and tidy inline asm
	formatting.
	* sysdeps/sparc/sparc64/soft-fp/sfp-machine.h (_FP_DECL_EX): Mark
	as unused and give dummy FP_RND_NEAREST initializer.
	(__Qp_handle_exceptions): Update declaration.
	(FP_HANDLE_EXCEPTIONS, QP_NO_EXCEPTIONS): Tidy inline asm
	formatting.
2012-05-27 21:11:42 -07:00
H.J. Lu
20c07380db Rename __WORDSIZE_COMPAT32 to __WORDSIZE_TIME64_COMPAT32 2012-05-21 13:39:55 -07:00
Joseph Myers
a9538892ad Split up stackguard-macros.h into sysdeps directories. 2012-05-15 23:34:30 +00:00
David S. Miller
ee0db19075 Minor optimization to sparc VIS3 floor() implementation.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor-vis3.S: Use
	movxtod instead of popping the value on the stack.
2012-05-08 11:17:07 -07:00
David S. Miller
33f244f40b Fix missing long-double compat symbols on sparc v9.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S: Generate
	long-double compat symbols.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmax.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmin.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_ceil.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_floor.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_fmax.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_fmin.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_isnan.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_llrint.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_lrint.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_rint.S: Likewise.
2012-04-26 02:50:20 -07:00
David S. Miller
cfa1f3e865 Restore non-v9 32-bit sparc build.
* sysdeps/sparc/sparc32/bits/atomic.h: Include sysdep.h to get
	HWCAP_* values only after the memory barriers have been defined.
	(atomic_full_barrier): Define.
	(atomic_read_barrier): Define.
	(atomic_write_barrier): Define.
2012-04-25 22:24:00 -07:00
David S. Miller
e5270c239d There is no legitimate reason to override reg_char on sparc32.
* sysdeps/sparc/sparc32/memcopy.h: Delete.
2012-04-17 21:30:15 -07:00
David S. Miller
5ed848f3d8 Handle some new sparc relocation types.
* elf/elf.h (R_SPARC_WDISP10): Define.
	* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Handle
	R_SPARC_SIZE32.
	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Handle
	R_SPARC_SIZE64 and R_SPARC_H34.
2012-04-07 09:29:14 -07:00
David S. Miller
993eb0541c Reduce down to one definition of _ELF_DYNAMIC_DO_RELOC.
* elf/dynamic-link.h (_ELF_DYNAMIC_DO_RELOC): Reduce down to one
	definition.
	* sysdeps/powerpc/powerpc32/dl-machine.h
	(ELF_MACHINE_PLTREL_OVERLAP): Delete.
	* sysdeps/s390/s390-32/dl-machine.h
	(ELF_MACHINE_PLTREL_OVERLAP): Likewise.
	* sysdeps/sparc/sparc32/dl-machine.h
	(ELF_MACHINE_PLTREL_OVERLAP): Likewise.
	* sysdeps/sparc/sparc64/dl-machine.h
	(ELF_MACHINE_PLTREL_OVERLAP): Likewise.
2012-04-05 15:28:37 -07:00
David S. Miller
88d85d4f00 Optimize mempcpy on sparc.
* sysdeps/sparc/sparc32/memcpy.S: Implement mempcpy using a stub
	that branches into memcpy.
	* sysdeps/sparc/sparc64/memcpy.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy-niagara2.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy.S: Add mempcpy multiarch
	bits.
	* sysdeps/sparc/sparc64/rtld-memcpy.c: Include generic mempcpy
	implementation too.
	* sysdeps/sparc/mempcpy.S: New file.
2012-03-28 22:35:26 -07:00
David S. Miller
88570753ec Use generic memset/memcpy in rtld on sparcv9/sparc64.
* sysdeps/sparc/sparc32/sparcv9/multiarch/rtld-memset.c: New file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/rtld-memcpy.c: New file.
	* sysdeps/sparc/sparc32/sparcv9/rtld-memset.c: New file.
	* sysdeps/sparc/sparc32/sparcv9/rtld-memcpy.c: New file.
	* sysdeps/sparc/sparc64/multiarch/rtld-memset.c: New file.
	* sysdeps/sparc/sparc64/multiarch/rtld-memcpy.c: New file.
	* sysdeps/sparc/sparc64/rtld-memset.c: New file.
	* sysdeps/sparc/sparc64/rtld-memcpy.c: New file.
2012-03-28 22:22:15 -07:00
David S. Miller
18c9d62b9c Make sparc's -fPIC addition to ASFLAGS-.os more robust.
* sysdeps/sparc/Makefile: Add -fPIC to ASFLAGS-.os here....
	* sysdeps/sparc/sparc32/Makefile: rather than here...
	* sysdeps/sparc/sparc64/Makefile: and here.
2012-03-28 14:25:42 -07:00
Andreas Jaeger
8cd23080c4 Move sysdeps/sparc/{,sparc32,sparc64}/elf files
* sysdeps/sparc/elf/configure.in: Moved to ...
	* sysdeps/sparc/configure.in: ... here.
	* sysdeps/sparc/elf/configure: Delete file.
	* sysdeps/sparc/sparc32/elf/start.S: Moved to ...
	* sysdeps/sparc/sparc32/start.S: ... here.
	* sysdeps/sparc/sparc64/elf/start.S: Moved to ...
	* sysdeps/sparc/sparc64/start.S: ... here.
	* sysdeps/sparc/sparc32/elf/Makefile: Merged into ...
	* sysdeps/sparc/sparc32/Makefile: ... this.
	* sysdeps/sparc/sparc64/elf/Makefile: Merged into ...
	* sysdeps/sparc/sparc64/Makefile: ... this.
2012-03-28 09:26:30 +02:00
H.J. Lu
eb96ffb07d Move stdio-common/_itoa.h to sysdeps/generic 2012-03-20 16:00:23 -07:00
David S. Miller
e6a62e18fd Add sparc vis3 optimized fma/fmaf.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fma-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fma.c: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaf-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaf.c: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fma-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fma.c: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fmaf-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fmaf.c: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile: Add fma/fmaf
	sysdep routines.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile: Likewise.
2012-03-15 23:09:16 -07:00
David S. Miller
88cb87d908 Sparc long double is emulated in software, therefore use dbl-64's s_fma.c
* sysdeps/sparc/sparc32/fpu/s_fma.c: New file.
	* sysdeps/sparc/sparc64/fpu/s_fma.c: New file.
2012-03-15 20:55:42 -07:00
David S. Miller
006f1daa5a Create a header for sparc ifunc expansion and use it for VIS3 ifuncs.
* sysdeps/sparc/sparc-ifunc.h: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S: Use sparc-ifunc.h
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmax.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaxf.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmin.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fminf.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrt.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrtf.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floor.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fmax.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fmaxf.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fmin.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fminf.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S: Likewise.
2012-03-15 20:29:44 -07:00
David S. Miller
f7062b9a6f Sparc optimized fmin{,f} and fmax{,f}.
* sysdeps/sparc/sparc64/fpu/s_fmax.S: New file.
	* sysdeps/sparc/sparc64/fpu/s_fmaxf.S: New file.
	* sysdeps/sparc/sparc64/fpu/s_fmin.S: New file.
	* sysdeps/sparc/sparc64/fpu/s_fminf.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_fmax.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_fmaxf.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_fmin.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/s_fminf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fmax.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fmaxf-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fmaxf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fmin-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fmin.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fminf-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_fminf.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmax-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmax.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaxf-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaxf.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmin-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmin.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fminf-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fminf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile: Add new vis3
	fmin/fmax sysdep routines.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile: Likewise.
2012-03-15 02:13:54 -07:00
David S. Miller
559398ab74 Add more sparc VIS3 optimized math routines.
* sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_finite-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_finitef-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floor.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinff-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnan-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrint-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_rint-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_rintf-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile: Add new VIS3 routines.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrt-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrt.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrtf-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrtf.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile: Add new VIS3 routines.

	* sysdeps/sparc/sparc32/sparcv9/fpu/unix/sysv/linux/multiarch/Implies:
	New file.
2012-03-15 00:14:55 -07:00
David S. Miller
eae47a3618 Add framework for using sparc VIS3 instructions, use it for copysign/signbit.
* sysdeps/sparc/configure.in: New file.
	* sysdeps/sparc/configure: Generate.
	* configure.in (libc_cv_sparc_as_vis3): Substitute.
	* configure: Regenerate.
	* config.h.in (HAVE_AS_VIS3_SUPPORT): New.
	* config.make.in (have-as-vis3): New.
	* sysdeps/sparc/sparc32/sparcv9/Makefile (ASFLAGS-*): If VIS3 is
	available use -Av9d instead of -Av9a.
	* sysdeps/sparc/sparc64/Makefile: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf-vis3.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf-vis3.S: New file.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S: New file.
2012-03-14 16:43:09 -07:00