]> git.saurik.com Git - apple/dyld.git/blob - src/glue.c
dyld-95.3.tar.gz
[apple/dyld.git] / src / glue.c
1 /* -*- mode: C++; c-basic-offset: 4; tab-width: 4 -*-
2 *
3 * Copyright (c) 2004-2007 Apple Inc. All rights reserved.
4 *
5 * @APPLE_LICENSE_HEADER_START@
6 *
7 * This file contains Original Code and/or Modifications of Original Code
8 * as defined in and that are subject to the Apple Public Source License
9 * Version 2.0 (the 'License'). You may not use this file except in
10 * compliance with the License. Please obtain a copy of the License at
11 * http://www.opensource.apple.com/apsl/ and read it before using this
12 * file.
13 *
14 * The Original Code and all software distributed under the License are
15 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
19 * Please see the License for the specific language governing rights and
20 * limitations under the License.
21 *
22 * @APPLE_LICENSE_HEADER_END@
23 */
24
25 #include <stddef.h>
26 #include <stdlib.h>
27 #include <string.h>
28 #include <time.h>
29 #include <unistd.h>
30
31
32 // abort called by C++ unwinding code
33 void abort()
34 {
35 _exit(1);
36 }
37
38 // std::terminate called by C++ unwinding code
39 void _ZSt9terminatev()
40 {
41 _exit(1);
42 }
43
44 // std::unexpected called by C++ unwinding code
45 void _ZSt10unexpectedv()
46 {
47 _exit(1);
48 }
49
50 // __cxxabiv1::__terminate(void (*)()) called to terminate process
51 void _ZN10__cxxabiv111__terminateEPFvvE()
52 {
53 _exit(1);
54 }
55
56 // __cxxabiv1::__unexpected(void (*)()) called to terminate process
57 void _ZN10__cxxabiv112__unexpectedEPFvvE()
58 {
59 _exit(1);
60 }
61
62 // __cxxabiv1::__terminate_handler
63 void* _ZN10__cxxabiv119__terminate_handlerE = &_ZSt9terminatev;
64
65 // __cxxabiv1::__unexpected_handler
66 void* _ZN10__cxxabiv120__unexpected_handlerE = &_ZSt10unexpectedv;
67
68
69
70
71 // real cthread_set_errno_self() has error handling that pulls in
72 // pthread_exit() which pulls in fprintf()
73 extern int* __error(void);
74 void cthread_set_errno_self(int err)
75 {
76 int* ep = __error();
77 *ep = err;
78 }
79
80 /*
81 * We have our own localtime() to avoid needing the notify API which is used
82 * by the code in libc.a for localtime() which is used by arc4random().
83 */
84 struct tm* localtime(const time_t* t)
85 {
86 return (struct tm*)NULL;
87 }
88
89