diff options
author | Stefan Liebler <stli@linux.vnet.ibm.com> | 2017-11-21 08:39:53 +0100 |
---|---|---|
committer | Stefan Liebler <stli@linux.vnet.ibm.com> | 2017-11-21 08:43:23 +0100 |
commit | 80eb52e3a93a9f611a415a3565d17536cf023f8a (patch) | |
tree | 42fbb9305b5c13236b8a85b3249596ded3845094 /ChangeLog | |
parent | 567d8c1f6852c5d5aad4d46da34b6276e400d5dd (diff) | |
download | glibc-80eb52e3a93a9f611a415a3565d17536cf023f8a.tar.gz glibc-80eb52e3a93a9f611a415a3565d17536cf023f8a.tar.xz glibc-80eb52e3a93a9f611a415a3565d17536cf023f8a.zip |
Remove attribute_hidden for wchar ifunc symbols.
On s390 (31bit) various debug/tst-*chk* testcases are failing as the tests are ending with a segmentation fault. One test is e.g. calling wcsnrtombs in debug/tst-chk1.c:1549. The function wcsnrtombs itself calls __wcsnlen. This function is called via PLT! The PLT-stub itself loads the address from GOT (r12 is assumed to be the GOT-pointer). In this case the loaded address is zero and the following branch leads to the segmentation fault. Due to the attribute_hidden in commit 44af8a32c341672b5160fdc2839767e9a837ad26 "Mark internal wchar functions with attribute_hidden [BZ #18822]" for e.g. the __wcsnlen function, r12 is not loaded with the GOT-pointer in wcsnrtombs. On s390x (64bit), this __wcsnlen call is also using the PLT-stub. But it is not failing as the GOT-pointer is setup with larl-instruction by the PLT-stub itself. Note: On s390x/s390, __wcsnlen is an IFUNC symbol. On x86_64, __wcsnlen is also an IFUNC symbol and is called via PLT, too. Further IFUNC symbols on s390 which were marked as hidden by the mentioned commit are: __wcscat, __wcsncpy, __wcpncpy, __wcschrnul. This patch removes the attribute_hidden in wchar.h. Then the compiler setups e.g. r12 on s390 in order to call __wcsnlen via PLT. ChangeLog: * include/wchar.h (__wcsnlen, __wcscat, __wcsncpy, __wcpncpy, __wcschrnul): Remove attribute_hidden.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 50da3df0b9..ca6024c35c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-11-21 Stefan Liebler <stli@linux.vnet.ibm.com> + + * include/wchar.h (__wcsnlen, __wcscat, __wcsncpy, __wcpncpy, + __wcschrnul): Remove attribute_hidden. + 2017-11-20 Paul Eggert <eggert@cs.ucla.edu> regex: don't assume uint64_t or uint32_t |