diff options
author | Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com> | 2019-10-20 16:00:30 -0500 |
---|---|---|
committer | Gabriel F. T. Gomes <gabrielftg@linux.ibm.com> | 2019-12-27 15:02:10 -0300 |
commit | 1ef9b6e0bf1268050e74087c4f6bd056263a28c7 (patch) | |
tree | 3b3f7905c03c4890473ab9da3e7fdc5dbb42241e /sysdeps/unix | |
parent | 863d775c481704baaa41855fc93e5a1ca2dc6bf6 (diff) | |
download | glibc-1ef9b6e0bf1268050e74087c4f6bd056263a28c7.tar.gz glibc-1ef9b6e0bf1268050e74087c4f6bd056263a28c7.tar.xz glibc-1ef9b6e0bf1268050e74087c4f6bd056263a28c7.zip |
Do not redirect calls to __GI_* symbols, when redirecting to *ieee128
On platforms where long double has IEEE binary128 format as a third option (initially, only powerpc64le), many exported functions are redirected to their __*ieee128 equivalents. This redirection is provided by installed headers such as stdio-ldbl.h, and is supposed to work correctly with user code. However, during the build of glibc, similar redirections are employed, in internal headers, such as include/stdio.h, in order to avoid extra PLT entries. These redirections conflict with the redirections to __*ieee128, and must be avoided during the build. This patch protects the second redirections with a test for __LONG_DOUBLE_USES_FLOAT128, a new macro that is defined to 1 when functions that deal with long double typed values reuses the _Float128 implementation (this is currently only true for powerpc64le). Tested for powerpc64le, x86_64, and with build-many-glibcs.py. Co-authored-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com> Reviewed-by: Florian Weimer <fweimer@redhat.com>
Diffstat (limited to 'sysdeps/unix')
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/bits/long-double.h | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/bits/long-double.h | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/bits/long-double.h b/sysdeps/unix/sysv/linux/sparc/sparc32/bits/long-double.h index aec2a86c96..bd403fba21 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/bits/long-double.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/bits/long-double.h @@ -24,3 +24,4 @@ # define __NO_LONG_DOUBLE_MATH 1 # endif #endif +#define __LONG_DOUBLE_USES_FLOAT128 0 diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/bits/long-double.h b/sysdeps/unix/sysv/linux/sparc/sparc64/bits/long-double.h index aec2a86c96..bd403fba21 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/bits/long-double.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/bits/long-double.h @@ -24,3 +24,4 @@ # define __NO_LONG_DOUBLE_MATH 1 # endif #endif +#define __LONG_DOUBLE_USES_FLOAT128 0 |