1/* 2 * Copyright (c) 2005 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23#include <stdio.h> 24#include <stdbool.h> 25 26#include "base.h" 27#include "test.h" // PASS(), FAIL(), XPASS(), XFAIL() 28 29static bool wasProblem = false; 30 31static const char* coal1Where = NULL; 32static int* coal1Addr = NULL; 33static int checkInCountCoal1 = 0; 34 35void baseVerifyCoal1(const char* where, int* addr) 36{ 37 //fprintf(stderr, "baseVerifyCoal1(%s, %p)\n", where, addr); 38 ++checkInCountCoal1; 39 if ( coal1Where == NULL ) { 40 coal1Where = where; 41 coal1Addr = addr; 42 } 43 else { 44 if ( addr != coal1Addr ) { 45 fprintf(stderr, "coal1 resolved to different locations. %p in %s and %p in %s\n", 46 coal1Addr, coal1Where, addr, where); 47 wasProblem = true; 48 } 49 } 50} 51 52 53static const char* coal2Where = NULL; 54static int* coal2Addr = NULL; 55static int checkInCountCoal2 = 0; 56 57void baseVerifyCoal2(const char* where, int* addr) 58{ 59 //fprintf(stderr, "baseVerifyCoal2(%s, %p)\n", where, addr); 60 ++checkInCountCoal2; 61 if ( coal2Where == NULL ) { 62 coal2Where = where; 63 coal2Addr = addr; 64 } 65 else { 66 if ( addr != coal2Addr ) { 67 fprintf(stderr, "coal2 resolved to different locations. %p in %s and %p in %s\n", 68 coal2Addr, coal2Where, addr, where); 69 wasProblem = true; 70 } 71 } 72} 73 74 75 76void baseCheck() 77{ 78 if ( wasProblem || (checkInCountCoal1 != 4) || (checkInCountCoal2 != 4) ) 79 FAIL("weak-coal"); 80 else 81 PASS("weak-coal"); 82} 83 84