main.c   [plain text]



// BUILD:  $CC foo.c -dynamiclib -o $BUILD_DIR/libFoo.dylib -install_name $RUN_DIR/libFoo.dylib
// BUILD:  $CC main.c -o $BUILD_DIR/chained-fixups-many-binds.exe $BUILD_DIR/libFoo.dylib -Wl,-fixup_chains

// RUN:  ./chained-fixups-many-binds.exe

// Here's how to generate this monster
// ( for i in `seq 1 65000`; do echo "void foo$i() { }"; done ) > foo.c
// ( for i in `seq 1 65000`; do echo "extern void foo$i();"; done ) > foo.h
// ( for i in `seq 1 65000`; do echo "__attribute__((used)) void* use$i = (void*)&foo$i;"; done ) > uses.h

#include <stdio.h>

#include "foo.h"
#include "uses.h"

int main() {
	printf("[BEGIN] chained-fixups-many-binds\n");
	printf("[PASS] chained-fixups-many-binds\n");
	return 0;
}