In order for the __kernel_get_tbfreq vDSO call to work the
INTERNAL_VSYSCALL_NCS macro needed to be updated to prevent it from
assuming an integer return type (since the timebase frequency is a 64-bit
value) by specifying the type of the return type as a macro parameter. The
macro then specifically declares the return value as a 'register' (or
implied pair) of the denoted type. The compiler is then informed that this
register (or implied pair) is to be used for the return value.
(cherry picked from commit 471a1672d4)
We returned without calling __munmap if not in the simulator.
Now we call a separate sim_dlclose() function to make the
control flow work correctly.
(cherry picked from commit 1fe2988f52)
Conflicts:
NEWS
This turns out to be helpful when doing a from-scratch cross-compile of
gcc and glibc, since you can then do "make install-headers" in glibc
even before you have a functioning tile gcc.
(cherry picked from commit ad36ba2bd6)
The existing test avoided passing -mcmodel=large if the compiler didn't
support it. However, we need to test not just the compiler support, but
also the toolchain (as and ld) support, so make the test more complete.
In addition, we have to avoid using the hwN_plt() assembly operators if
that support is missing, so guard the uses with #ifdef NO_PLT_PCREL.
This allows us to properly build glibc with the current community
binutils, which doesn't yet have the PC-relative PLT operator support.
The -mcmodel=large support is in gcc 4.8, but the toolchain support
won't be present in the community until binutils 2.24.
(cherry picked from commit 86bd05fbc8)
Resolved backport request BZ #15122.
Assume all unmarked objects are compatible with all ABI variants.
Such objects may have been generated in a transitional period when
ABI tags were not added to all objects.
---
2013-02-08 Carlos O'Donell <carlos@redhat.com>
[BZ #15006]
* sysdeps/generic/ldconfig.h: Define FLAG_ARM_LIBSF.
* elf/cache.c (print_entry): Add FLAG_ARM_LIBSF support.
ports/
2013-02-08 Carlos O'Donell <carlos@redhat.com>
[BZ #15006]
* sysdeps/unix/sysv/linux/arm/dl-cache.h
[__ARM_PCS_VFP] (_dl_cache_check_flags): Allow plain FLAG_ELF_LIBC6.
[!__ARM_PCS_VFP] (_dl_cache_check_flags): Likewise.
* sysdeps/unix/sysv/linux/arm/readelflib.c (process_elf_file):
Set FLAG_ARM_LIBSF for soft-float ABI otherwise just FLAG_ELF_LIBC6.
Previously, we would see a bad frame in the gdb backtrace output, e.g.:
(gdb) bt
#0 foo () at foo.c:5
#1 0x000000aaaab68ee8 in start_thread () from /lib/libpthread.so.0
#2 0x000000aaaad01c88 in clone () from /lib/libc.so.6
#3 0x0000000000000000 in ?? ()
With this change the bogus frame #3 is gone and we have the
same output as x86 does for the same program.
Seen in, e.g. ports/sysdeps/alpha/soft-fp/ots_mul.c.
The problem here is we have a switch on the class of X*Y, followed by
a switch on the class of R. The exponent field of R really is not set
by the first switch for NaN outputs, because we know it's not going to
be used. The compiler is not smart enough to see through this.
By pulling the exponent computation out of the NORMAL*NORMAL path, we
will not be pessimizing the most common case, while still providing an
arbitrary value to satisfy the compiler.
In bdd7898a58 we added self-definitions
of __isnan and friends in order to indicate specialized architecture
support, and avoid redefinitions within various generic math_private.h.
There is no generic math_private.h that concerns ldbl-128, and while
we provide __isnanl in the alpha math_private.h there's no need to
protect the function against redefinition.
In bdd7898a58 we added self-definitions
of __isnan and friends in order to indicate specialized architecture
support, and avoid redefinitions within various generic math_private.h.
There is no generic math_private.h that concerns ldbl-128, and while
we provide __isnanl in the alpha math_private.h there's no need to
protect the function against redefinition.