Fixed varargs support on Solaris.
git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@425 0109f412-320b-0410-ab79-c3e0c5ffbbe6
This commit is contained in:
@@ -190,6 +190,8 @@
|
||||
typedef signed char FLMINT8;
|
||||
#if defined( FLM_GNUC)
|
||||
typedef __builtin_va_list f_va_list;
|
||||
#elif defined( FLM_SOLARIS)
|
||||
typedef void * f_va_list;
|
||||
#else
|
||||
typedef char * f_va_list;
|
||||
#endif
|
||||
@@ -368,15 +370,27 @@
|
||||
(*(type *)(((ap) += f_argsize(type)) - (f_argsize(type))))
|
||||
|
||||
#define f_va_end(ap) ((void)0)
|
||||
#elif defined( FLM_SOLARIS)
|
||||
void * f_va_arg_next(
|
||||
f_va_list * pList);
|
||||
|
||||
#define f_va_start( list, name) \
|
||||
((void)((list) = (f_va_list)&__builtin_va_alist))
|
||||
|
||||
#define f_va_arg( list, type) \
|
||||
(*((type *)f_va_arg_next( &list)))
|
||||
|
||||
#define f_va_end( list) \
|
||||
(void)(list)
|
||||
#else
|
||||
#define f_va_start( list, name) \
|
||||
(list = (f_va_list)&(name) + f_alignedsize( name))
|
||||
((list) = (f_va_list)&(name) + f_alignedsize( name))
|
||||
|
||||
#define f_va_arg( list, type) \
|
||||
(*(type *)((list += f_alignedsize( type)) - f_alignedsize( type)))
|
||||
|
||||
#define f_va_end( list) \
|
||||
(list = (f_va_list)0)
|
||||
((list) = (f_va_list)0)
|
||||
#endif
|
||||
|
||||
// flmnovtbl keeps MS compilers from generating vtables for interfaces
|
||||
|
||||
@@ -100,6 +100,9 @@ RCODE FLMAPI ftkStartup( void)
|
||||
}
|
||||
|
||||
f_memoryInit();
|
||||
|
||||
|
||||
f_assert( sizeof( f_va_list) == sizeof( va_list));
|
||||
|
||||
if( RC_BAD( rc = f_initCharMappingTables()))
|
||||
{
|
||||
|
||||
@@ -1579,6 +1579,17 @@ FLMINT32 posix_atomic_xchg_32(
|
||||
return( i32RetVal);
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
Desc:
|
||||
**********************************************************************/
|
||||
#if defined( FLM_SOLARIS) && !defined( FLM_GNUC)
|
||||
void * f_va_arg_next(
|
||||
f_va_list * pList)
|
||||
{
|
||||
return( __builtin_va_arg_incr( *pList, NULL));
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // FLM_UNIX
|
||||
|
||||
#if defined( FLM_WATCOM_NLM)
|
||||
|
||||
@@ -35,6 +35,7 @@ int main( void)
|
||||
IF_BlockMgr * pBlockMgr = NULL;
|
||||
IF_BTree * pBTree = NULL;
|
||||
FLMUINT32 ui32RootBlkId;
|
||||
char szTmpBuf[ 128];
|
||||
|
||||
if( RC_BAD( rc = ftkStartup()))
|
||||
{
|
||||
@@ -76,6 +77,9 @@ int main( void)
|
||||
|
||||
pBTree->btDeleteTree();
|
||||
pBTree->Release();
|
||||
|
||||
f_sprintf( szTmpBuf, "Hello, World! (You're number %u)\n", 1);
|
||||
f_printf( szTmpBuf);
|
||||
|
||||
Exit:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user