Use linker -Wl,--wrap=symbol

Linker --wrap option resolves to __wrap_symbol for undefined symbol.
During the compilation of host libportable.a, __HOST__ is defined
to rename all portable functions to  __wrap_symbol, and the
real function to __real_symbol.  This way libportable.a can be
validated at host w/o changes of user's source code.

See http://sourceware.org/binutils/docs/ld/Options.html

Change-Id: Idcbe53dd642536f3dc2be85a875f95535b9dc0b1
This commit is contained in:
Andrew Hsieh
2013-03-18 16:49:58 -07:00
parent e6915e0e08
commit 6433ec22b1
49 changed files with 339 additions and 264 deletions

View File

@@ -14,10 +14,11 @@
* limitations under the License.
*/
#include <portability.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/linux-syscalls.h>
int socket_portable(int domain, int type, int protocol) {
return socket(domain, type, protocol);
int WRAP(socket)(int domain, int type, int protocol) {
return REAL(socket)(domain, type, protocol);
}