fix for XDCTOOLS-397 and XDCTOOLS-413
diff --git a/src/packages/xdc/rov/Model.xs b/src/packages/xdc/rov/Model.xs
index 8f09ad4..4b3671b 100644
--- a/src/packages/xdc/rov/Model.xs
+++ b/src/packages/xdc/rov/Model.xs
@@ -398,65 +398,12 @@
if (elfTarget.bigendian == true) {
targ.model.endian = "big";
}
- function getSize(typename) {
- var tspec =
- xdc.module("xdc.rov.Model").$private.ofReader.getType(typename);
- var sz;
- if (tspec != null) {
- sz = tspec.size;
- }
- /* All the special cases below are because of IAR, which doesn't
- * always define all basic types.
- */
- else if (typename == "long long") {
- return (getSize("unsigned long long"));
- }
- else if (typename == "short") {
- return (getSize("unsigned short"));
- }
- else if (typename.indexOf("int") == 0) {
- return (getSize("u" + typename));
- }
- else if (typename.indexOf("least32") != -1) {
- return 4;
- }
- else if (typename.indexOf("least64") != -1) {
- return 8;
- }
- else if (typename == "float" || typename == "double"
- || typename == "long double") {
- /* some toolchains (IAR, for example) don't always define
- * floating point types.
- */
- var Program = xdc.useModule('xdc.rov.Program');
- Program.debugPrint("xdc.rov.Model: ELF file doesn't define "
- + typename);
- }
- else {
- var Program = xdc.useModule('xdc.rov.Program');
- Program.debugPrint("xdc.rov.Model: ELF file doesn't define "
- + typename);
- }
- return (sz);
+ var stdTypes = recap.stdTypes[elfTarget.machine];
+ if (stdTypes == null) {
+ throw new Error("ROV cannot detect target architecture for the "
+ + "executable " + execPath);
+ );
}
- var stdTypes = {
- t_Char: {size: getSize("unsigned char")},
- t_Double: {size: getSize("double")},
- t_Float: {size: getSize("float")},
- t_Fxn: {size: elfTarget.ptrsize},
- t_IArg: {size: getSize("intptr_t")},
- t_Int: {size: getSize("int")},
- t_Int8: {size: getSize("int_least8_t")},
- t_Int16: {size: getSize("int_least16_t")},
- t_Int32: {size: getSize("int_least32_t")},
- t_Int64: {size: getSize("int_least64_t")},
- t_LDouble: {size: getSize("long double")},
- t_LLong: {size: getSize("long long")},
- t_Long: {size: getSize("long")},
- t_Ptr: {size: elfTarget.ptrsize},
- t_Short: {size: getSize("short")},
- t_Size: {size: getSize("size_t")}
- };
targ.stdTypes = stdTypes;
build.target = targ;
recap.build = build;
diff --git a/src/packages/xdc/rov/noruntime.rov.xs b/src/packages/xdc/rov/noruntime.rov.xs
index cb09ec8..062cbdd 100644
--- a/src/packages/xdc/rov/noruntime.rov.xs
+++ b/src/packages/xdc/rov/noruntime.rov.xs
@@ -6055,4 +6055,72 @@
__o['$name'] = String(java.net.URLDecoder.decode('ti.targets.arm.elf.M4F%2FversionMap', 'UTF-8'))
delete __o
-delete __obj
\ No newline at end of file
+delete __obj
+
+this.stdTypes = [];
+
+/* ARM */
+this.stdTypes[40] = {
+ t_IArg : { size: 4, align: 4 },
+ t_Char : { size: 1, align: 1 },
+ t_Double : { size: 8, align: 8 },
+ t_Float : { size: 4, align: 4 },
+ t_Fxn : { size: 4, align: 4 },
+ t_Int : { size: 4, align: 4 },
+ t_Int8 : { size: 1, align: 1 },
+ t_Int16 : { size: 2, align: 2 },
+ t_Int32 : { size: 4, align: 4 },
+ t_Int64 : { size: 8, align: 8 },
+ t_Long : { size: 4, align: 4 },
+ t_LDouble : { size: 8, align: 8 },
+ t_LLong : { size: 8, align: 8 },
+ t_Ptr : { size: 4, align: 4 },
+ t_Short : { size: 2, align: 2 },
+ t_Size : { size: 4, align: 4 }
+};
+
+/* C6000 */
+this.stdTypes[140] = this.stdTypes[40];
+
+/* C2800 ELF */
+this.stdTypes[141] = {
+ t_IArg : { size: 2, align: 2 },
+ t_Char : { size: 1, align: 1 },
+ t_Double : { size: 4, align: 4 },
+ t_Float : { size: 2, align: 2 },
+ t_Fxn : { size: 2, align: 2 },
+ t_Int : { size: 1, align: 1 },
+ t_Int8 : { size: 1, align: 1 },
+ t_Int16 : { size: 1, align: 1 },
+ t_Int32 : { size: 2, align: 2 },
+ t_Int64 : { size: 4, align: 2 },
+ t_Long : { size: 2, align: 2 },
+ t_LDouble : { size: 2, align: 2 },
+ t_LLong : { size: 4, align: 2 },
+ t_Ptr : { size: 2, align: 2 },
+ t_Short : { size: 1, align: 1 },
+ t_Size : { size: 2, align: 2 },
+};
+
+/* C71 */
+this.stdTypes[145] = {
+ t_IArg : { size: 8, align: 8 },
+ t_Char : { size: 1, align: 1 },
+ t_Double : { size: 8, align: 8 },
+ t_Float : { size: 4, align: 4 },
+ t_Fxn : { size: 8, align: 8 },
+ t_Int : { size: 4, align: 4 },
+ t_Int8 : { size: 1, align: 1 },
+ t_Int16 : { size: 2, align: 2 },
+ t_Int32 : { size: 4, align: 4 },
+ t_Int64 : { size: 8, align: 8 },
+ t_Long : { size: 8, align: 8 },
+ t_LDouble : { size: 8, align: 8 },
+ t_LLong : { size: 8, align: 8 },
+ t_Ptr : { size: 8, align: 8 },
+ t_Short : { size: 2, align: 2 },
+ t_Size : { size: 8, align: 8 },
+};
+
+/* Arm 64 */
+this.stdTypes[183] = this.stdTypes[145];