diff --git a/packages/fcl-net/fpmake.pp b/packages/fcl-net/fpmake.pp index eff5028679..07b1d1fc99 100644 --- a/packages/fcl-net/fpmake.pp +++ b/packages/fcl-net/fpmake.pp @@ -73,7 +73,7 @@ begin end; T.ResourceStrings := True; - T:=P.Targets.AddUnit('cnetdb.pp',[linux,freebsd,solaris]); + T:=P.Targets.AddUnit('cnetdb.pp',[linux,freebsd,solaris,android]); P.ExamplePath.Add('examples'); P.Targets.AddExampleProgram('examples/ip6test.pp'); diff --git a/packages/fcl-net/src/cnetdb.pp b/packages/fcl-net/src/cnetdb.pp index ae871d6c5f..89ae393f08 100644 --- a/packages/fcl-net/src/cnetdb.pp +++ b/packages/fcl-net/src/cnetdb.pp @@ -233,7 +233,7 @@ type {$if defined(LINUX) or defined(OPENBSD)} {$define FIRST_ADDR_THEN_CANONNAME} {$endif} -{$if defined(FREEBSD) or defined(NETBSD) or defined(DRAGONFLY) or defined(SOLARIS)} +{$if defined(FREEBSD) or defined(NETBSD) or defined(DRAGONFLY) or defined(SOLARIS) or defined(ANDROID)} {$define FIRST_CANONNAME_THEN_ADDR} {$endif} {$if not defined(FIRST_CANONNAME_THEN_ADDR) and not defined(FIRST_ADDR_THEN_CANONNAME)} diff --git a/packages/rtl-extra/src/inc/sockets.inc b/packages/rtl-extra/src/inc/sockets.inc index 442c71cf77..e62b6e4381 100644 --- a/packages/rtl-extra/src/inc/sockets.inc +++ b/packages/rtl-extra/src/inc/sockets.inc @@ -452,6 +452,7 @@ Var Part : String; ZeroAt : Integer; Begin FillChar(IPv6,SizeOf(IPv6),0); + FillChar(StrToHostAddr6,SizeOf(TIn6_addr),0); { Every 16-bit block is converted at its own and stored into Result. When } { the '::' zero-spacer is found, its location is stored. Afterwards the } { address is shifted and zero-filled. } @@ -469,7 +470,7 @@ Begin if J <> 0 then Begin FillChar(IPv6,SizeOf(IPv6),0); - Exit; + Exit(IPV6); End; if IP[1] = ':' then Begin diff --git a/packages/winunits-jedi/src/jedi.inc b/packages/winunits-jedi/src/jedi.inc index a9c049e05c..11acccc96a 100644 --- a/packages/winunits-jedi/src/jedi.inc +++ b/packages/winunits-jedi/src/jedi.inc @@ -401,7 +401,9 @@ { Set FreePascal to Delphi mode } {$IFDEF FPC} {$MODE DELPHI} - {$ASMMODE Intel} + {$IF DEFINED(CPUI386) OR DEFINED(CPUX86_64)} + {$ASMMODE Intel} + {$ENDIF CPUI386 OR CPUX86_64} {$UNDEF BORLAND} // FPC defines CPU* and Unix automatically {$ENDIF} diff --git a/packages/winunits-jedi/src/jwanative.pas b/packages/winunits-jedi/src/jwanative.pas index a98e018b2a..81a270ecf7 100644 --- a/packages/winunits-jedi/src/jwanative.pas +++ b/packages/winunits-jedi/src/jwanative.pas @@ -8350,10 +8350,12 @@ end; function RtlUshortByteSwap(Source: USHORT): USHORT; asm + {$if defined(cpux86_64) or defined(cpui386)} {$ifdef cpux86_64} mov CX, AX {$endif cpux86_64} rol AX, 08h + {$endif cpux86_64 or cpui386} end; (* Own function to swap bytes in 32bit values @@ -8367,10 +8369,12 @@ asm // This is not written as mnemonics to be compatible with D4! db 0Fh, 0C8h // "bswap EAX" can only be executed on 486+!!! {$else} + {$if defined(cpux86_64) or defined(cpui386)} {$ifdef cpux86_64} mov ECX, EAX {$endif cpux86_64} bswap EAX // .. but bswap EAX is also 64-bit!!! 0F C8 isn't. + {$endif cpux86_64 or cpui386} {$endif} (*