In FastMM4.pas, the following Delphi native types are manually declared for older Delphi/C++Builder compilers:
PByte
NativeInt
NativeUInt
PNativeUInt
IntPtr
UIntPtr
The redeclaration of PByte in particular is problematic. PByte exists in Delphi's System unit going all the way back to at least Delphi 5 (I checked), but FastMM is redeclaring PByte for all compilers prior to D/CB 2009.
This is causing a conflict with Indy, which allows users to conditionally enable FastMM (for registering known memory leaks, which Indy has a few) prior to D/CB 2006 (when System.RegisterExpectedMemoryLeak() was introduced). Indy uses the FastMM4 unit in its IdGlobal unit, but only in the implementation section, not in the interface section. So, when FastMM is enabled prior to D/CB 2006, several public functions and classes in the IdGlobal unit that use PByte are generating compiler errors, because their interface declarations (where PByte = ^Byte from the RTL's System unit) do not match their implementation definitions (where PByte = PAnsiChar from FastMM).
I've already patched Indy to work around this (by having the IdGlobal unit redeclare PByte back to System.PByte when FastMM is enabled prior to D/CB 2006), but this should be fixed in FastMM itself, as it could affect other user's projects/libraries. There is no good reason for FastMM to be manually declaring PByte in D/CB 5+ at all.