]>
git.saurik.com Git - apple/dyld.git/blob - testing/test-cases/bind-addend.dtest/main.c
2 // BUILD: $CC main.c -o $BUILD_DIR/bind-addend.exe -lobjc
4 // RUN: ./bind-addend.exe
6 // Verify that negative addends work with pointers in to the shared cache and pointers to the image itself
10 // Note this is weak so that we have a bind
14 // Choose a large enough negative offset to be before the shared cache or the image
15 const uintptr_t offset
= 1ULL << 36;
16 void* pMinus
= (void*)((uintptr_t)&p
- offset
);
18 // Get a pointer to something we assume is in the shared cache
19 // Note we don't declare a function as arm64e would want to sign this
20 extern int objc_msgSend
;
21 void* msgSendMinus
= (void*)((uintptr_t)&objc_msgSend
- offset
);
25 printf("[BEGIN] bind-addend\n");
27 if ( pMinus
!= (void*)((uintptr_t)&p
- offset
) ) {
28 printf("[FAIL] bind-addend: %p != %p\n", pMinus
, (void*)((uintptr_t)&p
- offset
));
32 if ( msgSendMinus
!= (void*)((uintptr_t)&objc_msgSend
- offset
) ) {
33 printf("[FAIL] bind-addend: %p != %p\n", msgSendMinus
, (void*)((uintptr_t)&objc_msgSend
- offset
));
37 printf("[PASS] bind-addend\n");