Skip to content

Commit f54e89d

Browse files
Dimus77igcbot
authored andcommitted
Changes in code.
1 parent 03cacdf commit f54e89d

File tree

9 files changed

+45
-55
lines changed

9 files changed

+45
-55
lines changed

IGC/Compiler/CISACodeGen/CISABuilder.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4422,6 +4422,14 @@ namespace IGC
44224422
std::string asmName;
44234423
if (m_enableVISAdump || context->m_instrTypes.hasDebugInfo)
44244424
{
4425+
// vISA does not support string of length >= 255. Truncate if this exceeds
4426+
// the limit. Note that vISA may append an extension, so relax it to a
4427+
// random number 240 here.
4428+
const int MAX_VISA_STRING_LENGTH = 240;
4429+
if (kernelName.size() >= MAX_VISA_STRING_LENGTH)
4430+
{
4431+
kernelName.resize(MAX_VISA_STRING_LENGTH);
4432+
}
44254433
asmName = GetDumpFileName("asm");
44264434
}
44274435
else

IGC/DebugInfo/VISADebugDecoder.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ namespace IGC
352352
for (unsigned int i = 0; i != numCompiledObj; i++)
353353
{
354354
DbgInfoFormat f;
355-
uint16_t nameLen = read<uint16_t>(dbg);
355+
uint8_t nameLen = read<uint8_t>(dbg);
356356
for (unsigned int j = 0; j != nameLen; j++)
357357
f.kernelName += read<char>(dbg);
358358
f.relocOffset = read<uint32_t>(dbg);
@@ -381,7 +381,7 @@ namespace IGC
381381
{
382382
VarInfo v;
383383

384-
nameLen = read<uint16_t>(dbg);
384+
nameLen = read<uint8_t>(dbg);
385385
for (unsigned int k = 0; k != nameLen; k++)
386386
v.name += read<char>(dbg);
387387

@@ -400,7 +400,7 @@ namespace IGC
400400
for (unsigned int j = 0; j != count; j++)
401401
{
402402
SubroutineInfo sub;
403-
nameLen = read<uint16_t>(dbg);
403+
nameLen = read<uint8_t>(dbg);
404404
for (unsigned int k = 0; k != nameLen; k++)
405405
sub.name += read<char>(dbg);
406406

visa/BuildCISAIRImpl.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ int CISA_IR_Builder::ClearAsmTextStreams()
346346

347347
int CISA_IR_Builder::AddKernel(VISAKernel *& kernel, const char* kernelName)
348348
{
349+
349350
if (kernel)
350351
{
351352
assert(0);
@@ -779,9 +780,7 @@ int CISA_IR_Builder::Compile(const char* nameInput, std::ostream* os, bool emit_
779780
kernel->getIRBuilder()->setRetVarSize(kernel->getKernelFormat()->return_value_size);
780781
}
781782

782-
auto nameLen = strlen((*iter)->getKernel()->getName()) + 1;
783-
pseudoHeader.functions[k].name = (char*)mem.alloc(nameLen);
784-
strcpy_s(pseudoHeader.functions[k].name, nameLen, (*iter)->getKernel()->getName());
783+
strcpy_s((char*)&pseudoHeader.functions[k].name, COMMON_ISA_MAX_FILENAME_LENGTH, (*iter)->getKernel()->getName());
785784
k++;
786785
}
787786

visa/Common_ISA.cpp

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -374,17 +374,9 @@ int processCommonISAHeader(
374374
}
375375

376376
for (int i = 0; i < cisaHdr.num_kernels; i++) {
377-
if (cisaHdr.major_version == 3 && cisaHdr.minor_version < 7)
378-
{
379-
READ_FIELD_FROM_BUF(cisaHdr.kernels[i].name_len, uint8_t);
380-
}
381-
else
382-
{
383-
READ_FIELD_FROM_BUF(cisaHdr.kernels[i].name_len, uint16_t);
384-
}
385-
cisaHdr.kernels[i].name = (char*)mem->alloc(cisaHdr.kernels[i].name_len + 1);
377+
READ_FIELD_FROM_BUF(cisaHdr.kernels[i].name_len, uint8_t);
386378
memcpy_s(
387-
cisaHdr.kernels[i].name, cisaHdr.kernels[i].name_len * sizeof(uint8_t), &buf[byte_pos],
379+
cisaHdr.kernels[i].name, COMMON_ISA_MAX_FILENAME_LENGTH, &buf[byte_pos],
388380
cisaHdr.kernels[i].name_len * sizeof(uint8_t));
389381
cisaHdr.kernels[i].name[cisaHdr.kernels[i].name_len] = '\0';
390382
byte_pos += cisaHdr.kernels[i].name_len;
@@ -436,17 +428,9 @@ int processCommonISAHeader(
436428
// field is deprecated
437429
READ_FIELD_FROM_BUF(cisaHdr.functions[i].linkage, uint8_t);
438430

439-
if (cisaHdr.major_version == 3 && cisaHdr.minor_version < 7)
440-
{
441-
READ_FIELD_FROM_BUF(cisaHdr.functions[i].name_len, uint8_t);
442-
}
443-
else
444-
{
445-
READ_FIELD_FROM_BUF(cisaHdr.functions[i].name_len, uint16_t);
446-
}
447-
cisaHdr.functions[i].name = (char*)mem->alloc(cisaHdr.functions[i].name_len + 1);
431+
READ_FIELD_FROM_BUF(cisaHdr.functions[i].name_len, uint8_t);
448432
memcpy_s(
449-
cisaHdr.functions[i].name, cisaHdr.functions[i].name_len * sizeof(uint8_t), &buf[byte_pos],
433+
cisaHdr.functions[i].name, COMMON_ISA_MAX_FILENAME_LENGTH, &buf[byte_pos],
450434
cisaHdr.functions[i].name_len * sizeof(uint8_t));
451435
cisaHdr.functions[i].name[
452436
cisaHdr.functions[i].name_len] = '\0';

visa/Common_ISA.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class G4_Declare;
4545
#define COMMON_ISA_MAGIC_NUM 0x41534943
4646

4747
#define COMMON_ISA_MAJOR_VER 3
48-
#define COMMON_ISA_MINOR_VER 7
48+
#define COMMON_ISA_MINOR_VER 6
4949

5050
#define COMMON_ISA_MAX_ADDRESS_SIZE 16
5151
#define COMMON_ISA_MAX_SURFACE_SIZE 128
@@ -390,8 +390,8 @@ typedef struct {
390390
} gen_binary_info;
391391

392392
struct kernel_info_t {
393-
unsigned short name_len;
394-
char* name;
393+
unsigned char name_len;
394+
char name[COMMON_ISA_MAX_FILENAME_LENGTH];
395395
unsigned int offset;
396396
unsigned int size;
397397
unsigned int input_offset;
@@ -411,8 +411,8 @@ struct kernel_info_t {
411411

412412
struct function_info_t {
413413
unsigned char linkage;
414-
unsigned short name_len;
415-
char* name;
414+
unsigned char name_len;
415+
char name[COMMON_ISA_MAX_FILENAME_LENGTH];
416416
unsigned int offset;
417417
unsigned int size;
418418
reloc_symtab variable_reloc_symtab; // ded, but leave here to avoid breaking old vISA binary

visa/Common_ISA_framework.cpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,11 @@ void CisaBinary::initKernel(int kernelIndex, VISAKernelImpl * kernel)
169169

170170
int nameLen = (int) strlen(kernel->getName());
171171

172+
MUST_BE_TRUE(nameLen <= COMMON_ISA_MAX_FILENAME_LENGTH,
173+
"Kernel Name exceeds maximum length allowed.\n");
174+
175+
176+
172177
if (this->getMajorVersion())
173178
{
174179
if (kernel->getIsKernel())
@@ -182,10 +187,8 @@ void CisaBinary::initKernel(int kernelIndex, VISAKernelImpl * kernel)
182187

183188
if (kernel->getIsKernel())
184189
{
185-
m_header.kernels[kernelIndex].name_len = (unsigned short) nameLen;
186-
m_header.kernels[kernelIndex].name = (char*)m_mem.alloc(nameLen + 1);
187-
m_header.kernels[kernelIndex].name[nameLen] = 0;
188-
memcpy_s(m_header.kernels[kernelIndex].name, m_header.kernels[kernelIndex].name_len, kernel->getName(), m_header.kernels[kernelIndex].name_len);
190+
m_header.kernels[kernelIndex].name_len = (unsigned char) nameLen;
191+
memcpy_s(&m_header.kernels[kernelIndex].name, COMMON_ISA_MAX_FILENAME_LENGTH, kernel->getName(), m_header.kernels[kernelIndex].name_len);
189192

190193
m_header.kernels[kernelIndex].offset = 0; //will be set later during finalize
191194
m_header.kernels[kernelIndex].size = kernel->getCisaBinarySize();
@@ -208,10 +211,9 @@ void CisaBinary::initKernel(int kernelIndex, VISAKernelImpl * kernel)
208211
if (!kernel->getIsKernel())
209212
{
210213
m_header.functions[functionIndex].linkage = 0; // deprecated and MBZ
211-
m_header.functions[functionIndex].name_len = (unsigned short) nameLen;
212-
m_header.functions[functionIndex].name = (char*)m_mem.alloc(nameLen + 1);
213-
memcpy_s(m_header.functions[functionIndex].name, m_header.functions[functionIndex].name_len, kernel->getName(), m_header.functions[functionIndex].name_len);
214-
m_header.functions[functionIndex].name[nameLen] = 0;
214+
m_header.functions[functionIndex].name_len = (unsigned char) nameLen;
215+
memcpy_s(&m_header.functions[functionIndex].name, COMMON_ISA_MAX_FILENAME_LENGTH, kernel->getName(), m_header.functions[functionIndex].name_len);
216+
215217
m_header.functions[functionIndex].offset = 0; //will be set later during finalize
216218
m_header.functions[functionIndex].size = kernel->getCisaBinarySize();
217219
m_header.functions[functionIndex].cisa_binary_buffer = kernel->getCisaBinaryBuffer(); //buffer containing entire kernel
@@ -254,7 +256,8 @@ int CisaBinary::finalizeCisaBinary()
254256
for (int i = 0; i < m_header.num_kernels; i++)
255257
{
256258
writeInToCisaHeaderBuffer(&m_header.kernels[i].name_len, sizeof(m_header.kernels[i].name_len));
257-
writeInToCisaHeaderBuffer(m_header.kernels[i].name, m_header.kernels[i].name_len);
259+
260+
writeInToCisaHeaderBuffer(&m_header.kernels[i].name, m_header.kernels[i].name_len);
258261

259262
//setting offset to the compiled cisa binary kernel
260263
//to correct offset in final cisa binary
@@ -310,7 +313,8 @@ int CisaBinary::finalizeCisaBinary()
310313
{
311314
writeInToCisaHeaderBuffer(&m_header.functions[i].linkage, sizeof(m_header.functions[i].linkage));
312315
writeInToCisaHeaderBuffer(&m_header.functions[i].name_len, sizeof(m_header.functions[i].name_len));
313-
writeInToCisaHeaderBuffer(m_header.functions[i].name, m_header.functions[i].name_len);
316+
317+
writeInToCisaHeaderBuffer(&m_header.functions[i].name, m_header.functions[i].name_len);
314318

315319
//setting offset to the compiled cisa binary kernel
316320
//to correct offset in final cisa binary

visa/Common_ISA_util.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,7 +1126,7 @@ int vector_opnd::getSizeInBinary() const
11261126
/*
11271127
function_info {
11281128
ub linkage; // MBZ
1129-
uw name_len;
1129+
ub name_len;
11301130
ub name[name_len];
11311131
ud offset;
11321132
ud size;
@@ -1147,7 +1147,7 @@ uint32_t function_info_t::getSizeInBinary() const
11471147

11481148
/*
11491149
kernel_info {
1150-
uw name_len;
1150+
ub name_len;
11511151
ub name[name_len];
11521152
ud offset;
11531153
ud size;

visa/DebugInfo.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,24 +59,19 @@ int32_t get32BitSignedIntFrom31BitSignedInt(uint32_t data)
5959

6060
void DbgDecoder::ddName()
6161
{
62-
uint16_t nameLen;
63-
auto retval = fread(&nameLen, sizeof(uint16_t), 1, dbgFile);
62+
uint8_t nameLen;
63+
auto retval = fread(&nameLen, sizeof(uint8_t), 1, dbgFile);
6464
if (!retval)
6565
return;
6666

67-
auto name = (char*)malloc(nameLen + 1);
67+
char name[COMMON_ISA_MAX_KERNEL_NAME_LEN + 1];
6868
retval = fread(name, sizeof(uint8_t), nameLen, dbgFile);
6969
if (!retval)
70-
{
71-
free(name);
7270
return;
73-
}
7471

7572
name[nameLen] = 0;
7673

7774
std::cout << name;
78-
79-
free(name);
8075
}
8176

8277
template<class T>
@@ -967,9 +962,9 @@ uint32_t KernelDebugInfo::getVarIndex(G4_Declare* dcl)
967962
template<class T>
968963
void emitDataName(const char* name, T& t)
969964
{
970-
auto length = (uint16_t)strlen(name);
965+
auto length = (uint8_t)strlen(name);
971966
// Length
972-
insertData(&length, sizeof(uint16_t), t);
967+
insertData(&length, sizeof(uint8_t), t);
973968
// Actual name
974969
insertData(name, (uint32_t) (sizeof(uint8_t) * length), t);
975970
}

visa/DebugInfo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ struct DebugFormatHeader
467467
468468
struct DebugInfoFormat
469469
{
470-
uint16_t kernelNameLen;
470+
uint8_t kernelNameLen;
471471
char kernelName[kernelNameLen];
472472
uint32_t reloc_offset; // 0 for kernel, non-zero for stack call functions
473473
@@ -540,7 +540,7 @@ struct CallFrameInfo
540540
541541
struct VarName
542542
{
543-
uint16_t varNameLen;
543+
uint8_t varNameLen;
544544
char varName[varNameLen];
545545
}
546546

0 commit comments

Comments
 (0)