changed logging in runmem to be optional: ENABLE_BASIC_LOGGING and ENABLE_LOGGING

This commit is contained in:
Nicolas Kruse 2025-10-18 23:10:40 +02:00
parent 00110f7747
commit 0e36b672d8
3 changed files with 29 additions and 16 deletions

View File

@ -50,7 +50,7 @@ jobs:
- name: Compile coparun - name: Compile coparun
run: | run: |
mkdir -p bin mkdir -p bin
gcc -O3 -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -Werror -g src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o bin/coparun gcc -DENABLE_BASIC_LOGGING -O3 -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -Werror -g src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o bin/coparun
- name: Generate debug asm files - name: Generate debug asm files
if: strategy.job-index == 0 if: strategy.job-index == 0

View File

@ -4,6 +4,16 @@
#include "runmem.h" #include "runmem.h"
#include "mem_man.h" #include "mem_man.h"
#ifdef ENABLE_LOGGING
#define LOG(...) printf(__VA_ARGS__)
#define BLOG(...) printf(__VA_ARGS__)
#elif ENABLE_BASIC_LOGGING
#define LOG(...)
#define BLOG(...) printf(__VA_ARGS__)
#else
#define LOG(...)
#endif
/* Globals declared extern in runmem.h */ /* Globals declared extern in runmem.h */
uint8_t *data_memory = NULL; uint8_t *data_memory = NULL;
uint32_t data_memory_len = 0; uint32_t data_memory_len = 0;
@ -21,7 +31,7 @@ int patch(uint8_t *patch_addr, uint32_t reloc_type, int32_t value) {
if (reloc_type == PATCH_RELATIVE_32) { if (reloc_type == PATCH_RELATIVE_32) {
patch_mem_32(patch_addr, value); patch_mem_32(patch_addr, value);
}else{ }else{
printf("Not implemented"); LOG("Not implemented");
return 0; return 0;
} }
return 1; return 1;
@ -60,14 +70,14 @@ int parse_commands(uint8_t *bytes) {
size = *(uint32_t*)bytes; bytes += 4; size = *(uint32_t*)bytes; bytes += 4;
data_memory = allocate_data_memory(size); data_memory = allocate_data_memory(size);
data_memory_len = size; data_memory_len = size;
printf("ALLOCATE_DATA size=%i mem_addr=%p\n", size, (void*)data_memory); LOG("ALLOCATE_DATA size=%i mem_addr=%p\n", size, (void*)data_memory);
if (!update_data_offs()) end_flag = -4; if (!update_data_offs()) end_flag = -4;
break; break;
case COPY_DATA: case COPY_DATA:
offs = *(uint32_t*)bytes; bytes += 4; offs = *(uint32_t*)bytes; bytes += 4;
size = *(uint32_t*)bytes; bytes += 4; size = *(uint32_t*)bytes; bytes += 4;
printf("COPY_DATA offs=%i size=%i\n", offs, size); LOG("COPY_DATA offs=%i size=%i\n", offs, size);
memcpy(data_memory + offs, bytes, size); bytes += size; memcpy(data_memory + offs, bytes, size); bytes += size;
break; break;
@ -75,15 +85,15 @@ int parse_commands(uint8_t *bytes) {
size = *(uint32_t*)bytes; bytes += 4; size = *(uint32_t*)bytes; bytes += 4;
executable_memory = allocate_executable_memory(size); executable_memory = allocate_executable_memory(size);
executable_memory_len = size; executable_memory_len = size;
printf("ALLOCATE_CODE size=%i mem_addr=%p\n", size, (void*)executable_memory); LOG("ALLOCATE_CODE size=%i mem_addr=%p\n", size, (void*)executable_memory);
//printf("# d %i c %i off %i\n", data_memory, executable_memory, data_offs); //LOG("# d %i c %i off %i\n", data_memory, executable_memory, data_offs);
if (!update_data_offs()) end_flag = -4; if (!update_data_offs()) end_flag = -4;
break; break;
case COPY_CODE: case COPY_CODE:
offs = *(uint32_t*)bytes; bytes += 4; offs = *(uint32_t*)bytes; bytes += 4;
size = *(uint32_t*)bytes; bytes += 4; size = *(uint32_t*)bytes; bytes += 4;
printf("COPY_CODE offs=%i size=%i\n", offs, size); LOG("COPY_CODE offs=%i size=%i\n", offs, size);
memcpy(executable_memory + offs, bytes, size); bytes += size; memcpy(executable_memory + offs, bytes, size); bytes += size;
break; break;
@ -91,7 +101,7 @@ int parse_commands(uint8_t *bytes) {
offs = *(uint32_t*)bytes; bytes += 4; offs = *(uint32_t*)bytes; bytes += 4;
reloc_type = *(uint32_t*)bytes; bytes += 4; reloc_type = *(uint32_t*)bytes; bytes += 4;
value = *(int32_t*)bytes; bytes += 4; value = *(int32_t*)bytes; bytes += 4;
printf("PATCH_FUNC patch_offs=%i reloc_type=%i value=%i\n", LOG("PATCH_FUNC patch_offs=%i reloc_type=%i value=%i\n",
offs, reloc_type, value); offs, reloc_type, value);
patch(executable_memory + offs, reloc_type, value); patch(executable_memory + offs, reloc_type, value);
break; break;
@ -100,28 +110,28 @@ int parse_commands(uint8_t *bytes) {
offs = *(uint32_t*)bytes; bytes += 4; offs = *(uint32_t*)bytes; bytes += 4;
reloc_type = *(uint32_t*)bytes; bytes += 4; reloc_type = *(uint32_t*)bytes; bytes += 4;
value = *(int32_t*)bytes; bytes += 4; value = *(int32_t*)bytes; bytes += 4;
printf("PATCH_OBJECT patch_offs=%i reloc_type=%i value=%i\n", LOG("PATCH_OBJECT patch_offs=%i reloc_type=%i value=%i\n",
offs, reloc_type, value); offs, reloc_type, value);
patch(executable_memory + offs, reloc_type, value + data_offs); patch(executable_memory + offs, reloc_type, value + data_offs);
break; break;
case ENTRY_POINT: case ENTRY_POINT:
printf("ENTRY_POINT rel_entr_point=%i\n", rel_entr_point); LOG("ENTRY_POINT rel_entr_point=%i\n", rel_entr_point);
rel_entr_point = *(uint32_t*)bytes; bytes += 4; rel_entr_point = *(uint32_t*)bytes; bytes += 4;
entr_point = (entry_point_t)(executable_memory + rel_entr_point); entr_point = (entry_point_t)(executable_memory + rel_entr_point);
mark_mem_executable(executable_memory, executable_memory_len); mark_mem_executable(executable_memory, executable_memory_len);
break; break;
case RUN_PROG: case RUN_PROG:
printf("RUN_PROG\n"); LOG("RUN_PROG\n");
int ret = entr_point(); int ret = entr_point();
printf("Return value: %i\n", ret); BLOG("Return value: %i\n", ret);
break; break;
case READ_DATA: case READ_DATA:
offs = *(uint32_t*)bytes; bytes += 4; offs = *(uint32_t*)bytes; bytes += 4;
size = *(uint32_t*)bytes; bytes += 4; size = *(uint32_t*)bytes; bytes += 4;
printf("READ_DATA offs=%i size=%i data=", offs, size); BLOG("READ_DATA offs=%i size=%i data=", offs, size);
for (uint32_t i = 0; i < size; i++) { for (uint32_t i = 0; i < size; i++) {
printf("%02X ", data_memory[offs + i]); printf("%02X ", data_memory[offs + i]);
} }
@ -133,12 +143,12 @@ int parse_commands(uint8_t *bytes) {
break; break;
case END_COM: case END_COM:
printf("END_COM\n"); LOG("END_COM\n");
end_flag = 1; end_flag = 1;
break; break;
default: default:
printf("Unknown command\n"); LOG("Unknown command\n");
end_flag = -1; end_flag = -1;
break; break;
} }

View File

@ -13,5 +13,8 @@ gcc --version
gcc -c $SRC -O3 -o $DEST/stencils_x86_64_O3.o gcc -c $SRC -O3 -o $DEST/stencils_x86_64_O3.o
mkdir bin -p mkdir bin -p
gcc -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -Werror -g -O3 src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o bin/coparun gcc -Wall -Wextra -Wconversion -Wsign-conversion \
-Wshadow -Wstrict-overflow -Werror -g -O3 \
-DENABLE_LOGGING
src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o bin/coparun
#x86_64-w64-mingw32-gcc -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -Werror src/runner/runmem2.c -Wall -O3 -o bin/runmem2.exe #x86_64-w64-mingw32-gcc -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -Werror src/runner/runmem2.c -Wall -O3 -o bin/runmem2.exe