diff --git a/Ghidra/Extensions/SleighDevTools/pcodetest/build.py b/Ghidra/Extensions/SleighDevTools/pcodetest/build.py index 68f9a6483a..1c6eacce4f 100644 --- a/Ghidra/Extensions/SleighDevTools/pcodetest/build.py +++ b/Ghidra/Extensions/SleighDevTools/pcodetest/build.py @@ -14,6 +14,7 @@ # limitations under the License. ## import os +import shlex import shutil import subprocess import sys @@ -32,32 +33,28 @@ class BuildUtil: def run(self, cmd, stdout=False, stderr=False, verbose=True): if isinstance(cmd, str): - if stdout and stderr: - cmd += ' 1>%s 2>%s' % (stdout, stderr) - elif stdout and not stderr: - cmd += ' 1>%s 2>&1' % (stdout) - elif not stdout and stderr: - cmd += ' 2>%s' % (stderr) - if verbose: self.log_info(cmd) - os.system(cmd) + proc = shlex.split(cmd) + string = cmd else: - string = ' '.join(cmd) + proc = cmd + string = " ".join(cmd) + if verbose: self.log_info(string) + try: if stdout: - f = open(stdout, 'w+') - string += ' 1>%s 2>&1' % (stdout) + stdout_f = open(stdout,'w') + stderr_f = open(stderr,'w') if stderr else subprocess.STDOUT + result = subprocess.run(proc, stdout=stdout_f, stderr=stderr_f) + elif stderr: + stdout_f = None + stderr_f = open(stderr,'w') + result = subprocess.run(proc, stdout=stdout_f, stderr=stderr_f) else: - f = subprocess.PIPE - if verbose: self.log_info(string) - try: - sp = subprocess.Popen(cmd, stdout=f, stderr=subprocess.PIPE) - except OSError as e: - self.log_err("Command: " + string) - self.log_err(e.strerror) - return 0, e.strerror - if stdout: f.close() - out, err = sp.communicate() - # print 'run returned %d bytes stdout and %d bytes stderr' % (len(out) if out else 0, len(err) if err else 0) - return out, err + result = subprocess.run(proc,capture_output=True) + except OSError as e: + self.log_err("Command: " + string) + self.log_err(e.strerror) + return 0, e.strerror + return result.stdout, result.stderr def isdir(self, dname): return os.path.isdir(dname) diff --git a/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/stream/RemoteBlockStreamHandle.java b/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/stream/RemoteBlockStreamHandle.java index acf3a080c1..e8a5f2d532 100644 --- a/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/stream/RemoteBlockStreamHandle.java +++ b/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/stream/RemoteBlockStreamHandle.java @@ -4,9 +4,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -133,14 +133,6 @@ public abstract class RemoteBlockStreamHandle implements return blockSize; } - /** - * Get the preferred socket send/receive buffer size to be used - * @return preferred socket send/receive buffer size - */ - protected int getPreferredBufferSize() { - return (getBlockSize() + 4) * 12; - } - /** * Generate a random number for use as a block stream authentication token. * @return random value diff --git a/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/stream/RemoteInputBlockStreamHandle.java b/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/stream/RemoteInputBlockStreamHandle.java index 5284ceaf14..41e6ed787d 100644 --- a/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/stream/RemoteInputBlockStreamHandle.java +++ b/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/stream/RemoteInputBlockStreamHandle.java @@ -127,7 +127,6 @@ public class RemoteInputBlockStreamHandle extends RemoteBlockStreamHandle null); super.setProgramArchitecture(new ProgramArchitecture() { @@ -728,6 +730,10 @@ public class StandAloneDataTypeManager extends DataTypeManagerDB implements Clos } } + // Use ProgramAddressFactory to provide stack space + final AddressFactory addrFactory = + new ProgramAddressFactory(language, compilerSpec, s -> null); + ProgramArchitecture programArchitecture = new ProgramArchitecture() { @Override @@ -742,7 +748,7 @@ public class StandAloneDataTypeManager extends DataTypeManagerDB implements Clos @Override public AddressFactory getAddressFactory() { - return language.getAddressFactory(); + return addrFactory; } };