[PATCH 8/9] Remove the error handling wrapper from log2

Szabolcs Nagy szabolcs.nagy@arm.com
Fri Jun 29 12:56:00 GMT 2018


Introduce new log2 symbol version that doesn't do SVID compatible error
handling.  The standard errno and fp exception based error handling is
inline in the new code and does not have significant overhead (only
affects uncommon special case code paths).

The w_log2.c wrapper is disabled for sysdeps/ieee754/dbl-64 by using an
empty w_log2.c and enabled for targets that use their own log2
implementation.

The __log2_finite symbol is just an alias to log2 now.  For backward
compatibility the old log2 symbol versions still use a wrapper with
SVID error handling around the new code.

The ia64 asm is chaned so the compat and new symbol versions map to the
same address.

2018-06-29  Szabolcs Nagy  <szabolcs.nagy@arm.com>

	* math/Versions (GLIBC_2.28): Add log2.
	* math/w_log2_compat.c (__log2_compat): Change to versioned compat
	symbol.
	* math/w_log2.c: New file.
	* sysdeps/i386/fpu/w_log2.c: New file.
	* sysdeps/ia64/fpu/e_log2.S: Add versioned symbols.
	* sysdeps/ieee754/dbl-64/e_log2.c (__ieee754_log2): Rename to __log2
	and add necessary aliases.
	* sysdeps/ieee754/dbl-64/w_log2.c: New file.
	* sysdeps/m68k/m680x0/fpu/w_log2.c: New file.
	* sysdeps/mach/hurd/i386/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/alpha/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/arm/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/hppa/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/i386/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/ia64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/nios2/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/sh/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Update.
---
  math/Versions                                                |  2 +-
  math/w_log2.c                                                |  8 ++++++++
  math/w_log2_compat.c                                         |  6 +++---
  sysdeps/i386/fpu/w_log2.c                                    |  1 +
  sysdeps/ia64/fpu/e_log2.S                                    |  6 ++++++
  sysdeps/ieee754/dbl-64/e_log2.c                              | 11 ++++++++---
  sysdeps/ieee754/dbl-64/w_log2.c                              |  1 +
  sysdeps/m68k/m680x0/fpu/w_log2.c                             |  1 +
  sysdeps/mach/hurd/i386/libm.abilist                          |  1 +
  sysdeps/unix/sysv/linux/aarch64/libm.abilist                 |  1 +
  sysdeps/unix/sysv/linux/alpha/libm.abilist                   |  1 +
  sysdeps/unix/sysv/linux/arm/libm.abilist                     |  1 +
  sysdeps/unix/sysv/linux/hppa/libm.abilist                    |  1 +
  sysdeps/unix/sysv/linux/i386/libm.abilist                    |  1 +
  sysdeps/unix/sysv/linux/ia64/libm.abilist                    |  1 +
  sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist           |  1 +
  sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist             |  1 +
  sysdeps/unix/sysv/linux/microblaze/libm.abilist              |  1 +
  sysdeps/unix/sysv/linux/mips/mips32/libm.abilist             |  1 +
  sysdeps/unix/sysv/linux/mips/mips64/libm.abilist             |  1 +
  sysdeps/unix/sysv/linux/nios2/libm.abilist                   |  1 +
  sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist   |  1 +
  sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist |  1 +
  sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist       |  1 +
  sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist              |  1 +
  sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist            |  1 +
  sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist            |  1 +
  sysdeps/unix/sysv/linux/sh/libm.abilist                      |  1 +
  sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist           |  1 +
  sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist           |  1 +
  sysdeps/unix/sysv/linux/x86_64/64/libm.abilist               |  1 +
  sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist              |  1 +
  32 files changed, 53 insertions(+), 7 deletions(-)
  create mode 100644 math/w_log2.c
  create mode 100644 sysdeps/i386/fpu/w_log2.c
  create mode 100644 sysdeps/ieee754/dbl-64/w_log2.c
  create mode 100644 sysdeps/m68k/m680x0/fpu/w_log2.c
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0008-Remove-the-error-handling-wrapper-from-log2.diff
Type: text/x-patch
Size: 13010 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20180629/9b369bb0/attachment.bin>


More information about the Libc-alpha mailing list