Index: include/lldb/Target/Platform.h =================================================================== --- include/lldb/Target/Platform.h +++ include/lldb/Target/Platform.h @@ -752,7 +752,7 @@ Unlink(const FileSpec &file_spec); virtual uint64_t - ConvertMmapFlagsToPlatform(unsigned flags); + ConvertMmapFlagsToPlatform(const ArchSpec &arch, unsigned flags); virtual bool GetSupportsRSync () Index: source/Plugins/Platform/Linux/PlatformLinux.h =================================================================== --- source/Plugins/Platform/Linux/PlatformLinux.h +++ source/Plugins/Platform/Linux/PlatformLinux.h @@ -120,7 +120,7 @@ NativeProcessProtocolSP &process_sp) override; uint64_t - ConvertMmapFlagsToPlatform(unsigned flags) override; + ConvertMmapFlagsToPlatform(const ArchSpec &arch, unsigned flags) override; private: DISALLOW_COPY_AND_ASSIGN (PlatformLinux); Index: source/Plugins/Platform/Linux/PlatformLinux.cpp =================================================================== --- source/Plugins/Platform/Linux/PlatformLinux.cpp +++ source/Plugins/Platform/Linux/PlatformLinux.cpp @@ -896,12 +896,21 @@ } uint64_t -PlatformLinux::ConvertMmapFlagsToPlatform(unsigned flags) +PlatformLinux::ConvertMmapFlagsToPlatform(const ArchSpec &arch, unsigned flags) { uint64_t flags_platform = 0; + uint64_t map_anon = MAP_ANON; + + // To get correct flags for MIPS Architecture + if (arch.GetTriple ().getArch () == llvm::Triple::mips64 + || arch.GetTriple ().getArch () == llvm::Triple::mips64el + || arch.GetTriple ().getArch () == llvm::Triple::mips + || arch.GetTriple ().getArch () == llvm::Triple::mipsel) + map_anon = 0x800; + if (flags & eMmapFlagsPrivate) flags_platform |= MAP_PRIVATE; if (flags & eMmapFlagsAnon) - flags_platform |= MAP_ANON; + flags_platform |= map_anon; return flags_platform; } Index: source/Plugins/Process/Utility/InferiorCallPOSIX.cpp =================================================================== --- source/Plugins/Process/Utility/InferiorCallPOSIX.cpp +++ source/Plugins/Process/Utility/InferiorCallPOSIX.cpp @@ -86,7 +86,8 @@ prot_arg |= PROT_WRITE; } - flags_arg = process->GetTarget().GetPlatform()->ConvertMmapFlagsToPlatform(flags); + const ArchSpec arch = process->GetTarget().GetArchitecture(); + flags_arg = process->GetTarget().GetPlatform()->ConvertMmapFlagsToPlatform(arch,flags); AddressRange mmap_range; if (sc.GetAddressRange(range_scope, 0, use_inline_block_range, mmap_range)) Index: source/Target/Platform.cpp =================================================================== --- source/Target/Platform.cpp +++ source/Target/Platform.cpp @@ -1500,7 +1500,7 @@ } uint64_t -Platform::ConvertMmapFlagsToPlatform(unsigned flags) +Platform::ConvertMmapFlagsToPlatform(const ArchSpec &arch, unsigned flags) { uint64_t flags_platform = 0; if (flags & eMmapFlagsPrivate)