diff options
author | Alan Modra <amodra@gmail.com> | 2010-05-11 23:43:15 -0500 |
---|---|---|
committer | Ryan Arnold <ryanarn@etna.rchland.ibm.com> | 2010-05-11 23:43:41 -0500 |
commit | dd1f42ad8afb25e6930b0e7251520925208f5bc8 (patch) | |
tree | 9aa1304d21116a3b513652513c3d8e0d505708e0 /nptl/tst-tls1.c | |
parent | 3ad0390e7f8f8401f714a9bd989f4f32df105a97 (diff) | |
download | glibc-dd1f42ad8afb25e6930b0e7251520925208f5bc8.zip glibc-dd1f42ad8afb25e6930b0e7251520925208f5bc8.tar.gz glibc-dd1f42ad8afb25e6930b0e7251520925208f5bc8.tar.bz2 |
Fix PowerPC64 glibc assembly to properly work with the linker automatic
multiple toc support, which may be needed when a static libc is linked into a
large app. The requirements are: a) No tail calls are allowed to functions in
a different object file, ie. a plain branch is not allowed. b) All calls to
functions in a different object file must be followed by a nop.
On PowerPC64, the parameter save area and the cr save location for the current
function are in the previous frame, just like the lr save location. The
parameter save area, cr save location and lr save location in the current
frame are for use by *called* functions. In a number of places, glibc
assembly used the wrong area, leaving those functions at the mercy of any
called functions. We just happen to be lucky so far, but that may change with
future versions of gcc.
Diffstat (limited to 'nptl/tst-tls1.c')
0 files changed, 0 insertions, 0 deletions