8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 04:43:03 +01:00

Do more AMD64 fixes. libfbstatic builds and can do some basic stuff now

This commit is contained in:
skidder 2004-01-12 06:58:27 +00:00
parent d1b0a27946
commit 6973b067ea
9 changed files with 30 additions and 22 deletions

View File

@ -15,13 +15,11 @@
# All Rights Reserved. # All Rights Reserved.
# Contributor(s): ______________________________________. # Contributor(s): ______________________________________.
# Start of file prefix.linux: $(VERSION) $(PLATFORM) # Start of file prefix.linux: $(VERSION) $(PLATFORM)
#$Id: prefix.linux_amd64,v 1.1 2004-01-12 04:57:45 skidder Exp $ #$Id: prefix.linux_amd64,v 1.2 2004-01-12 06:58:23 skidder Exp $
# 2 Oct 2002, Nickolay Samofatov - Major cleanup # 2 Oct 2002, Nickolay Samofatov - Major cleanup
PROD_FLAGS=-ggdb -O3 -fno-omit-frame-pointer -DNDEBUG -DLINUX -pipe -MMD -fPIC -fmessage-length=0 PROD_FLAGS=-ggdb -O3 -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -pipe -MMD -fPIC -fmessage-length=0
# uncomment if you need PROD_BUILD engine that is possible to debug DEV_FLAGS=-ggdb -DLINUX -DAMD64 -DDEBUG_GDS_ALLOC -pipe -MMD -p -fPIC -Wall -Wno-switch -Wno-parentheses -Wno-unknown-pragmas -Wno-unused-variable -fmessage-length=0
#PROD_FLAGS=-ggdb -O3 -march=i586 -mcpu=i686 -fno-builtin -DNDEBUG -DLINUX -pipe -MMD -fPIC -fmessage-length=0
DEV_FLAGS=-ggdb -DLINUX -DDEBUG_GDS_ALLOC -pipe -MMD -p -fPIC -Wall -Wno-switch -Wno-parentheses -Wno-unknown-pragmas -Wno-unused-variable -fmessage-length=0
OS_ServerFiles=inet_server.cpp OS_ServerFiles=inet_server.cpp

View File

@ -42,7 +42,7 @@ inline SSHORT get_short(const SCHAR* p)
* *
**************************************/ **************************************/
#if defined(i386) || defined(I386) || defined(_M_IX86) || defined(VMS) #if defined(i386) || defined(I386) || defined(_M_IX86) || defined(VMS) || defined(AMD64)
// For IA32 (little-endian) this optimization is a _very_ large speed-up! // For IA32 (little-endian) this optimization is a _very_ large speed-up!
// According to CTO32L definition in common.h this trick works for VAX/VMS // According to CTO32L definition in common.h this trick works for VAX/VMS
return *reinterpret_cast<const SSHORT*>(p); return *reinterpret_cast<const SSHORT*>(p);
@ -76,7 +76,7 @@ inline SLONG get_long(const SCHAR* p)
* *
**************************************/ **************************************/
#if defined(i386) || defined(I386) || defined(_M_IX86) || defined(VMS) #if defined(i386) || defined(I386) || defined(_M_IX86) || defined(VMS) || defined(AMD64)
// For IA32 (little-endian) this optimization is a _very_ large speed-up! // For IA32 (little-endian) this optimization is a _very_ large speed-up!
return *reinterpret_cast<const SLONG*>(p); return *reinterpret_cast<const SLONG*>(p);
#else #else
@ -112,7 +112,7 @@ inline SLONG get_long(const UCHAR* p)
* *
**************************************/ **************************************/
#if defined(i386) || defined(I386) || defined(_M_IX86) || defined(VMS) #if defined(i386) || defined(I386) || defined(_M_IX86) || defined(VMS) || defined(AMD64)
// For IA32 (little-endian) this optimization is a _very_ large speed-up! // For IA32 (little-endian) this optimization is a _very_ large speed-up!
return *reinterpret_cast<const SLONG*>(p); return *reinterpret_cast<const SLONG*>(p);
#else #else
@ -141,7 +141,7 @@ inline SSHORT gather_short(const SCHAR*& p)
* *
**************************************/ **************************************/
#if defined(i386) || defined(I386) || defined(_M_IX86) || defined(VMS) #if defined(i386) || defined(I386) || defined(_M_IX86) || defined(VMS) || defined(AMD64)
// For IA32 (little-endian) this optimization is a _very_ large speed-up! // For IA32 (little-endian) this optimization is a _very_ large speed-up!
const SSHORT value = *reinterpret_cast<const SSHORT*>(p); const SSHORT value = *reinterpret_cast<const SSHORT*>(p);
p += 2; p += 2;
@ -177,7 +177,7 @@ inline SLONG gather_long(const SCHAR*& p)
* *
**************************************/ **************************************/
#if defined(i386) || defined(I386) || defined(_M_IX86) || defined(VMS) #if defined(i386) || defined(I386) || defined(_M_IX86) || defined(VMS) || defined(AMD64)
// For IA32 (little-endian) this optimization is a _very_ large speed-up! // For IA32 (little-endian) this optimization is a _very_ large speed-up!
const SLONG value = *reinterpret_cast<const SLONG*>(p); const SLONG value = *reinterpret_cast<const SLONG*>(p);
p += 4; p += 4;

View File

@ -49,7 +49,7 @@
* *
*/ */
/* /*
$Id: common.h,v 1.96 2004-01-06 10:27:52 robocop Exp $ $Id: common.h,v 1.97 2004-01-12 06:58:26 skidder Exp $
*/ */
#ifndef JRD_COMMON_H #ifndef JRD_COMMON_H
@ -117,6 +117,10 @@ $Id: common.h,v 1.96 2004-01-06 10:27:52 robocop Exp $
#define UNIX 1 #define UNIX 1
#define IEEE 1 #define IEEE 1
#ifdef AMD64
#define IMPLEMENTATION isc_info_db_impl_linux_amd64 /* 66 next higher unique number, See you later */
#endif
#ifdef i386 #ifdef i386
#define I386 1 #define I386 1
#define IMPLEMENTATION isc_info_db_impl_i386 /* 60 next higher unique number, See you later */ #define IMPLEMENTATION isc_info_db_impl_i386 /* 60 next higher unique number, See you later */

View File

@ -33,7 +33,7 @@
* *
*/ */
/* /*
$Id: ibase.h,v 1.63 2003-12-27 22:03:27 skidder Exp $ $Id: ibase.h,v 1.64 2004-01-12 06:58:26 skidder Exp $
*/ */
#ifndef JRD_IBASE_H #ifndef JRD_IBASE_H
@ -1576,6 +1576,7 @@ enum info_db_implementations
isc_info_db_impl_sinixz = 64, isc_info_db_impl_sinixz = 64,
isc_info_db_impl_linux_sparc = 65, isc_info_db_impl_linux_sparc = 65,
isc_info_db_impl_linux_amd64 = 66,
isc_info_db_impl_last_value /* Leave this LAST! */ isc_info_db_impl_last_value /* Leave this LAST! */
}; };

View File

@ -35,10 +35,9 @@ typedef char CHAR;
typedef char SCHAR; typedef char SCHAR;
typedef unsigned char BYTE; typedef unsigned char BYTE;
#pragma FB_COMPILER_MESSAGE("64-bit readiness problem!") typedef unsigned int ULONG;
typedef unsigned long ULONG; typedef int LONG;
typedef long LONG; typedef signed int SLONG;
typedef signed long SLONG;
#endif #endif
typedef SSHORT(*FPTR_short) (); typedef SSHORT(*FPTR_short) ();

View File

@ -2607,7 +2607,7 @@ ISC_STATUS GDS_GET_SLICE(ISC_STATUS* user_status,
reinterpret_cast<BID>(array_id), reinterpret_cast<BID>(array_id),
sdl, sdl,
param_length, param_length,
reinterpret_cast<const long*>(param), reinterpret_cast<const SLONG*>(param),
slice_length, slice); slice_length, slice);
} }
catch (const std::exception&) catch (const std::exception&)
@ -2802,7 +2802,7 @@ ISC_STATUS GDS_PUT_SLICE(ISC_STATUS* user_status,
reinterpret_cast<BID>(array_id), reinterpret_cast<BID>(array_id),
sdl, sdl,
param_length, param_length,
reinterpret_cast<const long*>(param), slice_length, slice); reinterpret_cast<const SLONG*>(param), slice_length, slice);
} }
catch (const std::exception&) catch (const std::exception&)
{ {

View File

@ -132,6 +132,7 @@ static bool find_type(SLONG, WIN*, PAG*, USHORT, USHORT, UCHAR**,
21 FreeBSD/i386 21 FreeBSD/i386
22 NetBSD/i386 22 NetBSD/i386
23 Darwin/PowerPC 23 Darwin/PowerPC
24 LINUX on AMD64 systems
*/ */
@ -191,6 +192,10 @@ static bool find_type(SLONG, WIN*, PAG*, USHORT, USHORT, UCHAR**,
#define CLASS 23 #define CLASS 23
#endif #endif
#if defined LINUX && defined AMD64
#define CLASS 24
#endif
// CVC: Since nobody checks the result from this function (strange!), I changed // CVC: Since nobody checks the result from this function (strange!), I changed
// bool to void as the return type but left the result returned as comment. // bool to void as the return type but left the result returned as comment.

View File

@ -250,7 +250,8 @@ static const TEXT* const impl_implementation[] = {
"Firebird/NetBSD/i386", /* 62 */ "Firebird/NetBSD/i386", /* 62 */
"Firebird/Darwin/PowerPC", /* 63 */ "Firebird/Darwin/PowerPC", /* 63 */
"Firebird/SINIX-Z", /* 64 */ "Firebird/SINIX-Z", /* 64 */
"Firebird/linux Sparc" /* 65 */ "Firebird/linux Sparc", /* 65 */
"Firebird/linux AMD64" /* 66 */
}; };

View File

@ -39,7 +39,7 @@
// The simpliest way to check it is to issue // The simpliest way to check it is to issue
// "select abs(2.0/3.0) from rdb$database" from correct client // "select abs(2.0/3.0) from rdb$database" from correct client
// It will return big strange value in case of invalid define // It will return big strange value in case of invalid define
#if defined(i386) || defined(I386) || defined(_M_IX86) #if defined(i386) || defined(I386) || defined(_M_IX86) || defined(AMD64)
#define SWAP_DOUBLE #define SWAP_DOUBLE
#elif defined(sparc) || defined(PowerPC) #elif defined(sparc) || defined(PowerPC)
#undef SWAP_DOUBLE #undef SWAP_DOUBLE
@ -753,10 +753,10 @@ bool_t xdr_u_long(XDR * xdrs, u_long * ip)
switch (xdrs->x_op) switch (xdrs->x_op)
{ {
case XDR_ENCODE: case XDR_ENCODE:
return PUTLONG(xdrs, reinterpret_cast < long *>(ip)); return PUTLONG(xdrs, reinterpret_cast<SLONG*>(ip));
case XDR_DECODE: case XDR_DECODE:
if (!GETLONG(xdrs, reinterpret_cast < long *>(ip))) if (!GETLONG(xdrs, reinterpret_cast<SLONG*>(ip)))
return FALSE; return FALSE;
return TRUE; return TRUE;