From 6397d8df302d964740dca942445165d4c2a6c0aa Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 21 Apr 2019 10:21:07 +0000 Subject: [PATCH] re PR d/90064 (InSituRegion lacks SPARC64 support) PR d/90064 libphobos: Merge upstream phobos 428460ddd Defines growDownwards on SPARC64, initial patch by Rainer Orth. Backports another fix to std.process, allowing permissions tests to be skipped when running as root. Reviewed-on: https://github.com/dlang/phobos/pull/6962 From-SVN: r270483 --- libphobos/src/MERGE | 2 +- .../allocator/building_blocks/region.d | 1 + libphobos/src/std/process.d | 17 ++++++++++------- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/libphobos/src/MERGE b/libphobos/src/MERGE index b4d44b55624..3935c059403 100644 --- a/libphobos/src/MERGE +++ b/libphobos/src/MERGE @@ -1,4 +1,4 @@ -cf95639ffd9ed6f3b9d10d98461b2fbd31615757 +428460ddd8087fa28815e613ff04facb51108a7b The first line of this file holds the git revision number of the last merge done from the dlang/phobos repository. diff --git a/libphobos/src/std/experimental/allocator/building_blocks/region.d b/libphobos/src/std/experimental/allocator/building_blocks/region.d index 3d8431c23ca..43dfdb788e5 100644 --- a/libphobos/src/std/experimental/allocator/building_blocks/region.d +++ b/libphobos/src/std/experimental/allocator/building_blocks/region.d @@ -395,6 +395,7 @@ struct InSituRegion(size_t size, size_t minAlign = platformAlignment) else version (RISCV32) enum growDownwards = Yes.growDownwards; else version (RISCV64) enum growDownwards = Yes.growDownwards; else version (SPARC) enum growDownwards = Yes.growDownwards; + else version (SPARC64) enum growDownwards = Yes.growDownwards; else version (SystemZ) enum growDownwards = Yes.growDownwards; else static assert(0, "Dunno how the stack grows on this architecture."); diff --git a/libphobos/src/std/process.d b/libphobos/src/std/process.d index a1cac2c9fdf..b0310a870d9 100644 --- a/libphobos/src/std/process.d +++ b/libphobos/src/std/process.d @@ -1188,13 +1188,16 @@ version (Posix) @system unittest // can't run in directory if user does not have search permission on this directory version (Posix) { - import core.sys.posix.sys.stat : S_IRUSR; - auto directoryNoSearch = uniqueTempPath(); - mkdir(directoryNoSearch); - scope(exit) rmdirRecurse(directoryNoSearch); - setAttributes(directoryNoSearch, S_IRUSR); - assertThrown!ProcessException(spawnProcess(prog.path, null, Config.none, directoryNoSearch)); - assertThrown!ProcessException(spawnProcess(prog.path, null, Config.detached, directoryNoSearch)); + if (core.sys.posix.unistd.getuid() != 0) + { + import core.sys.posix.sys.stat : S_IRUSR; + auto directoryNoSearch = uniqueTempPath(); + mkdir(directoryNoSearch); + scope(exit) rmdirRecurse(directoryNoSearch); + setAttributes(directoryNoSearch, S_IRUSR); + assertThrown!ProcessException(spawnProcess(prog.path, null, Config.none, directoryNoSearch)); + assertThrown!ProcessException(spawnProcess(prog.path, null, Config.detached, directoryNoSearch)); + } } }