diff options
author | David 'Digit' Turner <digit@google.com> | 2014-06-13 12:28:11 +0200 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2014-06-16 13:10:20 -0700 |
commit | 891dedb935b50f1abb39eedfe33049a1e49283cb (patch) | |
tree | 8066a42ec9e07537607254deb91195fb9d102a88 /tests/malloc_test.cpp | |
parent | 4fb0d4fb312ed696081200e65ce9bf643928e5e6 (diff) |
libc: Fix 'index' symbol export.
The C library didn't export the 'index' symbol, but its C++ name-mangling
instead, which broke the ABI and prevented some applications from loading
properly.
The main reason was that the implementation under bionic/index.cpp relied
on the declaration to specify that the function has C linkage.
However, the declaration for index() was removed from both <string.h>
and <strings.h> in a recent patch, which made the compiler think it was
ok to compile the function with C++ linkage instead!
This patch does the following:
- Move index() definition to bionic/ndk_cruft.cpp and ensure it uses
C linkage.
Note that this removes index() from the 64-bit library entirely, this
is intentional and will break source compatibility. Simply replacing
an index() call with the equivalent strchr() should be enough to fix
this in third-party code.
- Remove bionic/index.cpp from the tree and build files.
- Remove x86 assembly implementation from arch-x86/ to avoid conflict
with the one in ndk_cruft.cpp
BUG=15606653
Change-Id: I816b589f69c8f8a6511f6be6195d20cf1c4e8123
Diffstat (limited to 'tests/malloc_test.cpp')
0 files changed, 0 insertions, 0 deletions