Use a binary search to find the function start/end.

When searching for the funciton start/end in the EHABI table,
make use of std::upper_bound to do a binary search instead of
doing our own linear search.

Our search key is the current |pc|, and we use upper_bound to
find the first index in the table who points to an address
greater than |pc|. This address is the start of the next function.
From there, subtracting one index will give the start of the
current function.

std::upper_bound takes as input a begin and end iterator, and
a value to compare against, which is |pc| for us. We are unable
to use the indices of the table array diretly as the iterators,
as the compare method will need to compare the *iterator vs
the |pc|, but the *iterator would be a raw address in the table
instead of the full lookup of the instruction address from the
data in the table. Thus, we roll a EHABISectionIterator class
to do the iterating over the table for us, and use the default
comparator method to compare *iterator vs |pc|.

Change-Id: I0299ebc5d8a45157274a5a9575af4a14e3d4c0e2
Add -O flags to testit_android

Change-Id: I96c8cc3b144898da211320947f082cdee1cd7c84
Merge pull request #102 from awong-dev/add_O_support

Add -O flags to testit_android
Disable non-C locale dependent assertions in lookup_collatename.pass.cpp.

Change-Id: Iea65af2a257e3c227349882a76f38d2e3dd0273e
Move failing parts of lookup_collatename to a separate file instead.

Change-Id: I8f1ce8dcca604e75cd8dbdffe20da9fd8bed1496
Merge pull request #104 from awong-dev/pliard-disable-non-c-locale-assertions

Disable non-C locale dependent assertions in lookup_collatename.pass.cpp...
Fix silly format error

Change-Id: Icab187bf3fc62be0977d7517140c4637dc530531
Remove operator new/delete definitions when using libc++abi.

libc++abi already exports these implementations for these operators as
weak symbols. Having libc++ provide them as well is at best confusing
and at worse an ODR violation during a static link. The libc++
definitions used to be compiled out when libc++abi was built but

http://llvm.org/viewvc/llvm-project?view=revision&revision=160790

removed the preprocessor conditional. Due to the nature of weak
symbols as well as dynamic symbol lookup ordering this bug is hard
to test for and has gone unnoticed.

Change-Id: I732ffecba2e4a8690902aec33f168a9001935a5b
Merge pull request #105 from awong-dev/new-delete-odr

New delete odr
add armeabi-v7a-hard ABI

Change-Id: I49edfda5852e4c20c166c1a97d799daf7018ac88
Merge pull request #99 from awong-dev/binarysearch

Use a binary search to find the function start/end.
Merge musl wcsrtombs fix.

test/input.output/file.streams/fstreams/filebuf.virtuals/seekoff.pass.cpp
was failing due to wcsrtombs() not doing the right thing with partial
conversions on musl.  The musl folks fixed this within a few hours of
reporting the problem.  This merges the fix:
http://git.musl-libc.org/cgit/musl/commit/src/multibyte/wcsrtombs.c?id=8fba4458afb7304b32ca887e4a3990c6029131f9

Change-Id: If9e401deef767f7c5585ecfe904a9a83ab525e10
Merge pull request #106 from awong-dev/hard_float

add armeabi-v7a-hard ABI to testit_android
Merge pull request #107 from awong-dev/smallmuslmerge

Merge musl wcsrtombs fix.
Unwind support for floats

Change-Id: I16e3dcfc551eade6f138f2adf571be86b1f8ab30
Handle invalid pop sequences

Change-Id: I2b88e51f52dff6e4a9f95fd058a8bce8de191504
review nits

Change-Id: I111a6541e4f435d80f57eac28e85ed156411ad73