c6x/* "facelift":

- 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)
This commit is contained in:
Andy Polyakov 2016-11-25 11:52:06 +01:00 committed by Dr. Stephen Henson
parent 7d91d9ea6b
commit e576b67e1a
9 changed files with 115 additions and 4 deletions

View file

@ -624,13 +624,14 @@ my %table=(
"uClinux-dist64","$ENV{'CC'}:\$(CFLAGS)::-D_REENTRANT::\$(LDFLAGS) \$(LDLIBS):SIXTY_FOUR_BIT_LONG:${no_asm}:$ENV{'LIBSSL_dlfcn'}:linux-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):$ENV{'RANLIB'}::",
"c64xplus","cl6x:-mv6400+ -o2 -ox -ms -pden -DNO_SYS_TYPES_H -DGETPID_IS_MEANINGLESS -DMD32_REG_T=int -DOPENSSL_SMALL_FOOTPRINT:<c6x.h>::DSPBIOS::BN_LLONG:c64xpluscpuid.o:bn-c64xplus.o c64xplus-gf2m.o::aes-c64xplus.o aes_cbc.o aes_ctr.o:::sha1-c64xplus.o sha256-c64xplus.o sha512-c64xplus.o:::::::ghash-c64xplus.o::void:",
"c64x","cl6x:-mv6400 -o2 -ox -ms -as -pden -DNO_SYS_TYPES_H -DGETPID_IS_MEANINGLESS -DMD32_REG_T=int -DOPENSSL_SMALL_FOOTPRINT:<c6x.h>::DSPBIOS:::c64xcpuid.o:::aes-c64x.o aes_cbc.o aes_ctr.o:::sha1-c64x.o sha256-c64x.o sha512-c64x.o:::::::::void:",
);
my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
debug-VC-WIN64I debug-VC-WIN64A
VC-NT VC-CE VC-WIN32 debug-VC-WIN32
BC-32 c64xplus
BC-32 c64xplus c64x
netware-clib netware-clib-bsdsock
netware-libc netware-libc-bsdsock);

7
c6x/do_fips Normal file → Executable file
View file

@ -1,6 +1,11 @@
#!/bin/sh
perl Configure c64xplus fipscanisteronly no-engine
if ! which cl6x > /dev/null 2>&1; then
echo 'fatal: cl6x is not on $PATH'
exit 1
fi
perl Configure ${C6XPLATFORM:-c64xplus} fipscanisteronly no-engine
perl util/mkfiles.pl > MINFO
perl util/mk1mf.pl auto > c6x/fips.mak
make -f c6x/fips.mak

14
c6x/fips_algvs.mak Normal file
View file

@ -0,0 +1,14 @@
CC=cl6x
CFLAGS=-mv$${C6XSILICON:-6400+} -o2 -I. -Ic6x/inc -Ifips -DNO_SYS_TYPES_H
OBJ_D=c6x/tmp
OUT_D=c6x
all: $(OUT_D)/fips_algvs.out
$(OBJ_D)/fips_algvs.obj: test/fips_algvs.c
$(CC) --obj_directory=$(OBJ_D) $(CFLAGS) -c $<
$(OUT_D)/fips_algvs.out: $(OBJ_D)/fips_algvs.obj $(OUT_D)/fipscanister.obj c6x/fips_algvs.cmd
$(OUT_D)/fips_standalone_sha1 -verify $(OUT_D)/fipscanister.obj
$(CC) -z -o $@ -m $(OUT_D)/fips_algvs.map $< $(OUT_D)/fipscanister.obj c6x/fips_algvs.cmd
$(OUT_D)/incore6x $@ || rm $@

0
c6x/fips_standalone_sha1 Normal file → Executable file
View file

0
c6x/incore6x Normal file → Executable file
View file

0
c6x/run6x Normal file → Executable file
View file

91
c6x/run6x.js Executable file
View file

@ -0,0 +1,91 @@
#!/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);
}

View file

@ -150,7 +150,7 @@ extern int fips_rsavtest_main(int argc, char **argv);
extern int fips_shatest_main(int argc, char **argv);
extern int fips_test_suite_main(int argc, char **argv);
#if !defined(_TMS320C6400_PLUS)
#if !defined(_TMS320C6400_PLUS) && !defined(_TMS320C6400)
#include "fips_aesavs.c"
#include "fips_cmactest.c"
#include "fips_desmovs.c"

View file

@ -249,7 +249,7 @@ elsif (($platform eq "netware-clib") || ($platform eq "netware-libc") ||
$BSDSOCK=1 if ($platform eq "netware-libc-bsdsock") || ($platform eq "netware-clib-bsdsock");
require 'netware.pl';
}
elsif ($platform eq "c64xplus")
elsif ($platform =~ /^c64x/)
{
require "TI_CGTOOLS.pl";
}