- make scripts executable;
- "parameterize" platform selection in c6x/do_fips;
- add c6x/fips_algvs.mak;
- add c6x/run6x.js launcher for more recent CCS versions;
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Stephen Henson <steve@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4265)
(cherry picked from commit 781280094a
)
91 lines
3.2 KiB
JavaScript
Executable file
91 lines
3.2 KiB
JavaScript
Executable file
#!/usr/bin/env dss.sh
|
|
//
|
|
// Debug Server Scripting C6x launcher.
|
|
//
|
|
|
|
importPackage(Packages.com.ti.debug.engine.scripting);
|
|
importPackage(Packages.com.ti.ccstudio.scripting.environment);
|
|
importPackage(Packages.java.lang);
|
|
|
|
if (arguments.length == 0) {
|
|
// Extract script name from eclipse
|
|
var regex = new RegExp("-dss\\.rhinoArgs\n(.*)");
|
|
var matches = regex.exec(environment["eclipse.commands"]);
|
|
|
|
System.err.println("Usage: " + matches[1] + " executable [args]");
|
|
System.err.println();
|
|
System.err.println("You're also required to set CCSTARGETCONFIG " +
|
|
"environment variable to appoint");
|
|
System.err.println("proper .ccxml file, customarily one of " +
|
|
"$HOME/ti/CCSTargetConfigurations/*.ccxml");
|
|
quit(1);
|
|
}
|
|
|
|
try {
|
|
var prog = arguments[0];
|
|
var script = ScriptingEnvironment.instance();
|
|
|
|
var debugServer = script.getServer("DebugServer.1");
|
|
|
|
// CCSTARGETCONFIG environment variable should point at proper .ccxml,
|
|
// customarily one of $HOME/ti/CCSTargetConfigurations/*.ccxml.
|
|
debugServer.setConfig(System.getenv("CCSTARGETCONFIG"));
|
|
|
|
var debugSession = debugServer.openSession("*", "*");
|
|
|
|
// Redirect GEL output to |prog|.gel file, so that it doesn't clobber
|
|
// standard output from the program...
|
|
var dot = prog.lastIndexOf(".");
|
|
var gel_out = prog + ".gel";
|
|
if (dot > 0) {
|
|
gel_out = prog.substr(0,dot) + ".gel";
|
|
}
|
|
debugSession.expression.evaluate('GEL_EnableFileOutput("'
|
|
+ gel_out + '", 0, 0)');
|
|
|
|
debugSession.target.connect();
|
|
|
|
// It should be noted that "current working directory" for program
|
|
// executed on the target system is one where |prog| resides, and
|
|
// not where script executed [as one would expect]...
|
|
debugSession.memory.loadProgram(prog, arguments);
|
|
|
|
// Pull exit()'s address and set breakpoint, then just execute till
|
|
// it's reached...
|
|
var exitAddr = debugSession.symbol.getAddress("exit");
|
|
debugSession.breakpoint.add(exitAddr);
|
|
|
|
while (1) {
|
|
debugSession.target.run();
|
|
|
|
var PC = debugSession.expression.evaluate("PC");
|
|
if (PC == exitAddr) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Snatch value passed to exit(), so that it can be passed down to
|
|
// shell as exit code from this script...
|
|
var exitCode = debugSession.expression.evaluate("A4");
|
|
|
|
// Last run to termination...
|
|
debugSession.target.run();
|
|
// Clean up...
|
|
debugSession.terminate();
|
|
debugServer.stop();
|
|
|
|
// It should be noted that there is kind of a bug in C6x run-time.
|
|
// Return value from main() is not passed to last implicit exit()
|
|
// call [as it would on other systems], but instead constant 1 is
|
|
// passed, which conventionally indicates an error. So that if one
|
|
// wants to pass specific exit code, or even 0 indicating "success",
|
|
// one has to call exit() explicitly instead of relying on value
|
|
// returned by main()...
|
|
quit(exitCode);
|
|
|
|
} catch (e) {
|
|
// We catch everything, because default handler terminates script with
|
|
// "success" exit code upon exception...
|
|
System.err.println(e.rhinoException);
|
|
quit(139);
|
|
}
|