Shared library on Windows fixes

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@6768 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Adam Fedor 2000-06-22 03:15:27 +00:00
parent 6bccc28a4d
commit 474cb8d525
16 changed files with 580 additions and 1367 deletions

View file

@ -1,3 +1,22 @@
2000-06-21 Adam Fedor <fedor@gnu.org>
* Shared library (DLL) fixes on Windows
* configure.in: Check for alternate objc (DLL) libraries.
Look for objc_get_uninstalled_dtable.
* Source/behavior.m (behavior_class_add_methods): Don't look for
uninstalled_dtable if no objc_get_uninstalled_dtable.
(check_class_methods): Remove unused.
* Source/objc-load.m: Likewise.
* Headers/gnustep/base/NSObjCRuntime.h: Define GS_EXPORT
* Headers/gnustep/base/NSZone.h: Define functions either static
or extern depending on whether NSZone.m is being compiled.
* Source/NSZone.m: Remove duplicate functions.
* Source/Makefile.preamble (LIBRARIES_DEPEND_UPON): Add -lobjc
if on windows.
* Source/UdpPort.m: Use NSMutableArray.
2000-06-19 Adam Fedor <fedor@gnu.org>
* Source/NSBundle.m (_bundle_name_first_match): Work even when

View file

@ -1,5 +1,6 @@
=*
version.tmpl.texi
version.texi
gnustep-base.texi
gnustep-zones.texi
announce.texi
@ -39,4 +40,6 @@ ANNOUNCE
*.pg
*.ps
*.vrs
*.cl
*.pr

View file

@ -26,6 +26,7 @@
#ifndef __Foundation_h_GNUSTEP_BASE_INCLUDE
#define __Foundation_h_GNUSTEP_BASE_INCLUDE
#include <Foundation/NSObjCRuntime.h>
#include <GSConfig.h>
#include <Foundation/NSDebug.h>
#include <Foundation/NSObject.h>

View file

@ -27,14 +27,15 @@
#include <objc/objc.h>
#include <stdarg.h>
#if BUILD_libgnustep-base_DLL
# define GS_EXPORT __declspec(dllexport)
#elif libgnustep-base_ISDLL
# define GS_EXPORT extern __declspec(dllimport)
#if BUILD_libgnustep_base_DLL
# define GS_EXPORT __declspec(dllexport)
#elif libgnustep_base_ISDLL
# define GS_EXPORT extern __declspec(dllimport)
#else
# define GS_EXPORT extern
#endif
#define GS_IMPORT extern
#define GS_DECLARE
@class NSString;

View file

@ -58,6 +58,14 @@ struct _NSZone
void *GSOutOfMemory(size_t size, BOOL retry);
#ifdef IN_NSZONE_M
#define GS_ZONE_SCOPE extern
#define GS_ZONE_ATTR
#else
#define GS_ZONE_SCOPE static inline
#define GS_ZONE_ATTR __attribute__((unused))
#endif
/* Default zone. Name is hopelessly long so that no one will ever
want to use it. ;) Private variable. */
GS_EXPORT NSZone* __nszone_private_hidden_default_zone;
@ -71,19 +79,19 @@ GS_EXPORT NSZone* __nszone_private_hidden_default_zone;
GS_EXPORT NSZone* __nszone_private_hidden_atomic_zone;
GS_EXPORT inline NSZone* NSCreateZone (size_t start, size_t gran, BOOL canFree)
GS_ZONE_SCOPE NSZone* NSCreateZone (size_t start, size_t gran, BOOL canFree)
{ return __nszone_private_hidden_default_zone; }
GS_EXPORT inline NSZone* NSDefaultMallocZone (void)
GS_ZONE_SCOPE NSZone* NSDefaultMallocZone (void)
{ return __nszone_private_hidden_default_zone; }
GS_EXPORT inline NSZone* GSAtomicMallocZone (void)
GS_ZONE_SCOPE NSZone* GSAtomicMallocZone (void)
{ return __nszone_private_hidden_atomic_zone; }
GS_EXPORT inline NSZone* NSZoneFromPointer (void *ptr)
GS_ZONE_SCOPE NSZone* NSZoneFromPointer (void *ptr)
{ return __nszone_private_hidden_default_zone; }
GS_EXPORT inline void* NSZoneMalloc (NSZone *zone, size_t size)
GS_ZONE_SCOPE void* NSZoneMalloc (NSZone *zone, size_t size)
{
void *ptr;
@ -97,7 +105,7 @@ GS_EXPORT inline void* NSZoneMalloc (NSZone *zone, size_t size)
return ptr;
}
GS_EXPORT inline void* NSZoneCalloc (NSZone *zone, size_t elems, size_t bytes)
GS_ZONE_SCOPE void* NSZoneCalloc (NSZone *zone, size_t elems, size_t bytes)
{
size_t size = elems * bytes;
void *ptr;
@ -113,7 +121,7 @@ GS_EXPORT inline void* NSZoneCalloc (NSZone *zone, size_t elems, size_t bytes)
return ptr;
}
GS_EXPORT inline void* NSZoneRealloc (NSZone *zone, void *ptr, size_t size)
GS_ZONE_SCOPE void* NSZoneRealloc (NSZone *zone, void *ptr, size_t size)
{
ptr = GC_REALLOC(ptr, size);
if (ptr == 0)
@ -121,37 +129,37 @@ GS_EXPORT inline void* NSZoneRealloc (NSZone *zone, void *ptr, size_t size)
return ptr;
}
GS_EXPORT inline void NSRecycleZone (NSZone *zone)
GS_ZONE_SCOPE void NSRecycleZone (NSZone *zone)
{
}
GS_EXPORT inline void NSZoneFree (NSZone *zone, void *ptr)
GS_ZONE_SCOPE void NSZoneFree (NSZone *zone, void *ptr)
{
GC_FREE(ptr);
}
GS_EXPORT inline void NSSetZoneName (NSZone *zone, NSString *name)
GS_ZONE_SCOPE void NSSetZoneName (NSZone *zone, NSString *name)
{
}
GS_EXPORT inline NSString* NSZoneName (NSZone *zone)
GS_ZONE_SCOPE NSString* NSZoneName (NSZone *zone)
{
return nil;
}
#ifndef NO_GNUSTEP
GS_EXPORT inline void* NSZoneMallocAtomic (NSZone *zone, size_t size)
GS_ZONE_SCOPE void* NSZoneMallocAtomic (NSZone *zone, size_t size)
{
return NSZoneMalloc(GSAtomicMallocZone(), size);
}
GS_EXPORT inline BOOL NSZoneCheck (NSZone *zone)
GS_ZONE_SCOPE BOOL NSZoneCheck (NSZone *zone)
{
return YES;
}
GS_EXPORT inline struct NSZoneStats NSZoneStats (NSZone *zone)
GS_ZONE_SCOPE struct NSZoneStats NSZoneStats (NSZone *zone)
{
struct NSZoneStats stats = { 0 };
return stats;
@ -162,19 +170,25 @@ GS_EXPORT inline struct NSZoneStats NSZoneStats (NSZone *zone)
GS_EXPORT NSZone* NSCreateZone (size_t start, size_t gran, BOOL canFree);
GS_EXPORT inline NSZone* NSDefaultMallocZone (void)
GS_ZONE_SCOPE NSZone* NSDefaultMallocZone (void) GS_ZONE_ATTR;
GS_ZONE_SCOPE NSZone* NSDefaultMallocZone (void)
{
return __nszone_private_hidden_default_zone;
}
GS_EXPORT inline NSZone* GSAtomicMallocZone (void)
GS_ZONE_SCOPE NSZone* GSAtomicMallocZone (void) GS_ZONE_ATTR;
GS_ZONE_SCOPE NSZone* GSAtomicMallocZone (void)
{
return NSDefaultMallocZone();
}
GS_EXPORT NSZone* NSZoneFromPointer (void *ptr);
GS_EXPORT inline void* NSZoneMalloc (NSZone *zone, size_t size)
GS_ZONE_SCOPE void* NSZoneMalloc (NSZone *zone, size_t size) GS_ZONE_ATTR;
GS_ZONE_SCOPE void* NSZoneMalloc (NSZone *zone, size_t size)
{
if (!zone)
zone = NSDefaultMallocZone();
@ -183,21 +197,28 @@ GS_EXPORT inline void* NSZoneMalloc (NSZone *zone, size_t size)
GS_EXPORT void* NSZoneCalloc (NSZone *zone, size_t elems, size_t bytes);
GS_EXPORT inline void* NSZoneRealloc (NSZone *zone, void *ptr, size_t size)
GS_ZONE_SCOPE void*
NSZoneRealloc (NSZone *zone, void *ptr, size_t size) GS_ZONE_ATTR;
GS_ZONE_SCOPE void* NSZoneRealloc (NSZone *zone, void *ptr, size_t size)
{
if (!zone)
zone = NSDefaultMallocZone();
return (zone->realloc)(zone, ptr, size);
}
GS_EXPORT inline void NSRecycleZone (NSZone *zone)
GS_ZONE_SCOPE void NSRecycleZone (NSZone *zone) GS_ZONE_ATTR;
GS_ZONE_SCOPE void NSRecycleZone (NSZone *zone)
{
if (!zone)
zone = NSDefaultMallocZone();
(zone->recycle)(zone);
}
GS_EXPORT inline void NSZoneFree (NSZone *zone, void *ptr)
GS_ZONE_SCOPE void NSZoneFree (NSZone *zone, void *ptr) GS_ZONE_ATTR;
GS_ZONE_SCOPE void NSZoneFree (NSZone *zone, void *ptr)
{
if (!zone)
zone = NSDefaultMallocZone();
@ -206,7 +227,9 @@ GS_EXPORT inline void NSZoneFree (NSZone *zone, void *ptr)
GS_EXPORT void NSSetZoneName (NSZone *zone, NSString *name);
GS_EXPORT inline NSString* NSZoneName (NSZone *zone)
GS_ZONE_SCOPE NSString* NSZoneName (NSZone *zone) GS_ZONE_ATTR;
GS_ZONE_SCOPE NSString* NSZoneName (NSZone *zone)
{
if (!zone)
zone = NSDefaultMallocZone();
@ -214,21 +237,28 @@ GS_EXPORT inline NSString* NSZoneName (NSZone *zone)
}
#ifndef NO_GNUSTEP
GS_EXPORT inline void* NSZoneMallocAtomic (NSZone *zone, size_t size)
GS_ZONE_SCOPE void*
NSZoneMallocAtomic (NSZone *zone, size_t size) GS_ZONE_ATTR;
GS_ZONE_SCOPE void* NSZoneMallocAtomic (NSZone *zone, size_t size)
{
if (!zone)
zone = NSDefaultMallocZone();
return (zone->malloc)(zone, size);
}
GS_EXPORT inline BOOL NSZoneCheck (NSZone *zone)
GS_ZONE_SCOPE BOOL NSZoneCheck (NSZone *zone) GS_ZONE_ATTR;
GS_ZONE_SCOPE BOOL NSZoneCheck (NSZone *zone)
{
if (!zone)
zone = NSDefaultMallocZone();
return (zone->check)(zone);
}
GS_EXPORT inline struct NSZoneStats NSZoneStats (NSZone *zone)
GS_ZONE_SCOPE struct NSZoneStats NSZoneStats (NSZone *zone) GS_ZONE_ATTR;
GS_ZONE_SCOPE struct NSZoneStats NSZoneStats (NSZone *zone)
{
if (!zone)
zone = NSDefaultMallocZone();

View file

@ -36,6 +36,9 @@
/* Define if your Obj-C compiler calls +load methods before main */
#undef HAVE_LOAD_METHOD
/* Define if objc-api.h defines this function */
#undef HAVE_OBJC_GET_UNINSTALLED_DTABLE
/* Define if your Lib C defines program_invocation_name */
#undef HAVE_PROGRAM_INVOCATION_NAME
@ -126,6 +129,9 @@
/* Define if you have the <grp.h> header file. */
#undef HAVE_GRP_H
/* Define if you have the <libxml/xmlversion.h> header file. */
#undef HAVE_LIBXML_XMLVERSION_H
/* Define if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

View file

@ -57,6 +57,13 @@ ADDITIONAL_LDFLAGS =
# Additional library directories the linker should search
ADDITIONAL_LIB_DIRS =
ifeq ($(GNUSTEP_TARGET_OS),mingw32)
libgnustep-base_LIBRARIES_DEPEND_UPON += -lobjc
endif
ifeq ($(GNUSTEP_TARGET_OS),cygwin)
libgnustep-base_LIBRARIES_DEPEND_UPON += -lobjc
endif
#
# Flags dealing with installing and uninstalling
#

View file

@ -27,6 +27,7 @@
#include <config.h>
#include <base/preface.h>
#include <Foundation/NSObjCRuntime.h>
#include <GSConfig.h>
#include <Foundation/NSConcreteNumber.h>
#include <Foundation/NSString.h>

View file

@ -79,6 +79,7 @@
/* Define to turn off NSAssertions. */
#define NS_BLOCK_ASSERTIONS 1
#define IN_NSZONE_M 1
#include <config.h>
#include <base/preface.h>
@ -410,7 +411,7 @@ NSZone* __nszone_private_hidden_default_zone = &default_zone;
*/
static NSZone *zone_list = 0;
inline NSZone*
GS_DECLARE NSZone*
NSZoneFromPointer(void *ptr)
{
NSZone *zone;
@ -1695,56 +1696,12 @@ NSCreateZone (size_t start, size_t gran, BOOL canFree)
return newZone;
}
inline NSZone*
NSDefaultMallocZone (void)
{
return __nszone_private_hidden_default_zone;
}
NSZone* GSAtomicMallocZone (void)
{
return NSDefaultMallocZone();
}
inline void*
NSZoneMalloc (NSZone *zone, size_t size)
{
if (!zone)
zone = NSDefaultMallocZone();
return (zone->malloc)(zone, size);
}
void*
NSZoneCalloc (NSZone *zone, size_t elems, size_t bytes)
{
return memset(NSZoneMalloc(zone, elems*bytes), 0, elems*bytes);
}
inline void*
NSZoneRealloc (NSZone *zone, void *ptr, size_t size)
{
if (!zone)
zone = NSDefaultMallocZone();
return (zone->realloc)(zone, ptr, size);
}
inline void
NSRecycleZone (NSZone *zone)
{
if (zone == 0)
zone = NSDefaultMallocZone();
(zone->recycle)(zone);
}
inline void
NSZoneFree (NSZone *zone, void *ptr)
{
if (!zone)
zone = NSDefaultMallocZone();
(zone->free)(zone, ptr);
}
void
NSSetZoneName (NSZone *zone, NSString *name)
{
@ -1758,40 +1715,6 @@ NSSetZoneName (NSZone *zone, NSString *name)
[gnustep_global_lock unlock];
}
inline NSString*
NSZoneName (NSZone *zone)
{
if (!zone)
zone = NSDefaultMallocZone();
return zone->name;
}
/* Not in OpenStep. */
void*
NSZoneMallocAtomic (NSZone *zone, size_t size)
{
return NSZoneMalloc(GSAtomicMallocZone(), size);
}
/* Not in OpenStep. */
inline BOOL
NSZoneCheck (NSZone *zone)
{
if (!zone)
zone = NSDefaultMallocZone();
return (zone->check)(zone);
}
/* Not in OpenStep. */
inline struct NSZoneStats
NSZoneStats (NSZone *zone)
{
if (!zone)
zone = NSDefaultMallocZone();
return (zone->stats)(zone);
}
#else
#include <gc.h>

View file

@ -326,13 +326,13 @@ static NSMapTable *port_number_2_in_port = NULL;
@implementation UdpOutPort
static NSArray *udp_out_port_array;
static NSMutableArray *udp_out_port_array;
+ (void) initialize
{
if (self == [UdpOutPort class])
{
udp_out_port_array = [NSArray new];
udp_out_port_array = [NSMutableArray new];
}
}

View file

@ -63,7 +63,6 @@ static void __objc_class_add_protocols (Class class,
struct objc_protocol_list* protos);
#endif
static BOOL class_is_kind_of(Class self, Class class);
static void check_class_methods(Class class);
/* xxx consider using sendmsg.c:__objc_update_dispatch_table_for_class,
but, I think it will be slower than the current method. */
@ -205,6 +204,7 @@ behavior_class_add_methods (Class class,
the dtable sarray, but if it isn't, let
__objc_install_dispatch_table_for_class do it. */
#ifdef HAVE_OBJC_GET_UNINSTALLED_DTABLE
if (class->dtable != objc_get_uninstalled_dtable())
{
sarray_at_put_safe (class->dtable,
@ -214,6 +214,7 @@ behavior_class_add_methods (Class class,
fprintf(stderr, "\tinstalled method\n");
}
else
#endif
{
if (behavior_debug)
fprintf(stderr, "\tappended method\n");
@ -427,34 +428,3 @@ static BOOL class_is_kind_of(Class self, Class aClassObject)
return YES;
return NO;
}
void
check_class_methods(Class class)
{
int counter;
MethodList_t mlist;
if (class->dtable == objc_get_uninstalled_dtable())
return;
for (mlist = class->methods; mlist; mlist = mlist->method_next)
{
counter = mlist->method_count - 1;
while (counter >= 0)
{
Method_t method = &(mlist->method_list[counter]);
IMP imp = sarray_get(class->dtable,
(size_t)method->method_name->sel_id);
NSCAssert((imp == method->method_imp), NSInvalidArgumentException);
sarray_at_put_safe (class->dtable,
(sidx) method->method_name->sel_id,
method->method_imp);
counter -= 1;
}
}
if (class->super_class)
check_class_methods(class->super_class);
(void) &check_class_methods; /* to prevent compiler warning about unused */
}

View file

@ -28,779 +28,5 @@
; License along with this library; if not, write to the Free
; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
;
LIBRARY libgstep
LIBRARY libgnustep-base
EXPORTS
__objc_class_name_Archiver
__objc_class_name_Unarchiver
__objc_class_name_Array
__objc_class_name_ConstantArray
__objc_class_name_Bag
__objc_class_name_BinaryCStream
__objc_class_name_BinaryTree
__objc_class_name_BinaryTreeNode
__objc_class_name_CircularArray
__objc_category_name_ConstantCollection_ArchivingHelpers
__objc_category_name_ConstantCollection_DeallocationHelpers
__objc_class_name_Collection
__objc_class_name_ConstantCollection
__objc_class_name_Enumerator
__objc_category_name_NSObject_ConnectedCoderCallbacks
__objc_class_name_ConnectedDecoder
__objc_class_name_ConnectedEncoder
__objc_category_name_Coder_NSArchiverCompatibility
__objc_category_name_Coder_NSCoderCompatibility
__objc_class_name_Coder
__objc_class_name_CStream
__objc_class_name_Decoder
__objc_class_name_DelegatePool
__objc_class_name_Dictionary
__objc_class_name_Encoder
__objc_class_name_GapArray
__objc_class_name_Heap
__objc_class_name_ConstantIndexedCollection
__objc_class_name_IndexedCollection
__objc_class_name_ReverseEnumerator
__objc_class_name_ArgframeInvocation
__objc_class_name_Invocation
__objc_class_name_MethodInvocation
__objc_class_name_ObjectFunctionInvocation
__objc_class_name_ObjectMethodInvocation
__objc_class_name_VoidFunctionInvocation
__objc_class_name_ConstantKeyedCollection
__objc_class_name_KeyEnumerator
__objc_class_name_KeyedCollection
__objc_class_name_LinkedList
__objc_class_name_LinkedListNode
__objc_class_name_Magnitude
__objc_class_name_MappedCollector
__objc_class_name_MemoryStream
inchar_func
outchar_func
unchar_func
__objc_category_name_NotificationDispatcher_OpenStepCompat
__objc_class_name_NotificationDispatcher
__objc_class_name_NotificationInvocation
__objc_class_name_NotificationPerformer
__objc_class_name_NotificationRequest
__objc_class_name_OrderedCollection
__objc_class_name_InPacket
__objc_class_name_InPort
__objc_class_name_OutPacket
__objc_class_name_OutPort
__objc_class_name_Port
__objc_category_name_NSObject_ForProxy
__objc_category_name_Protocol_RemoteSelfCoding
__objc_class_name_Queue
__objc_class_name_Random
__objc_class_name_RawCStream
__objc_class_name_RBTree
__objc_class_name_RBTreeNode
__objc_class_name_RNGAdditiveCongruential
__objc_class_name_RNGBerkeley
__objc_category_name_NSObject_PerformingAfterDelay
__objc_category_name_RunLoop_GNUstepExtensions
__objc_class_name_FdInfo
__objc_class_name_RunLoop
__objc_class_name_Set
__objc_class_name_SplayTree
__objc_class_name_Stack
__objc_class_name_StdioStream
__objc_class_name_Stream
__objc_class_name_TcpInPacket
__objc_class_name_TcpInPort
__objc_class_name_TcpOutPacket
__objc_class_name_TcpOutPort
__objc_class_name_TextCStream
__objc_class_name_Time
gettimeofday
times
__objc_class_name_UdpInPacket
__objc_class_name_UdpInPort
__objc_class_name_UdpOutPort
behavior_class_add_category
behavior_class_add_class
behavior_class_add_methods
behavior_set_debug
class_add_behavior
pl_create_buffer
pl_delete_buffer
pl_flush_buffer
pl_init_buffer
pl_load_buffer_state
pl_scan_buffer
pl_scan_bytes
pl_scan_string
pl_switch_to_buffer
pllex
plrestart
plwrap
str2data
strdup
unescstr
sf_create_buffer
sf_delete_buffer
sf_flush_buffer
sf_init_buffer
sf_load_buffer_state
sf_scan_buffer
sf_scan_bytes
sf_scan_string
sf_switch_to_buffer
sflex
sfrestart
sfwrap
ostream_at_eos
ostream_close
ostream_close_memory
ostream_flush
ostream_get_memory_buffer
ostream_getc
ostream_gets
ostream_map_file
ostream_open_descriptor
ostream_open_memory
ostream_printf
ostream_putc
ostream_read
ostream_save_to_file
ostream_scanf
ostream_seek
ostream_tell
ostream_ungetc
ostream_vprintf
ostream_vscanf
ostream_write
o_array_all_elements
o_array_all_elements_ascending
o_array_all_elements_descending
o_array_alloc
o_array_alloc_with_zone
o_array_ascending_enumerator
o_array_at_index_put_element
o_array_capacity
o_array_check
o_array_contains_element
o_array_count
o_array_dealloc
o_array_descending_enumerator
o_array_element_at_index
o_array_empty
o_array_enumerator
o_array_enumerator_next_element
o_array_enumerator_next_index
o_array_enumerator_next_index_and_element
o_array_index_of_element
o_array_init
o_array_init_from_array
o_array_init_with_callbacks
o_array_is_empty
o_array_is_equal_to_array
o_array_map_elements
o_array_of_char_p
o_array_of_id
o_array_of_int
o_array_of_non_owned_void_p
o_array_of_owned_void_p
o_array_remove_element
o_array_remove_element_at_index
o_array_remove_element_known_present
o_array_with_callbacks
o_array_with_zone
o_array_with_zone_with_callbacks
o_hash_init_from_array
_o_array_alloc_with_zone
_o_array_copy_with_zone
_o_array_dealloc
_o_array_description
_o_array_set_serial_number
o_array_extra
o_array_extra_callbacks
o_array_magic_number
o_array_name
o_array_serial_number
o_array_set_extra
o_array_set_extra_callbacks
o_array_set_name
o_array_unset_extra
o_array_unset_name
o_array_zone
o_array_element_callbacks
o_array_not_an_element_marker
o_callbacks_standard
o_callbacks_standardize
o_compare
o_describe
o_hash
o_is_equal
o_release
o_retain
o_char_p_compare
o_char_p_describe
o_char_p_hash
o_char_p_is_equal
o_char_p_release
o_char_p_retain
o_id_compare
o_id_describe
o_id_hash
o_id_is_equal
o_id_release
o_id_retain
o_int_compare
o_int_describe
o_int_hash
o_int_is_equal
o_int_release
o_int_retain
o_int_p_compare
o_int_p_describe
o_int_p_hash
o_int_p_is_equal
o_int_p_release
o_int_p_retain
o_non_owned_void_p_compare
o_non_owned_void_p_describe
o_non_owned_void_p_hash
o_non_owned_void_p_is_equal
o_non_owned_void_p_release
o_non_owned_void_p_retain
o_owned_void_p_compare
o_owned_void_p_describe
o_owned_void_p_hash
o_owned_void_p_is_equal
o_owned_void_p_release
o_owned_void_p_retain
_o_hash_hash
_o_hash_retain
o_callbacks_for_hash
o_hash_add_element
o_hash_add_element_if_absent
o_hash_add_element_known_absent
o_hash_all_elements
o_hash_alloc
o_hash_alloc_with_zone
o_hash_capacity
o_hash_check
o_hash_contains_element
o_hash_contains_hash
o_hash_copy
o_hash_copy_with_zone
o_hash_count
o_hash_dealloc
o_hash_description
o_hash_element
o_hash_empty
o_hash_enumerator_for_hash
o_hash_enumerator_next_element
o_hash_init
o_hash_init_from_hash
o_hash_init_with_callbacks
o_hash_intersect_hash
o_hash_intersects_hash
o_hash_is_empty
o_hash_is_equal_to_hash
o_hash_map_elements
o_hash_minus_hash
o_hash_of_char_p
o_hash_of_id
o_hash_of_int
o_hash_of_int_p
o_hash_of_non_owned_void_p
o_hash_of_owned_void_p
o_hash_remove_element
o_hash_replace_element
o_hash_resize
o_hash_rightsize
o_hash_union_hash
o_hash_with_callbacks
o_hash_with_zone
o_hash_with_zone_with_callbacks
_o_hash_alloc_with_zone
_o_hash_copy_with_zone
_o_hash_dealloc
_o_hash_description
_o_hash_set_serial_number
o_hash_extra
o_hash_extra_callbacks
o_hash_magic_number
o_hash_name
o_hash_serial_number
o_hash_set_extra
o_hash_set_extra_callbacks
o_hash_set_name
o_hash_unset_extra
o_hash_unset_name
o_hash_zone
o_hash_element_callbacks
o_hash_not_an_element_marker
_o_list_free_node
o_hash_init_from_list
o_list
o_list_all_elements
o_list_alloc
o_list_alloc_with_zone
o_list_append_element
o_list_append_element_if_absent
o_list_append_list
o_list_at_index_insert_element
o_list_at_index_insert_element_if_absent
o_list_at_index_insert_list
o_list_capacity
o_list_check
o_list_contains_element
o_list_copy
o_list_copy_with_zone
o_list_count
o_list_dealloc
o_list_element
o_list_empty
o_list_enumerator
o_list_enumerator_next_element
o_list_first_element
o_list_forward_enumerator
o_list_init
o_list_init_from_list
o_list_init_with_callbacks
o_list_is_empty
o_list_is_equal_to_list
o_list_last_element
o_list_map_elements
o_list_nth_element
o_list_of_char_p
o_list_of_id
o_list_of_int
o_list_of_non_owned_void_p
o_list_of_owned_void_p
o_list_prepend_element
o_list_prepend_element_if_absent
o_list_prepend_list
o_list_remove_element
o_list_remove_first_element
o_list_remove_last_element
o_list_remove_nth_element
o_list_remove_nth_occurrance_of_element
o_list_replace_element
o_list_replace_first_element
o_list_replace_last_element
o_list_replace_nth_element
o_list_replace_nth_occurrance_of_element
o_list_reverse_enumerator
o_list_with_callbacks
o_list_with_zone
o_list_with_zone_with_callbacks
_o_list_alloc_with_zone
_o_list_copy_with_zone
_o_list_dealloc
_o_list_description
_o_list_set_serial_number
o_list_extra
o_list_extra_callbacks
o_list_magic_number
o_list_name
o_list_serial_number
o_list_set_extra
o_list_set_extra_callbacks
o_list_set_name
o_list_unset_extra
o_list_unset_name
o_list_zone
o_list_element_callbacks
o_list_not_an_element_marker
_o_map_enumerator_next_node
_o_map_hash
_o_map_retain
o_callbacks_for_map
o_map_all_keys
o_map_all_keys_and_values
o_map_all_values
o_map_alloc
o_map_alloc_with_zone
o_map_at_key_put_value
o_map_at_key_put_value_if_absent
o_map_at_key_put_value_known_absent
o_map_capacity
o_map_check
o_map_contains_key
o_map_contains_map
o_map_contains_value
o_map_copy
o_map_copy_with_zone
o_map_count
o_map_dealloc
o_map_description
o_map_empty
o_map_enumerator_for_map
o_map_enumerator_next_key
o_map_enumerator_next_key_and_value
o_map_enumerator_next_value
o_map_init
o_map_init_from_map
o_map_init_with_callbacks
o_map_intersect_map
o_map_intersects_map
o_map_is_empty
o_map_is_equal_to_map
o_map_key_and_value_at_key
o_map_key_at_key
o_map_keys_contain_keys_of_map
o_map_keys_intersect_keys_of_map
o_map_map_keys
o_map_map_values
o_map_minus_map
o_map_node_for_key
o_map_of_char_p
o_map_of_char_p_to_id
o_map_of_char_p_to_int
o_map_of_char_p_to_non_owned_void_p
o_map_of_id
o_map_of_id_to_char_p
o_map_of_id_to_int
o_map_of_id_to_non_owned_void_p
o_map_of_int
o_map_of_int_to_char_p
o_map_of_int_to_id
o_map_of_int_to_non_owned_void_p
o_map_of_non_owned_void_p
o_map_remove_key
o_map_remove_node
o_map_replace_key
o_map_resize
o_map_rightsize
o_map_union_map
o_map_value_at_key
o_map_with_callbacks
o_map_with_zone
o_map_with_zone_with_callbacks
_o_map_alloc_with_zone
_o_map_copy_with_zone
_o_map_dealloc
_o_map_description
_o_map_set_serial_number
o_map_extra
o_map_extra_callbacks
o_map_magic_number
o_map_name
o_map_serial_number
o_map_set_extra
o_map_set_extra_callbacks
o_map_set_name
o_map_unset_extra
o_map_unset_name
o_map_zone
o_map_key_callbacks
o_map_not_a_key_marker
o_map_not_a_value_marker
o_map_value_callbacks
gnustep_base_version
o_gcc_version
plerror
plparse
sfSetDict
sferror
sfparse
method_types_get_next_argument
method_types_get_number_of_arguments
method_types_get_size_of_register_arguments
method_types_get_size_of_stack_arguments
mframe_build_return
mframe_dissect_call
mframe_do_call
md5_buffer
md5_init_ctx
md5_process_block
md5_read_ctx
md5_stream
_o_next_power_of_two
_o_number_allocated
_o_number_deallocated
_o_number_serialized
o_vscanf
__objc_class_name_HashTable
__objc_class_name_List
CopyStringBuffer
__objc_class_name_NXStringTable
__objc_class_name_Storage
NXlex__create_buffer
NXlex__delete_buffer
NXlex__flush_buffer
NXlex__init_buffer
NXlex__load_buffer_state
NXlex__scan_buffer
NXlex__scan_bytes
NXlex__scan_string
NXlex__switch_to_buffer
NXlex_lex
NXlex_restart
NXlex_wrap
NSAllocateObject
__objc_category_name_NSObject_NSArchiver
__objc_class_name_NSArchiver
__objc_class_name_NSUnarchiver
__objc_class_name_NSArray
__objc_class_name_NSArrayEnumerator
__objc_class_name_NSArrayEnumeratorReverse
__objc_class_name_NSArrayNonCore
__objc_class_name_NSMutableArray
__objc_class_name_NSMutableArrayNonCore
__objc_class_name_NSAssertionHandler
__objc_class_name_NSAutoreleasePool
__objc_class_name_NSBitmapCharSet
__objc_class_name_NSMutableBitmapCharSet
__objc_category_name_NSBundle_Private
__objc_class_name_NSBundle
_bundle_load_callback
objc_executable_location
__objc_category_name_NSCalendarDate_GregorianDate
__objc_class_name_NSCalendarDate
_NS_id_describe
_NS_id_hash
_NS_id_is_equal
_NS_id_release
_NS_id_retain
_NS_int_describe
_NS_int_hash
_NS_int_is_equal
_NS_int_p_describe
_NS_int_p_hash
_NS_int_p_is_equal
_NS_int_p_release
_NS_int_p_retain
_NS_int_release
_NS_int_retain
_NS_non_owned_void_p_describe
_NS_non_owned_void_p_hash
_NS_non_owned_void_p_is_equal
_NS_non_owned_void_p_release
_NS_non_owned_void_p_retain
_NS_non_retained_id_describe
_NS_non_retained_id_hash
_NS_non_retained_id_is_equal
_NS_non_retained_id_release
_NS_non_retained_id_retain
_NS_owned_void_p_describe
_NS_owned_void_p_hash
_NS_owned_void_p_is_equal
_NS_owned_void_p_release
_NS_owned_void_p_retain
__objc_class_name_NSCharacterSet
__objc_class_name_NSMutableCharacterSet
__objc_class_name_NSCoder
__objc_class_name_NSCoderNonCore
NSCopyObject
__objc_class_name_NSConcreteValue
__objc_class_name_NSCountedSet
__objc_class_name_NSData
__objc_class_name_NSMutableData
__objc_class_name_NSDate
NSDeallocateObject
__objc_class_name_NSDictionary
__objc_class_name_NSMutableDictionary
__objc_class_name_NSEnumerator
_NSAddHandler
_NSRemoveHandler
__objc_class_name_NSException
__objc_category_name_NSDictionary_NSFileAttributes
__objc_class_name_NSDirectoryEnumerator
__objc_class_name_NSFileManager
NSContainsRect
NSDivideRect
NSEqualPoints
NSEqualRects
NSEqualSizes
NSHeight
NSInsetRect
NSIntegralRect
NSIntersectionRect
NSIntersectsRect
NSIsEmptyRect
NSMakePoint
NSMakeRect
NSMakeSize
NSMaxX
NSMaxY
NSMidX
NSMidY
NSMinX
NSMinY
NSMouseInRect
NSOffsetRect
NSPointInRect
NSStringFromPoint
NSStringFromRect
NSStringFromSize
NSUnionRect
NSWidth
__objc_class_name_NSGArchiver
__objc_class_name_NSGArchiverNullCStream
__objc_class_name_NSGUnarchiver
__objc_class_name_NSGArray
__objc_class_name_NSGMutableArray
__objc_class_name_NSGCountedSet
__objc_class_name_NSGCountedSetEnumerator
__objc_class_name_NSGCString
__objc_class_name_NSGMutableCString
__objc_class_name_NSGData
__objc_class_name_NSGMutableData
__objc_class_name_NSGDictionary
__objc_class_name_NSGDictionaryKeyEnumerator
__objc_class_name_NSGDictionaryObjectEnumerator
__objc_class_name_NSGMutableDictionary
__objc_class_name_NSGMutableSet
__objc_class_name_NSGSet
__objc_class_name_NSGSetEnumerator
NSAllHashTableObjects
NSCompareHashTables
NSCopyHashTableWithZone
NSCountHashTable
NSCreateHashTable
NSCreateHashTableWithZone
NSEnumerateHashTable
NSFreeHashTable
NSHashGet
NSHashInsert
NSHashInsertIfAbsent
NSHashInsertKnownAbsent
NSHashRemove
NSNextHashEnumeratorItem
NSResetHashTable
NSStringFromHashTable
_NSHT_compare
_NSHT_describe
_NSHT_extra_describe
_NSHT_extra_release
_NSHT_extra_retain
_NSHT_hash
_NSHT_is_equal
_NSHT_release
_NSHT_retain
__objc_class_name_NSInvocation
__objc_class_name_NSConditionLock
__objc_class_name_NSLock
__objc_class_name_NSRecursiveLock
NSLog
NSLogv
NSAllMapTableKeys
NSAllMapTableValues
NSCompareMapTables
NSCopyMapTableWithZone
NSCountMapTable
NSCreateMapTable
NSCreateMapTableWithZone
NSEnumerateMapTable
NSFreeMapTable
NSMapGet
NSMapInsert
NSMapInsertIfAbsent
NSMapInsertKnownAbsent
NSMapMember
NSMapRemove
NSNextMapEnumeratorPair
NSResetMapTable
NSStringFromMapTable
_NSMT_extra_describe
_NSMT_extra_release
_NSMT_extra_retain
_NSMT_key_compare
_NSMT_key_describe
_NSMT_key_hash
_NSMT_key_is_equal
_NSMT_key_release
_NSMT_key_retain
_NSMT_value_describe
_NSMT_value_release
_NSMT_value_retain
__objc_class_name_NSMethodSignature
__objc_class_name_NSNotification
__objc_class_name_NSNotificationCenter
__objc_class_name_NSNumber
NSClassFromString
NSSelectorFromString
NSStringFromClass
NSStringFromSelector
NSDecrementExtraRefCountWasZero
NSIncrementExtraRefCount
NSShouldRetainWithZone
__objc_category_name_NSObject_GNU
__objc_category_name_NSObject_NEXTSTEP
__objc_class_name_NSObject
NSAllocateMemoryPages
NSCopyMemoryPages
NSDeallocateMemoryPages
NSLogPageSize
NSPageSize
NSRealMemoryAvailable
NSRoundDownToMultipleOfPageSize
NSRoundUpToMultipleOfPageSize
__objc_class_name_NSProcessInfo
__objc_class_name__NSConcreteProcessInfo
NSEqualRanges
NSIntersectionRange
NSMakeRange
NSStringFromRange
NSUnionRange
__objc_class_name_NSRunLoop
__objc_class_name_NSScanner
__objc_class_name_NSMutableSet
__objc_class_name_NSSet
__objc_class_name_NSMutableString
__objc_class_name_NSString
__objc_class_name_NXConstantString
__objc_class_name_NSThread
__objc_class_name_NSTimer
__objc_category_name_NSConcreteTimeZoneDetail_NSCoding
__objc_category_name_NSConcreteTimeZoneDetail_NSCopying
__objc_category_name_NSTimeZone_Archiving
__objc_category_name_NSTimeZone_NSCopying
__objc_class_name_NSConcreteTimeZoneDetail
__objc_class_name_NSTimeZone
__objc_class_name_NSTimeZoneDetail
NSHomeDirectory
NSHomeDirectoryForUser
NSUserName
__objc_class_name_NSUserDefaults
__objc_class_name_NSValue
__objc_class_name_NSValueDecoder
NSCreateChildZone
NSCreateZone
NSDefaultMallocZone
NSDestroyZone
NSMallocCheck
NSMergeZone
NSNameZone
NSSetZoneName
NSZoneCalloc
NSZoneFree
NSZoneFromPointer
NSZoneMalloc
NSZoneName
NSZonePtrInfo
NSZoneRealloc
addtolist
delfromlist
searchheap
lstat
objc_find_executable
readlink
objc_load_module
objc_load_modules
objc_unload_module
objc_unload_modules
__objc_class_name_NSNonretainedObjectValue
__objc_class_name_NSPointValue
__objc_class_name_NSPointerValue
__objc_class_name_NSRectValue
__objc_class_name_NSSizeValue
__objc_class_name_NSBoolNumber
__objc_class_name_NSUCharNumber
__objc_class_name_NSCharNumber
__objc_class_name_NSUShortNumber
__objc_class_name_NSShortNumber
__objc_class_name_NSUIntNumber
__objc_class_name_NSIntNumber
__objc_class_name_NSULongNumber
__objc_class_name_NSLongNumber
__objc_class_name_NSULongLongNumber
__objc_class_name_NSLongLongNumber
__objc_class_name_NSFloatNumber
__objc_class_name_NSDoubleNumber

View file

@ -85,8 +85,13 @@ objc_invalidate_dtable(Class class)
{
Class s;
#ifdef HAVE_OBJC_GET_UNINSTALLED_DTABLE
if (class->dtable == objc_get_uninstalled_dtable())
return;
#else
if (class->dtable == NULL)
return;
#endif
sarray_free(class->dtable);
__objc_install_premature_dtable(class);
for (s=class->subclass_list; s; s=s->sibling_class)

View file

@ -127,6 +127,9 @@
/* Define if your Obj-C compiler calls +load methods before main */
#undef HAVE_LOAD_METHOD
/* Define if objc-api.h defines this function */
#undef HAVE_OBJC_GET_UNINSTALLED_DTABLE
/* Define if your Lib C defines program_invocation_name */
#undef HAVE_PROGRAM_INVOCATION_NAME

881
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -169,9 +169,44 @@ AC_DEFINE_UNQUOTED(NeXT_runtime, $NeXT_runtime)
AC_DEFINE_UNQUOTED(NeXT_cc, $NeXT_cc)
AC_SUBST(NEXT_INCLUDES)
#--------------------------------------------------------------------
# Check for alternate Objective-C libraries
#--------------------------------------------------------------------
if test x$GNUSTEP_SYSTEM_ROOT != "x"; then
gnustep_obj_dir=${target_cpu}/${target_os}/${ac_cv_library_combo}
# May have a private version of libobj installed here
if test -f $GNUSTEP_SYSTEM_ROOT/Headers/objc/objc.h; then
CPPFLAGS="$CPPFLAGS -I$GNUSTEP_SYSTEM_ROOT/Headers"
LDFLAGS="$LDFLAGS -L$GNUSTEP_SYSTEM_ROOT/Libraries/$gnustep_obj_dir"
echo "Using Objective-C library from $GNUSTEP_SYSTEM_ROOT, if available"
fi
fi
#--------------------------------------------------------------------
# Check if Objective-C is installed
#--------------------------------------------------------------------
AC_MSG_CHECKING(for alternate objc library)
AC_CACHE_VAL(gs_cv_objc_libdir,
[dnl
gs_cv_objc_libdir=NONE
if test -f $GNUSTEP_SYSTEM_ROOT/Headers/objc/objc.h; then
clean_target_os=`$GNUSTEP_SYSTEM_ROOT/Makefiles/clean_os.sh $target_os`
clean_target_cpu=`$GNUSTEP_SYSTEM_ROOT/Makefiles/clean_cpu.sh $target_cpu`
obj_dir=$clean_target_cpu/$clean_target_os/$ac_cv_library_combo
if test -f $GNUSTEP_SYSTEM_ROOT/Libraries/$obj_dir/libobjc.a; then
gs_cv_objc_libdir=$GNUSTEP_SYSTEM_ROOT/Libraries/$obj_dir
else
gs_cv_objc_libdir=NONE
fi
fi
])
AC_MSG_RESULT($gs_cv_objc_libdir)
if test "$gs_cv_objc_libdir" != "NONE"; then
CPPFLAGS="$CPPFLAGS -I$GNUSTEP_SYSTEM_ROOT/Headers/"
LDFLAGS="$LDFLAGS -L$gs_cv_objc_libdir"
fi
AC_CHECK_HEADERS(objc/objc.h)
if test $ac_cv_header_objc_objc_h = no; then
echo "Could not find Objective-C headers"
@ -472,9 +507,13 @@ CPPFLAGS="$saved_CPPFLAGS"
#--------------------------------------------------------------------
# This function needed by NSLock.m for conditioned wait
# get_uninstalled_dtable used by behavior.m and objc-load.m
#--------------------------------------------------------------------
AC_CHECK_FUNCS(objc_condition_timedwait)
AC_EGREP_HEADER(objc_get_uninstalled_dtable, objc/objc-api.h,
AC_DEFINE(HAVE_OBJC_GET_UNINSTALLED_DTABLE),)
LIBS="$saved_LIBS"
#--------------------------------------------------------------------