Procházet zdrojové kódy

--- Merging r16105 into '.':
U tests/test/tasmread.pp
--- Merging r16189 into '.':
A tests/test/units/fpcunit/resref2.inc
U tests/test/units/fpcunit/tcresref.pp
A tests/test/units/fpcunit/sllist2.inc
D tests/test/units/fpcunit/resref.inc
D tests/test/units/fpcunit/sllist.inc
--- Merging r16284 into '.':
U rtl/win64/buildrtl.pp
U rtl/win64/Makefile.fpc
C rtl/win64/Makefile
U rtl/freebsd/Makefile.fpc
C rtl/freebsd/Makefile
U rtl/solaris/Makefile.fpc
C rtl/solaris/Makefile
U rtl/darwin/Makefile.fpc
C rtl/darwin/Makefile
A rtl/x86_64/cpu.pp
U rtl/linux/Makefile.fpc
C rtl/linux/Makefile
A tests/test/tcas128.pp
--- Merging r16293 into '.':
U rtl/win/sysutils.pp
--- Merging r16294 into '.':
A tests/webtbs/tw17591.pp
--- Merging r16298 into '.':
U rtl/unix/cwstring.pp
U tests/webtbs/tw17591.pp
--- Merging r16300 into '.':
U packages/dbus/fpmake.pp
U packages/dbus/src/dbus.pas
U packages/dbus/src/dbus-message.inc
U packages/dbus/src/dbus-bus.inc
U packages/dbus/src/dbus-threads.inc
A packages/dbus/src/dbus-misc.inc
U packages/dbus/src/dbus-connection.inc
U packages/dbus/src/dbus-protocol.inc
U packages/dbus/src/dbus-server.inc
U packages/dbus/src/dbus-memory.inc
--- Merging r16301 into '.':
U rtl/objpas/classes/reader.inc
--- Merging r16303 into '.':
U packages/fcl-image/src/fpcanvas.pp
--- Merging r16304 into '.':
U packages/fcl-image/src/fppixlcanv.pp
--- Merging r16308 into '.':
U packages/fcl-image/src/freetype.pp
Summary of conflicts:
Text conflicts: 5

# revisions: 16105,16189,16284,16293,16294,16298,16300,16301,16303,16304,16308
------------------------------------------------------------------------
r16105 | pierre | 2010-10-08 11:04:15 +0200 (Fri, 08 Oct 2010) | 1 line
Changed paths:
M /trunk/tests/test/tasmread.pp

* _GLOBAL_OFFSET_TABLE is not a local label
------------------------------------------------------------------------
------------------------------------------------------------------------
r16189 | michael | 2010-10-19 21:51:59 +0200 (Tue, 19 Oct 2010) | 1 line
Changed paths:
D /trunk/tests/test/units/fpcunit/resref.inc
A /trunk/tests/test/units/fpcunit/resref2.inc (from /trunk/tests/test/units/fpcunit/resref.inc:16188)
D /trunk/tests/test/units/fpcunit/sllist.inc
A /trunk/tests/test/units/fpcunit/sllist2.inc (from /trunk/tests/test/units/fpcunit/sllist.inc:16187)
M /trunk/tests/test/units/fpcunit/tcresref.pp

* Avoid nameclash and fix compilation
------------------------------------------------------------------------
------------------------------------------------------------------------
r16284 | florian | 2010-11-01 09:20:31 +0100 (Mon, 01 Nov 2010) | 1 line
Changed paths:
M /trunk/rtl/darwin/Makefile
M /trunk/rtl/darwin/Makefile.fpc
M /trunk/rtl/freebsd/Makefile
M /trunk/rtl/freebsd/Makefile.fpc
M /trunk/rtl/linux/Makefile
M /trunk/rtl/linux/Makefile.fpc
M /trunk/rtl/solaris/Makefile
M /trunk/rtl/solaris/Makefile.fpc
M /trunk/rtl/win64/Makefile
M /trunk/rtl/win64/Makefile.fpc
M /trunk/rtl/win64/buildrtl.pp
A /trunk/rtl/x86_64/cpu.pp
A /trunk/tests/test/tcas128.pp

+ cpu unit for x86-64 containing a CAS128 implementation
------------------------------------------------------------------------
------------------------------------------------------------------------
r16293 | sergei | 2010-11-02 08:34:23 +0100 (Tue, 02 Nov 2010) | 1 line
Changed paths:
M /trunk/rtl/win/sysutils.pp

* win/sysutils.pp, implement CompareUnicodeString and CompareTextUnicodeString, resolves #17591.
------------------------------------------------------------------------
------------------------------------------------------------------------
r16294 | sergei | 2010-11-02 08:36:55 +0100 (Tue, 02 Nov 2010) | 1 line
Changed paths:
A /trunk/tests/webtbs/tw17591.pp

+ Test for #17591
------------------------------------------------------------------------
------------------------------------------------------------------------
r16298 | jonas | 2010-11-03 13:16:20 +0100 (Wed, 03 Nov 2010) | 5 lines
Changed paths:
M /trunk/rtl/unix/cwstring.pp
M /trunk/tests/webtbs/tw17591.pp

* hook up CompareUnicodeStringProc and CompareTextUnicodeStringProc in
cwstring (fixes webtbs/tw17591.pp on unix platforms)
* enhanced webtbs/tw17591.pp so it also (superficially) checks the
correctness of the called routines, and add cwstring for unix platforms

------------------------------------------------------------------------
------------------------------------------------------------------------
r16300 | sergei | 2010-11-03 15:08:51 +0100 (Wed, 03 Nov 2010) | 3 lines
Changed paths:
M /trunk/packages/dbus/fpmake.pp
M /trunk/packages/dbus/src/dbus-bus.inc
M /trunk/packages/dbus/src/dbus-connection.inc
M /trunk/packages/dbus/src/dbus-memory.inc
M /trunk/packages/dbus/src/dbus-message.inc
A /trunk/packages/dbus/src/dbus-misc.inc
M /trunk/packages/dbus/src/dbus-protocol.inc
M /trunk/packages/dbus/src/dbus-server.inc
M /trunk/packages/dbus/src/dbus-threads.inc
M /trunk/packages/dbus/src/dbus.pas

* Updated DBus headers to version 1.2.16
* Added 'cdecl' to all callback function type definitions.

------------------------------------------------------------------------
------------------------------------------------------------------------
r16301 | marco | 2010-11-03 21:45:01 +0100 (Wed, 03 Nov 2010) | 2 lines
Changed paths:
M /trunk/rtl/objpas/classes/reader.inc

* fix from mantis 17818. Value is only peaked, add readvalue to also consume it.

------------------------------------------------------------------------
------------------------------------------------------------------------
r16303 | sekelsenmat | 2010-11-04 17:18:51 +0100 (Thu, 04 Nov 2010) | 1 line
Changed paths:
M /trunk/packages/fcl-image/src/fpcanvas.pp

Allows directly setting the core fpcanvas properties in subclasses
------------------------------------------------------------------------
------------------------------------------------------------------------
r16304 | sekelsenmat | 2010-11-04 18:09:59 +0100 (Thu, 04 Nov 2010) | 1 line
Changed paths:
M /trunk/packages/fcl-image/src/fppixlcanv.pp

Changes the default style of the brush of a TFPImageCanvas to bsSolid
------------------------------------------------------------------------
------------------------------------------------------------------------
r16308 | sekelsenmat | 2010-11-06 18:00:52 +0100 (Sat, 06 Nov 2010) | 1 line
Changed paths:
M /trunk/packages/fcl-image/src/freetype.pp

Fixes a list out of bounds exception in freetype
------------------------------------------------------------------------

git-svn-id: branches/fixes_2_4@16436 -

marco před 15 roky
rodič
revize
a78d815400

+ 6 - 2
.gitattributes

@@ -996,6 +996,7 @@ packages/dbus/src/dbus-errors.inc svneol=native#text/plain
 packages/dbus/src/dbus-macros.inc svneol=native#text/plain
 packages/dbus/src/dbus-memory.inc svneol=native#text/plain
 packages/dbus/src/dbus-message.inc svneol=native#text/plain
+packages/dbus/src/dbus-misc.inc svneol=native#text/plain
 packages/dbus/src/dbus-pending-call.inc svneol=native#text/plain
 packages/dbus/src/dbus-protocol.inc svneol=native#text/plain
 packages/dbus/src/dbus-server.inc svneol=native#text/plain
@@ -7034,6 +7035,7 @@ rtl/wince/wininc/struct.inc svneol=native#text/plain
 rtl/wince/winres.inc svneol=native#text/plain
 rtl/wince/winsock.pp svneol=native#text/plain
 rtl/wince/winsock2.pp svneol=native#text/plain
+rtl/x86_64/cpu.pp svneol=native#text/pascal
 rtl/x86_64/int64p.inc svneol=native#text/plain
 rtl/x86_64/makefile.cpu svneol=native#text/plain
 rtl/x86_64/math.inc svneol=native#text/plain
@@ -8463,6 +8465,7 @@ tests/test/tasout.pp svneol=native#text/plain
 tests/test/tassignmentoperator1.pp svneol=native#text/pascal
 tests/test/tbopr.pp svneol=native#text/plain
 tests/test/tbrtlevt.pp svneol=native#text/plain
+tests/test/tcas128.pp svneol=native#text/pascal
 tests/test/tcase1.pp svneol=native#text/plain
 tests/test/tcase2.pp svneol=native#text/plain
 tests/test/tcg1.pp svneol=native#text/plain
@@ -8834,9 +8837,9 @@ tests/test/units/dos/tversion.pp svneol=native#text/plain
 tests/test/units/fpcunit/fplists.pp svneol=native#text/plain
 tests/test/units/fpcunit/gencomptest.dpr svneol=native#text/plain
 tests/test/units/fpcunit/lists.pp svneol=native#text/plain
-tests/test/units/fpcunit/resref.inc svneol=native#text/plain
+tests/test/units/fpcunit/resref2.inc svneol=native#text/plain
 tests/test/units/fpcunit/searchbuf.inc svneol=native#text/plain
-tests/test/units/fpcunit/sllist.inc svneol=native#text/plain
+tests/test/units/fpcunit/sllist2.inc svneol=native#text/plain
 tests/test/units/fpcunit/tbucketlist.lpi svneol=native#text/plain
 tests/test/units/fpcunit/tbucketlist.lpr svneol=native#text/plain
 tests/test/units/fpcunit/tcbucketlist.pp svneol=native#text/plain
@@ -9746,6 +9749,7 @@ tests/webtbs/tw1754c.pp svneol=native#text/plain
 tests/webtbs/tw1755.pp svneol=native#text/plain
 tests/webtbs/tw17550.pp svneol=native#text/plain
 tests/webtbs/tw1758.pp svneol=native#text/plain
+tests/webtbs/tw17591.pp svneol=native#text/plain
 tests/webtbs/tw1765.pp svneol=native#text/plain
 tests/webtbs/tw1779.pp svneol=native#text/plain
 tests/webtbs/tw1780.pp svneol=native#text/plain

+ 2 - 1
packages/dbus/fpmake.pp

@@ -22,7 +22,7 @@ begin
     P.License := 'Library: GPL2 or later, header: LGPL with modification, ';
     P.HomepageURL := 'www.freepascal.org';
     P.Email := '';
-    P.Description := 'D-Bus message bus interface. (Pre 1.0?)';
+    P.Description := 'D-Bus message bus interface. (1.2.16)';
     P.NeedLibC:= true;
 
     P.SourcePath.Add('src');
@@ -46,6 +46,7 @@ begin
           AddInclude('dbus-server.inc');
           AddInclude('dbus-signature.inc');
           AddInclude('dbus-threads.inc');
+          AddInclude('dbus-misc.inc');
         end;
 
     P.ExamplePath.Add('examples');

+ 1 - 1
packages/dbus/src/dbus-bus.inc

@@ -32,6 +32,7 @@ function dbus_bus_set_unique_name(connection: PDBusConnection;
 function dbus_bus_get_unique_name(connection: PDBusConnection): PChar; cdecl; external LibDBus;
 function dbus_bus_get_unix_user(connection: PDBusConnection;
  const name: PChar; error: PDBusError): culong; cdecl; external LibDBus;
+function dbus_bus_get_id(connection: PDBusConnection; error: PDBusError): PChar; cdecl; external LibDBus;
 function dbus_bus_request_name(connection: PDBusConnection;
  const name: PChar; flags: cuint; error: PDBusError): cint; cdecl; external LibDBus;
 function dbus_bus_release_name(connection: PDBusConnection;
@@ -48,5 +49,4 @@ procedure dbus_bus_add_match(connection: PDBusConnection;
 procedure dbus_bus_remove_match(connection: PDBusConnection;
  const rule: PChar; error: PDBusError); cdecl; external LibDBus;
 
-procedure _dbus_bus_check_connection_and_unref (connection: PDBusConnection); cdecl; external LibDBus;
 

+ 47 - 16
packages/dbus/src/dbus-connection.inc

@@ -60,23 +60,26 @@ type
     DBUS_DISPATCH_NEED_MEMORY    {< More memory is needed to continue. }
   );
 
-  DBusAddWatchFunction = function (watch: PDBusWatch; data: Pointer): dbus_bool_t;
-  DBusWatchToggledFunction = procedure(watch: PDBusWatch; data: Pointer);
-  DBusRemoveWatchFunction = procedure(watch: PDBusWatch; data: Pointer);
-  DBusAddTimeoutFunction = function(timeout: PDBusTimeout; data: Pointer): dbus_bool_t;
-  DBusTimeoutToggledFunction = procedure(timeout: PDBusTimeout; data: Pointer);
-  DBusRemoveTimeoutFunction = procedure(timeout: PDBusTimeout; data: Pointer);
+  DBusAddWatchFunction = function (watch: PDBusWatch; data: Pointer): dbus_bool_t; cdecl;
+  DBusWatchToggledFunction = procedure(watch: PDBusWatch; data: Pointer); cdecl;
+  DBusRemoveWatchFunction = procedure(watch: PDBusWatch; data: Pointer); cdecl;
+  DBusAddTimeoutFunction = function(timeout: PDBusTimeout; data: Pointer): dbus_bool_t; cdecl;
+  DBusTimeoutToggledFunction = procedure(timeout: PDBusTimeout; data: Pointer); cdecl;
+  DBusRemoveTimeoutFunction = procedure(timeout: PDBusTimeout; data: Pointer); cdecl;
   DBusDispatchStatusFunction = procedure(connection: PDBusConnection;
-   new_status: DBusDispatchStatus; data: Pointer);
-  DBusWakeupMainFunction = procedure(data: Pointer);
+   new_status: DBusDispatchStatus; data: Pointer); cdecl;
+  DBusWakeupMainFunction = procedure(data: Pointer); cdecl;
   DBusAllowUnixUserFunction = function(connection: PDBusConnection;
-   uid: cuint; data: Pointer): dbus_bool_t;
+   uid: cuint; data: Pointer): dbus_bool_t; cdecl;
+
+  DBusAllowWindowsUserFunction = function(connection: PDBusConnection;
+   user_sid: PChar; data: Pointer): dbus_bool_t; cdecl;
 
   DBusPendingCallNotifyFunction = procedure(pending: PDBusPendingCall;
-   user_data: Pointer);
+   user_data: Pointer); cdecl;
 
   DBusHandleMessageFunction = function(connection: PDBusConnection;
-   message_: PDBusMessage; user_data: Pointer): DBusHandlerResult;
+   message_: PDBusMessage; user_data: Pointer): DBusHandlerResult; cdecl;
 
 function dbus_connection_open(const address: PChar; error: PDBusError): PDBusConnection; cdecl; external LibDBus;
 function dbus_connection_open_private(const address: PChar; error: PDBusError): PDBusConnection; cdecl; external LibDBus;
@@ -133,13 +136,30 @@ function dbus_connection_get_unix_user(connection: PDBusConnection;
  uid: Pculong): dbus_bool_t; cdecl; external LibDBus;
 function dbus_connection_get_unix_process_id(connection: PDBusConnection;
  pid: Pculong): dbus_bool_t; cdecl; external LibDBus;
+function dbus_connection_get_adt_audit_session_data(connection: PDBusConnection;
+  data: PPointer; data_size: Pdbus_int32_t): dbus_bool_t; cdecl; external LibDBus;
 procedure dbus_connection_set_unix_user_function(connection: PDBusConnection;
  function_: DBusAllowUnixUserFunction;
  data: Pointer;
  free_data_function: DBusFreeFunction); cdecl; external LibDBus;
 
+function dbus_connection_get_windows_user(connection: PDBusConnection;
+ windows_sid_p: PPChar): dbus_bool_t; cdecl; external LibDBus;
+procedure dbus_connection_set_windows_user_function(connection: PDBusConnection;
+ function_: DBusAllowWindowsUserFunction;
+ data: Pointer;
+ free_data_function: DBusFreeFunction); cdecl; external LibDBus;
+
+procedure dbus_connection_set_allow_anonymous(connection: PDBusConnection;
+ value: dbus_bool_t); cdecl; external LibDBus;
+procedure dbus_connection_set_route_peer_messages(connection: PDBusConnection;
+ value: dbus_bool_t); cdecl; external LibDBus;
 
+//deprecated:
 function dbus_watch_get_fd(watch: PDBusWatch): cint; cdecl; external LibDBus;
+
+function dbus_watch_get_unix_fd(watch: PDBusWatch): cint; cdecl; external LibDBus;
+function dbus_watch_get_socket(watch: PDBusWatch): cint; cdecl; external LibDBus;
 function dbus_watch_get_flags(watch: PDBusWatch): cuint; cdecl; external LibDBus;
 function dbus_watch_get_data(watch: PDBusWatch): Pointer; cdecl; external LibDBus;
 procedure dbus_watch_set_data(watch: PDBusWatch;
@@ -189,15 +209,15 @@ procedure dbus_connection_send_preallocated      (connection: PDBusConnection;
 
 type
   DBusObjectPathUnregisterFunction = procedure(connection: PDBusConnection;
-   user_data: Pointer);
+   user_data: Pointer); cdecl;
   DBusObjectPathMessageFunction = function(connection: PDBusConnection;
-   message_: PDBusMessage; user_data: Pointer): DBusHandlerResult;
+   message_: PDBusMessage; user_data: Pointer): DBusHandlerResult; cdecl;
 
 {
  * Virtual table that must be implemented to handle a portion of the
  * object path hierarchy.
  }
-  dbus_internal_func = procedure(param1: Pointer);
+  dbus_internal_func = procedure(param1: Pointer); cdecl;
 
   PDBusObjectPathVTable = ^DBusObjectPathVTable;
 
@@ -212,10 +232,18 @@ type
     dbus_internal_pad4: dbus_internal_func; {< Reserved for future expansion }
   end;
 
+function dbus_connection_try_register_object_path(connection: PDBusConnection;
+  path: PChar; vtable: PDBusObjectPathVTable; user_data: Pointer;
+  error: PDBusError): dbus_bool_t; cdecl; external LibDBus;
+
 function dbus_connection_register_object_path(connection: PDBusConnection;
- const path: PChar;
- const vtable: PDBusObjectPathVTable;
+ path: PChar; vtable: PDBusObjectPathVTable;
  user_data: Pointer): dbus_bool_t; cdecl; external LibDBus;
+
+function dbus_connection_try_register_fallback(connection: PDBusConnection;
+ path: PChar; vtable: PDBusObjectPathVTable; user_data: Pointer;
+ error: PDBusError): dbus_bool_t; cdecl; external LibDBus;
+
 function dbus_connection_register_fallback(connection: PDBusConnection;
  const path: PChar;
  const vtable: PDBusObjectPathVTable;
@@ -234,3 +262,6 @@ function dbus_connection_list_registered(connection: PDBusConnection;
 function dbus_connection_get_unix_fd(connection: PDBusConnection;
  fd: Pcint): dbus_bool_t; cdecl; external LibDBus;
 
+function dbus_connection_get_socket(connection: PDBusConnection;
+ fd: Pcint): dbus_bool_t; cdecl; external LibDBus;
+

+ 1 - 1
packages/dbus/src/dbus-memory.inc

@@ -35,7 +35,7 @@ procedure dbus_free(memory: Pointer); cdecl; external LibDBus;
 procedure dbus_free_string_array(str_array: PPChar); cdecl; external LibDBus;
 
 type
-  DBusFreeFunction = procedure(memory: Pointer);
+  DBusFreeFunction = procedure(memory: Pointer); cdecl;
 
 procedure dbus_shutdown; cdecl; external LibDBus;
 

+ 8 - 0
packages/dbus/src/dbus-message.inc

@@ -138,7 +138,9 @@ function dbus_message_iter_get_arg_type(iter: PDBusMessageIter): cint; cdecl; ex
 function dbus_message_iter_get_element_type(iter: PDBusMessageIter): cint; cdecl; external LibDBus;
 procedure dbus_message_iter_recurse(iter, sub: PDBusMessageIter); cdecl; external LibDBus;
 procedure dbus_message_iter_get_basic(iter: PDBusMessageIter; value: Pointer); cdecl; external LibDBus;
+//deprecated:
 function dbus_message_iter_get_array_len(iter: PDBusMessageIter): cint; cdecl; external LibDBus;
+
 procedure dbus_message_iter_get_fixed_array(iter: PDBusMessageIter; value: Pointer; n_elements: Pcint); cdecl; external LibDBus;
 
 
@@ -164,3 +166,9 @@ function dbus_message_get_data(message_: PDBusMessage; slot: dbus_int32_t): Poin
 function dbus_message_type_from_string(const type_str: PChar): cint; cdecl; external LibDBus;
 function dbus_message_type_to_string(type_: cint): PChar; cdecl; external LibDBus;
 
+function dbus_message_marshal(msg: PDBusMessage;
+ marshalled_data_p: PPChar;
+ len_p: pcint): dbus_bool_t; cdecl; external LibDBus;
+function dbus_message_demarshal(const str: PChar;
+ len: cint; error: PDBusError): PDBusMessage; cdecl; external LibDBus;
+

+ 28 - 0
packages/dbus/src/dbus-misc.inc

@@ -0,0 +1,28 @@
+{ dbus-misc.h  A few assorted public functions that don't fit elsewhere
+ *
+ * Copyright (C) 2006 Red Hat, Inc.
+ *
+ * Licensed under the Academic Free License version 2.1
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ }
+
+
+function dbus_get_local_machine_id: PChar; cdecl; external LibDBus;
+
+procedure dbus_get_version(major_version_p, minor_version_p,
+  micro_version_p: Pcint); cdecl; external LibDBus;
+

+ 13 - 1
packages/dbus/src/dbus-protocol.inc

@@ -231,6 +231,7 @@ const
   DBUS_ERROR_DISCONNECTED              = 'org.freedesktop.DBus.Error.Disconnected';
   DBUS_ERROR_INVALID_ARGS              = 'org.freedesktop.DBus.Error.InvalidArgs';
   DBUS_ERROR_FILE_NOT_FOUND            = 'org.freedesktop.DBus.Error.FileNotFound';
+  DBUS_ERROR_FILE_EXISTS               = 'org.freedesktop.DBus.Error.FileExists';
   DBUS_ERROR_UNKNOWN_METHOD            = 'org.freedesktop.DBus.Error.UnknownMethod';
   DBUS_ERROR_TIMED_OUT                 = 'org.freedesktop.DBus.Error.TimedOut';
   DBUS_ERROR_MATCH_RULE_NOT_FOUND      = 'org.freedesktop.DBus.Error.MatchRuleNotFound';
@@ -240,12 +241,23 @@ const
   DBUS_ERROR_SPAWN_CHILD_EXITED        = 'org.freedesktop.DBus.Error.Spawn.ChildExited';
   DBUS_ERROR_SPAWN_CHILD_SIGNALED      = 'org.freedesktop.DBus.Error.Spawn.ChildSignaled';
   DBUS_ERROR_SPAWN_FAILED              = 'org.freedesktop.DBus.Error.Spawn.Failed';
+  DBUS_ERROR_SPAWN_SETUP_FAILED        = 'org.freedesktop.DBus.Error.Spawn.FailedToSetup';
+  DBUS_ERROR_SPAWN_CONFIG_INVALID      = 'org.freedesktop.DBus.Error.Spawn.ConfigInvalid';
+  DBUS_ERROR_SPAWN_SERVICE_INVALID     = 'org.freedesktop.DBus.Error.Spawn.ServiceNotValid';
+  DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND   = 'org.freedesktop.DBus.Error.Spawn.ServiceNotFound';
+  DBUS_ERROR_SPAWN_PERMISSIONS_INVALID = 'org.freedesktop.DBus.Error.Spawn.PermissionsInvalid';
+  DBUS_ERROR_SPAWN_FILE_INVALID        = 'org.freedesktop.DBus.Error.Spawn.FileInvalid';
+  DBUS_ERROR_SPAWN_NO_MEMORY           = 'org.freedesktop.DBus.Error.Spawn.NoMemory';
+
   DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN   = 'org.freedesktop.DBus.Error.UnixProcessIdUnknown';
   DBUS_ERROR_INVALID_SIGNATURE         = 'org.freedesktop.DBus.Error.InvalidSignature';
   DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN   = 'org.freedesktop.DBus.Error.SELinuxSecurityContextUnknown';
 
+  DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN    = 'org.freedesktop.DBus.Error.AdtAuditDataUnknown';
+  DBUS_ERROR_OBJECT_PATH_IN_USE        = 'org.freedesktop.DBus.Error.ObjectPathInUse';
+
   DBUS_INTROSPECT_1_0_XML_NAMESPACE         = 'http://www.freedesktop.org/standards/dbus';
   DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER = '-//freedesktop//DTD D-BUS Object Introspection 1.0//EN';
   DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER = 'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd';
-  DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE = '<!DOCTYPE node PUBLIC \""DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER"\"\n\""DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER"\">\n';
+  DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE = '<!DOCTYPE node PUBLIC "'+DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER+'"'#10'"'+DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER+'">'#10;
 

+ 7 - 6
packages/dbus/src/dbus-server.inc

@@ -31,14 +31,15 @@ type
   PDBusServer = ^DBusServer;
 
   DBusNewConnectionFunction = procedure (server: PDBusServer;
-   new_connection: PDBusConnection; data: Pointer);
+   new_connection: PDBusConnection; data: Pointer); cdecl;
 
 function dbus_server_listen(const address: PChar; error: PDBusError): PDBusServer; cdecl; external LibDBus;
-function dbus_server_ref(error: PDBusError): PDBusServer; cdecl; external LibDBus;
-procedure dbus_server_unref(error: PDBusError); cdecl; external LibDBus;
-procedure dbus_server_disconnect(error: PDBusError); cdecl; external LibDBus;
-function dbus_server_get_is_connected(error: PDBusError): dbus_bool_t; cdecl; external LibDBus;
-function dbus_server_get_address(error: PDBusError): PChar; cdecl; external LibDBus;
+function dbus_server_ref(server: PDBusServer): PDBusServer; cdecl; external LibDBus;
+procedure dbus_server_unref(server: PDBusServer); cdecl; external LibDBus;
+procedure dbus_server_disconnect(server: PDBusServer); cdecl; external LibDBus;
+function dbus_server_get_is_connected(server: PDBusServer): dbus_bool_t; cdecl; external LibDBus;
+function dbus_server_get_address(server: PDBusServer): PChar; cdecl; external LibDBus;
+function dbus_server_get_id(server: PDBusServer): PChar; cdecl; external LibDBus;
 procedure dbus_server_set_new_connection_function(server: PDBusServer;
  function_: DBusNewConnectionFunction; data: Pointer; free_data_function: DBusFreeFunction); cdecl; external LibDBus;
 function dbus_server_set_watch_functions(server: PDBusServer;

+ 27 - 16
packages/dbus/src/dbus-threads.inc

@@ -31,18 +31,23 @@ type
   DBusCondVar = record end;
   PDBusCondVar = ^DBusCondVar;
   
-  DBusMutexNewFunction = function (): DBusMutex;
-  DBusMutexFreeFunction = procedure (mutex: PDBusMutex);
-  DBusMutexLockFunction = function (mutex: PDBusMutex): dbus_bool_t;
-  DBusMutexUnlockFunction = function (mutex: PDBusMutex): dbus_bool_t;
+  DBusMutexNewFunction = function (): DBusMutex; cdecl;
+  DBusMutexFreeFunction = procedure (mutex: PDBusMutex); cdecl;
+  DBusMutexLockFunction = function (mutex: PDBusMutex): dbus_bool_t; cdecl;
+  DBusMutexUnlockFunction = function (mutex: PDBusMutex): dbus_bool_t; cdecl;
 
-  DBusCondVarNewFunction = function (): PDBusCondVar;
-  DBusCondVarFreeFunction = procedure (cond: PDBusCondVar);
-  DBusCondVarWaitFunction = procedure (cond: PDBusCondVar; mutex: PDBusMutex);
+  DBusRecursiveMutexNewFunction = function(): DBusMutex; cdecl;
+  DBusRecursiveMutexFreeFunction = procedure (mutex: PDBusMutex); cdecl;
+  DBusRecursiveMutexLockFunction = procedure (mutex: PDBusMutex); cdecl;
+  DBusRecursiveMutexUnlockFunction = procedure (mutex: PDBusMutex); cdecl;
+
+  DBusCondVarNewFunction = function (): PDBusCondVar; cdecl;
+  DBusCondVarFreeFunction = procedure (cond: PDBusCondVar); cdecl;
+  DBusCondVarWaitFunction = procedure (cond: PDBusCondVar; mutex: PDBusMutex); cdecl;
   DBusCondVarWaitTimeoutFunction = procedure (cond: PDBusCondVar; mutex: PDBusMutex;
-   timeout_milliseconds: cint);
-  DBusCondVarWakeOneFunction = procedure (cond: PDBusCondVar);
-  DBusCondVarWakeAllFunction = procedure (cond: PDBusCondVar);
+   timeout_milliseconds: cint); cdecl;
+  DBusCondVarWakeOneFunction = procedure (cond: PDBusCondVar); cdecl;
+  DBusCondVarWakeAllFunction = procedure (cond: PDBusCondVar); cdecl;
 
   DBusThreadFunctionsMask =
   (
@@ -56,8 +61,12 @@ type
    DBUS_THREAD_FUNCTIONS_CONDVAR_WAIT_TIMEOUT_MASK   = 1 shl 7,
    DBUS_THREAD_FUNCTIONS_CONDVAR_WAKE_ONE_MASK = 1 shl 8,
    DBUS_THREAD_FUNCTIONS_CONDVAR_WAKE_ALL_MASK = 1 shl 9,
+   DBUS_THREAD_FUNCTIONS_RECURSIVE_MUTEX_NEW_MASK    = 1 shl 10,
+   DBUS_THREAD_FUNCTIONS_RECURSIVE_MUTEX_FREE_MASK   = 1 shl 11,
+   DBUS_THREAD_FUNCTIONS_RECURSIVE_MUTEX_LOCK_MASK   = 1 shl 12,
+   DBUS_THREAD_FUNCTIONS_RECURSIVE_MUTEX_UNLOCK_MASK = 1 shl 13,
 
-   DBUS_THREAD_FUNCTIONS_ALL_MASK     = (1 shl 10) - 1
+   DBUS_THREAD_FUNCTIONS_ALL_MASK     = (1 shl 14) - 1
   );
 
 {
@@ -78,18 +87,20 @@ type
    condvar_wait_timeout: DBusCondVarWaitTimeoutFunction; {< Function to wait on a condition with a timeout }
    condvar_wake_one: DBusCondVarWakeOneFunction; {< Function to wake one thread waiting on the condition }
    condvar_wake_all: DBusCondVarWakeAllFunction; {< Function to wake all threads waiting on the condition }
-  
+
+   recursive_mutex_new: DBusRecursiveMutexNewFunction; {< Function to create a recursive mutex }
+   recursive_mutex_free: DBusRecursiveMutexFreeFunction; {< Function to free a recursive mutex }
+   recursive_mutex_lock: DBusRecursiveMutexLockFunction; {< Function to lock a recursive mutex }
+   recursive_mutex_unlock: DBusRecursiveMutexUnlockFunction; {< Function to unlock a recursive mutex }
+
    padding1: procedure; {< Reserved for future expansion }
    padding2: procedure; {< Reserved for future expansion }
    padding3: procedure; {< Reserved for future expansion }
    padding4: procedure; {< Reserved for future expansion }
-   padding5: procedure; {< Reserved for future expansion }
-   padding6: procedure; {< Reserved for future expansion }
-   padding7: procedure; {< Reserved for future expansion }
-   padding8: procedure; {< Reserved for future expansion }
   end;
   
   PDBusThreadFunctions = ^DBusThreadFunctions;
 
 function dbus_threads_init(const functions: PDBusThreadFunctions): dbus_bool_t; cdecl; external LibDBus;
+function dbus_threads_init_default: dbus_bool_t; cdecl; external LibDBus;
 

+ 2 - 4
packages/dbus/src/dbus.pas

@@ -1,7 +1,7 @@
 {
   Pascal translation of the dbus headers
   
-  Based on dbus version 0.92
+  Based on dbus version 1.2.16
 }
 { -*- mode: C; c-file-style: "gnu" -*- }
 { dbus.h  Convenience header including all other headers
@@ -49,9 +49,6 @@ interface
 
 uses ctypes;
 
-{ D-Bus hasn't reached 1.0 and is subject to protocol and API churn.
-  See the README for a full explanation. }
-
 const
 {$ifdef unix}
   LibDBus = 'libdbus-1';
@@ -76,6 +73,7 @@ const
 
 {$include dbus-signature.inc}
 {$include dbus-threads.inc}
+{$include dbus-misc.inc}
 
 {
  * @defgroup DBus D-Bus low-level public API

+ 5 - 8
packages/fcl-image/src/fpcanvas.pp

@@ -194,14 +194,6 @@ type
     FClipping,
     FManageResources: boolean;
     FRemovingHelpers : boolean;
-    FDefaultFont,
-    FFont : TFPCustomFont;
-    FDefaultBrush,
-    FBrush : TFPCustomBrush;
-    FDefaultPen,
-    FPen : TFPCustomPen;
-    FPenPos : TPoint;
-    FClipRect : TRect;
     FHelpers : TList;
     FLocks : integer;
     FInterpolation : TFPCustomInterpolation;
@@ -216,6 +208,11 @@ type
     function GetBrush : TFPCustomBrush;
     function GetPen : TFPCustomPen;
   protected
+    FDefaultFont, FFont : TFPCustomFont;
+    FDefaultBrush, FBrush : TFPCustomBrush;
+    FDefaultPen, FPen : TFPCustomPen;
+    FPenPos : TPoint;
+    FClipRect : TRect;
     function DoCreateDefaultFont : TFPCustomFont; virtual; abstract;
     function DoCreateDefaultPen : TFPCustomPen; virtual; abstract;
     function DoCreateDefaultBrush : TFPCustomBrush; virtual; abstract;

+ 1 - 4
packages/fcl-image/src/fppixlcanv.pp

@@ -105,10 +105,7 @@ end;
 function TFPPixelCanvas.DoCreateDefaultBrush : TFPCustomBrush;
 begin
   result := TFPEmptyBrush.Create;
-  with result do
-    begin
-    Style := bsClear;
-    end;
+  result.Style := bsSolid;
 end;
 
 procedure TFPPixelCanvas.DoTextOut (x,y:integer;text:string);

+ 9 - 3
packages/fcl-image/src/freetype.pp

@@ -433,11 +433,17 @@ end;
 
 function TFontManager.GetFont (FontID:integer) : TMgrFont;
 begin
-  result := TMgrFont(FList[FontID]);
-  if result <> CurFont then  // set last used size of the font as current size
+  if (FontID >= 0) and (FontID < FList.Count) then
+  begin
+    result := TMgrFont(FList[FontID]);
+
+    if result <> CurFont then  // set last used size of the font as current size
     begin
-    CurSize := result.LastSize;
+      CurSize := result.LastSize;
     end;
+  end
+  else
+    Result := nil;
 end;
 
 procedure TFontManager.GetSize (aSize, aResolution : integer);

+ 8 - 3
rtl/darwin/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/08/25]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/11/01]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -269,8 +269,9 @@ override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
 ifeq ($(CPU_TARGET),i386)
 CPU_UNITS=mmx cpu
-else
-CPU_UNITS=
+endif
+ifeq ($(ARCH),x86_64)
+CPU_UNITS=cpu
 endif
 RTL=..
 INC=$(RTL)/inc
@@ -2551,7 +2552,11 @@ macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
 video$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/video.inc $(INC)/videoh.inc $(UNIXINC)/video.pp baseunix$(PPUEXT) strings$(PPUEXT) terminfo$(PPUEXT) termio$(PPUEXT)
 keyboard$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/keyboard.inc $(INC)/keybrdh.inc $(UNIXINC)/keyboard.pp mouse$(PPUEXT) strings$(PPUEXT) terminfo$(PPUEXT) termio$(PPUEXT) baseunix$(PPUEXT)
 matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
+ifeq ($(ARCH),x86_64)
+cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
+else
 cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
+endif
 mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
 heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)

+ 8 - 2
rtl/darwin/Makefile.fpc

@@ -49,8 +49,10 @@ libunits=$(SYSTEMUNIT) objpas strings \
 [prerules]
 ifeq ($(CPU_TARGET),i386)
 CPU_UNITS=mmx cpu
-else
-CPU_UNITS=
+endif
+
+ifeq ($(ARCH),x86_64)
+CPU_UNITS=cpu
 endif
 
 RTL=..
@@ -248,7 +250,11 @@ keyboard$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/keyboard.inc $(INC)/keybrdh.in
 
 matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
 
+ifeq ($(ARCH),x86_64)
+cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
+else
 cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
+endif
 
 mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 

+ 6 - 2
rtl/freebsd/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/08/25]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/11/01]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -289,7 +289,7 @@ ifeq ($(ARCH),i386)
 CPU_UNITS=x86 ports cpu mmx
 endif
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=x86 ports 
+CPU_UNITS=x86 ports cpu
 endif
 ifdef RELEASE
 override FPCOPT+=-Ur
@@ -2746,7 +2746,11 @@ sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
 macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
 	$(COMPILER) $(INC)/macpas.pp $(REDIR)
 x86$(PPUEXT) : $(UNIXINC)/x86.pp $(SYSTEMUNIT)$(PPUEXT)
+ifeq ($(ARCH),x86_64)
+cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
+else
 cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
+endif
 mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
 heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)

+ 5 - 1
rtl/freebsd/Makefile.fpc

@@ -74,7 +74,7 @@ CPU_UNITS=x86 ports cpu mmx
 endif
 
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=x86 ports 
+CPU_UNITS=x86 ports cpu
 endif
 
 
@@ -223,7 +223,11 @@ macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
 
 x86$(PPUEXT) : $(UNIXINC)/x86.pp $(SYSTEMUNIT)$(PPUEXT)
 
+ifeq ($(ARCH),x86_64)
+cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
+else
 cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
+endif
 
 mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 

+ 6 - 2
rtl/linux/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/08/25]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/11/01]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -286,7 +286,7 @@ CPU_UNITS=x86 ports cpu mmx
 SYSINIT_UNITS=si_prc si_c21g si_c21 si_c si_dll si_uc
 endif
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=x86 ports
+CPU_UNITS=x86 ports cpu
 SYSINIT_UNITS=   # si_prc si_c si_dll
 endif
 ifeq ($(ARCH),arm)
@@ -3138,7 +3138,11 @@ stdconvs$(PPUEXT) : $(OBJPASDIR)/stdconvs.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUE
 	$(COMPILER) $(OBJPASDIR)/stdconvs.pp
 macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
 	$(COMPILER) $(INC)/macpas.pp $(REDIR)
+ifeq ($(ARCH),x86_64)
+cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
+else
 cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
+endif
 mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
 heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)

+ 5 - 1
rtl/linux/Makefile.fpc

@@ -72,7 +72,7 @@ SYSINIT_UNITS=si_prc si_c21g si_c21 si_c si_dll si_uc
 endif
 
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=x86 ports
+CPU_UNITS=x86 ports cpu
 SYSINIT_UNITS=   # si_prc si_c si_dll
 endif
 
@@ -262,7 +262,11 @@ macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
 # Other $(SYSTEMUNIT)-independent RTL Units
 #
 
+ifeq ($(ARCH),x86_64)
+cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
+else
 cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
+endif
 
 mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 

+ 2 - 0
rtl/objpas/classes/reader.inc

@@ -1101,10 +1101,12 @@ begin
     vaNil:
       begin
         Result:=system.unassigned;
+        readvalue;
       end;
     vaNull:
       begin
         Result:=system.null;
+        readvalue;
       end;
     { all integer sizes must be split for big endian systems }
     vaInt8,vaInt16,vaInt32:

+ 9 - 1
rtl/solaris/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/08/25]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/11/01]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -279,6 +279,10 @@ SYSTEMUNIT=system
 ifeq ($(ARCH),i386)
 CPU_UNITS=cpu mmx
 endif
+ifeq ($(ARCH),x86_64)
+CPU_UNITS=cpu
+SYSINIT_UNITS=   # si_prc si_c si_dll
+endif
 ifdef RELEASE
 override FPCOPT+=-Ur
 endif
@@ -2543,7 +2547,11 @@ keyboard$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) $(INC)/keyboard.inc $(INC)/keybrdh.in
 	strings$(PPUEXT) terminfo$(PPUEXT) termio$(PPUEXT) baseunix$(PPUEXT) mouse$(PPUEXT)
 mouse$(PPUEXT) : $(UNIXINC)/mouse.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) video$(PPUEXT)
 matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
+ifeq ($(ARCH),x86_64)
+cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
+else
 cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
+endif
 mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
 heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)

+ 10 - 1
rtl/solaris/Makefile.fpc

@@ -39,7 +39,7 @@ fpcdir=../..
 target=solaris
 
 [compiler]
-includedir=$(INC) $(PROCINC) $(UNIXINC) $(OSPROCINC) 
+includedir=$(INC) $(PROCINC) $(UNIXINC) $(OSPROCINC)
 sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(COMMON)
 
 
@@ -70,6 +70,11 @@ ifeq ($(ARCH),i386)
 CPU_UNITS=cpu mmx
 endif
 
+ifeq ($(ARCH),x86_64)
+CPU_UNITS=cpu
+SYSINIT_UNITS=   # si_prc si_c si_dll
+endif
+
 
 # Use new feature from 1.0.5 version
 # that generates release PPU files
@@ -246,7 +251,11 @@ mouse$(PPUEXT) : $(UNIXINC)/mouse.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) vi
 
 matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
 
+ifeq ($(ARCH),x86_64)
+cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
+else
 cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
+endif
 
 mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 

+ 2 - 2
rtl/unix/cwstring.pp

@@ -771,13 +771,13 @@ begin
       StrUpperAnsiStringProc:=@AnsiStrUpper;
       ThreadInitProc:=@InitThread;
       ThreadFiniProc:=@FiniThread;
-{$ifndef VER2_2}
       { Unicode }
       Unicode2AnsiMoveProc:=@Wide2AnsiMove;
       Ansi2UnicodeMoveProc:=@Ansi2WideMove;
       UpperUnicodeStringProc:=@UpperWideString;
       LowerUnicodeStringProc:=@LowerWideString;
-{$endif VER2_2}
+      CompareUnicodeStringProc:=@CompareWideString;
+      CompareTextUnicodeStringProc:=@CompareTextWideString;
     end;
   SetUnicodeStringManager(CWideStringManager);
 end;

+ 23 - 9
rtl/win/sysutils.pp

@@ -1227,39 +1227,40 @@ end;
 
 { This is the case of Win9x. Limited to current locale of course, but it's better
   than not working at all. }
-function DoCompareStringA(const s1, s2: WideString; Flags: DWORD): PtrInt;
+function DoCompareStringA(P1, P2: PWideChar; L1, L2: PtrUInt; Flags: DWORD): PtrInt;
   var
     a1, a2: AnsiString;
   begin
-    a1:=s1;
-    a2:=s2;
+    if L1>0 then
+      widestringmanager.Wide2AnsiMoveProc(P1,a1,L1);
+    if L2>0 then
+      widestringmanager.Wide2AnsiMoveProc(P2,a2,L2);
     SetLastError(0);
     Result:=CompareStringA(LOCALE_USER_DEFAULT,Flags,pchar(a1),
       length(a1),pchar(a2),length(a2))-2;
   end;
 
-function DoCompareStringW(const s1, s2: WideString; Flags: DWORD): PtrInt;
+function DoCompareStringW(P1, P2: PWideChar; L1, L2: PtrUInt; Flags: DWORD): PtrInt;
   begin
     SetLastError(0);
-    Result:=CompareStringW(LOCALE_USER_DEFAULT,Flags,pwidechar(s1),
-      length(s1),pwidechar(s2),length(s2))-2;
+    Result:=CompareStringW(LOCALE_USER_DEFAULT,Flags,P1,L1,P2,L2)-2;
     if GetLastError=0 then
       Exit;
     if GetLastError=ERROR_CALL_NOT_IMPLEMENTED then  // Win9x case
-      Result:=DoCompareStringA(s1, s2, Flags);
+      Result:=DoCompareStringA(P1, P2, L1, L2, Flags);
     if GetLastError<>0 then
       RaiseLastOSError;
   end;
 
 function Win32CompareWideString(const s1, s2 : WideString) : PtrInt;
   begin
-    Result:=DoCompareStringW(s1, s2, 0);
+    Result:=DoCompareStringW(PWideChar(s1), PWideChar(s2), Length(s1), Length(s2), 0);
   end;
 
 
 function Win32CompareTextWideString(const s1, s2 : WideString) : PtrInt;
   begin
-    Result:=DoCompareStringW(s1, s2, NORM_IGNORECASE);
+    Result:=DoCompareStringW(PWideChar(s1), PWideChar(s2), Length(s1), Length(s2), NORM_IGNORECASE);
   end;
 
 
@@ -1340,6 +1341,17 @@ function Win32AnsiStrUpper(Str: PChar): PChar;
     result:=str;
   end;
 
+function Win32CompareUnicodeString(const s1, s2 : UnicodeString) : PtrInt;
+  begin
+    Result:=DoCompareStringW(PWideChar(s1), PWideChar(s2), Length(s1), Length(s2), 0);
+  end;
+
+
+function Win32CompareTextUnicodeString(const s1, s2 : UnicodeString) : PtrInt;
+  begin
+    Result:=DoCompareStringW(PWideChar(s1), PWideChar(s2), Length(s1), Length(s2), NORM_IGNORECASE);
+  end;
+
 
 { there is a similiar procedure in the system unit which inits the fields which
   are relevant already for the system unit }
@@ -1358,6 +1370,8 @@ procedure InitWin32Widestrings;
     widestringmanager.StrLICompAnsiStringProc:=@Win32AnsiStrLIComp;
     widestringmanager.StrLowerAnsiStringProc:=@Win32AnsiStrLower;
     widestringmanager.StrUpperAnsiStringProc:=@Win32AnsiStrUpper;
+    widestringmanager.CompareUnicodeStringProc:=@Win32CompareUnicodeString;
+    widestringmanager.CompareTextUnicodeStringProc:=@Win32CompareTextUnicodeString;
   end;
 
 

+ 61 - 61
rtl/win64/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/08/25]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/11/23]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -460,184 +460,184 @@ ifeq ($(FULL_TARGET),mipsel-linux)
 override TARGET_UNITS+=system objpas macpas buildrtl lineinfo lnfodwrf
 endif
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_LOADERS+=$(LOADERS)

+ 3 - 2
rtl/win64/Makefile.fpc

@@ -17,10 +17,11 @@ implicitunits=ctypes strings \
       varutils variants typinfo fgl classes getopts \
       stdconvs sockets printer charset ucomplex fmtbcd \
       winevent video mouse keyboard \
-      sharemem exeinfo fpintres
+      sharemem exeinfo fpintres \
+      cpu
+# mmx
 #      fpcmemdll
 #     winsysut signals
-#     cpu mmx
 #     no cygwin so far
 #	initc
 

+ 2 - 1
rtl/win64/buildrtl.pp

@@ -12,7 +12,8 @@ unit buildrtl;
       convutils, stdconvs, charset, ucomplex, getopts,
       winevent, sockets, printer,
       video, mouse, keyboard, fmtbcd,
-      sharemem, fpintres;
+      sharemem, fpintres,
+      cpu;
 
   implementation
 

+ 93 - 0
rtl/x86_64/cpu.pp

@@ -0,0 +1,93 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2000 by Florian Klaempfl
+
+    This unit contains some routines to get informations about the
+    processor
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+{$mode objfpc}
+unit cpu;
+
+  interface
+
+    uses
+      sysutils;
+
+    function InterlockedCompareExchange128Support : boolean;inline;
+    function InterlockedCompareExchange128(var Target: Int128Rec; NewValue: Int128Rec; Comperand: Int128Rec): Int128Rec;
+
+  implementation
+
+    var
+      _InterlockedCompareExchange128Support : boolean;
+
+    function InterlockedCompareExchange128Support : boolean;inline;
+      begin
+        result:=_InterlockedCompareExchange128Support;
+      end;
+
+
+    function InterlockedCompareExchange128(var Target: Int128Rec; NewValue: Int128Rec; Comperand: Int128Rec): Int128Rec; assembler;
+     {
+        win64:
+          rcx ... pointer to result
+          rdx ... target
+          r8  ... NewValue
+          r9  ... Comperand
+      }
+      asm
+        pushq %rbx
+
+        { store result pointer for later use }
+        pushq %rcx
+
+        { load new value }
+        movq (%r8),%rbx
+        movq 8(%r8),%rcx
+
+        { save target pointer for later use }
+        movq %rdx,%r8
+
+        { load comperand }
+        movq (%r9),%rax
+        movq 8(%r9),%rdx
+
+        lock cmpxchg16b (%r8)
+
+        { restore result pointer }
+        popq %rcx
+
+        { store result }
+        movq %rax,(%rcx)
+        movq %rdx,8(%rcx)
+
+        popq %rbx
+      end;
+
+
+    procedure SetupSupport;
+      var
+        _ecx : longint;
+      begin
+        asm
+           pushq %rbx
+           movl $0x00000001,%eax
+           cpuid
+           movl %ecx,_ecx
+           popq %rbx
+        end;
+        _InterlockedCompareExchange128Support:=(_ecx and $2000)<>0;
+      end;
+
+
+begin
+  SetupSupport;
+end.

+ 2 - 2
tests/test/tasmread.pp

@@ -20,8 +20,8 @@ begin
 {$ifdef darwin}
      mov [test.l-@@LPIC+ecx],5
 {$else darwin}
-     add ecx, @_GLOBAL_OFFSET_TABLE_
-     mov [ecx].OFFSET test.l,5
+     add ecx, _GLOBAL_OFFSET_TABLE_
+     mov [test.l + ecx],5
 {$endif darwin}
 {$endif FPC_PIC}
   end;

+ 30 - 0
tests/test/tcas128.pp

@@ -0,0 +1,30 @@
+{ %cpu=x86_64 }
+
+uses
+  cpu,sysutils;
+
+var
+  i1,i2,i3,i4 : int128rec;
+
+begin
+  writeln('Start');
+  i1.lo:=11;
+  i1.hi:=12;
+  i2.lo:=21;
+  i2.hi:=22;
+  i3:=i1;
+  i4.lo:=0;
+  i4.hi:=0;
+  i4:=InterlockedCompareExchange128(i1,i2,i3);
+  {
+  writeln(i4.lo);
+  writeln(i4.hi);
+  writeln(i1.lo);
+  writeln(i1.hi);
+  writeln(i2.lo);
+  writeln(i2.hi);
+  }
+  if (i4.lo<>11) or (i4.hi<>12) or (i1.lo<>i2.lo) or (i1.hi<>i2.hi) then
+    halt(1);
+  writeln('ok');
+end.

+ 0 - 0
tests/test/units/fpcunit/resref.inc → tests/test/units/fpcunit/resref2.inc


+ 0 - 0
tests/test/units/fpcunit/sllist.inc → tests/test/units/fpcunit/sllist2.inc


+ 2 - 2
tests/test/units/fpcunit/tcresref.pp

@@ -74,8 +74,8 @@ type
 implementation
 
 
-{$i sllist.inc}
-{$i resref.inc}
+{$i sllist2.inc}
+{$i resref2.inc}
 
 { ---------------------------------------------------------------------
   Auxiliary routines

+ 20 - 0
tests/webtbs/tw17591.pp

@@ -0,0 +1,20 @@
+program comparetext;
+{$ifdef FPC}{$mode objfpc}{$h+}{$endif}
+{$ifdef mswindows}{$apptype console}{$endif}
+uses
+ sysutils
+{$ifdef unix}
+ ,cwstring
+{$endif}
+;
+var
+ int1: integer;
+ ustr1,ustr2: unicodestring;
+begin
+ ustr1:= 'A';
+ ustr2:= 'a';
+ if unicodecomparestr(ustr1,ustr2)=0 then
+   halt(1);
+ if unicodecomparetext(ustr1,ustr2)<>0 then
+   halt(2);
+end.