Skip to content

Commit a06c8cc

Browse files
QuzarDCQuzarDC
authored andcommitted
elf: Adjust debug verbosity.
Prior to KallistiOS#1116 this debug output had been gated by a define in the elf.c source. Now that we have the dbg source option for dbglog, leverage that to prevent the overly verbose debug from being outputted even in KDEBUG.
1 parent 770f8d7 commit a06c8cc

File tree

2 files changed

+35
-24
lines changed

2 files changed

+35
-24
lines changed

include/kos/opts.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ __BEGIN_DECLS
5959
/* Enable debugging in fs_vmu. */
6060
/* #define VMUFS_DEBUG 1 */
6161

62+
/* Enable verbose debugging in elf loading. */
63+
/* #define ELF_DBG_VERBOSE 1 */
64+
6265
/* Enable to allow extra debugging checks in the malloc code itself. This
6366
sometimes catches corrupted blocks. Recommended during debugging phases. */
6467
/* #define MALLOC_DEBUG 1 */

kernel/fs/elf.c

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
8686
}
8787

8888
sz = fs_total(fd);
89-
dbglog(DBG_KDEBUG, "Loading ELF file of size %d\n", sz);
89+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), "Loading ELF file of size %d\n", sz);
9090

9191
img = aligned_alloc(32, sz);
9292

@@ -115,17 +115,17 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
115115
goto error1;
116116

117117
/* Print some debug info */
118-
dbglog(DBG_KDEBUG, "File size is %d bytes\n", sz);
119-
dbglog(DBG_KDEBUG, " entry point %08lx\n", hdr->entry);
120-
dbglog(DBG_KDEBUG, " ph offset %08lx\n", hdr->phoff);
121-
dbglog(DBG_KDEBUG, " sh offset %08lx\n", hdr->shoff);
122-
dbglog(DBG_KDEBUG, " flags %08lx\n", hdr->flags);
123-
dbglog(DBG_KDEBUG, " ehsize %08x\n", hdr->ehsize);
124-
dbglog(DBG_KDEBUG, " phentsize %08x\n", hdr->phentsize);
125-
dbglog(DBG_KDEBUG, " phnum %08x\n", hdr->phnum);
126-
dbglog(DBG_KDEBUG, " shentsize %08x\n", hdr->shentsize);
127-
dbglog(DBG_KDEBUG, " shnum %08x\n", hdr->shnum);
128-
dbglog(DBG_KDEBUG, " shstrndx %08x\n", hdr->shstrndx);
118+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), "File size is %d bytes\n", sz);
119+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), " entry point %08lx\n", hdr->entry);
120+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), " ph offset %08lx\n", hdr->phoff);
121+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), " sh offset %08lx\n", hdr->shoff);
122+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), " flags %08lx\n", hdr->flags);
123+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), " ehsize %08x\n", hdr->ehsize);
124+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), " phentsize %08x\n", hdr->phentsize);
125+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), " phnum %08x\n", hdr->phnum);
126+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), " shentsize %08x\n", hdr->shentsize);
127+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), " shnum %08x\n", hdr->shnum);
128+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), " shstrndx %08x\n", hdr->shstrndx);
129129

130130
/* Locate the string table; SH elf files ought to have
131131
two string tables, one for section names and one for object
@@ -183,7 +183,7 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
183183
}
184184
}
185185

186-
dbglog(DBG_KDEBUG, "Final image is %d bytes\n", sz);
186+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), "Final image is %d bytes\n", sz);
187187
out->data = imgout = malloc(sz);
188188

189189
if(out->data == NULL) {
@@ -197,12 +197,14 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
197197
for(i = 0; i < hdr->shnum; i++) {
198198
if(shdrs[i].flags & SHF_ALLOC) {
199199
if(shdrs[i].type == SHT_NOBITS) {
200-
dbglog(DBG_KDEBUG, " setting %ld bytes of zeros at %08lx\n",
200+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE),
201+
" setting %ld bytes of zeros at %08lx\n",
201202
shdrs[i].size, shdrs[i].addr);
202203
memset(imgout + shdrs[i].addr, 0, shdrs[i].size);
203204
}
204205
else {
205-
dbglog(DBG_KDEBUG, " copying %ld bytes from %08lx to %08lx\n",
206+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE),
207+
" copying %ld bytes from %08lx to %08lx\n",
206208
shdrs[i].size, shdrs[i].offset, shdrs[i].addr);
207209
memcpy(imgout + shdrs[i].addr,
208210
img + shdrs[i].offset,
@@ -235,7 +237,7 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
235237
}
236238

237239
/* Patch it in */
238-
dbglog(DBG_KDEBUG, " symbol '%s' patched to 0x%x\n",
240+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), " symbol '%s' patched to 0x%x\n",
239241
(const char *)(symtab[i].name),
240242
sym->ptr);
241243
symtab[i].value = sym->ptr;
@@ -249,7 +251,7 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
249251
if(shdrs[i].type != SHT_REL && shdrs[i].type != SHT_RELA) continue;
250252

251253
sect = shdrs[i].info;
252-
dbglog(DBG_KDEBUG, "Relocating (%s) on section %d\n",
254+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), "Relocating (%s) on section %d\n",
253255
shdrs[i].type == SHT_REL ? "SHT_REL" : "SHT_RELA", sect);
254256

255257
switch(shdrs[i].type) {
@@ -270,7 +272,8 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
270272
sym = ELF32_R_SYM(relatab[j].info);
271273

272274
if(symtab[sym].shndx == SHN_UNDEF) {
273-
dbglog(DBG_KDEBUG, " Writing undefined RELA %08lx(%08lx+%08lx) -> %08lx\n",
275+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE),
276+
" Writing undefined RELA %08lx(%08lx+%08lx) -> %08lx\n",
274277
symtab[sym].value + relatab[j].addend,
275278
symtab[sym].value,
276279
relatab[j].addend,
@@ -282,7 +285,8 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
282285
+ relatab[j].addend;
283286
}
284287
else {
285-
dbglog(DBG_KDEBUG, " Writing RELA %08lx(%08lx+%08lx+%08lx+%08lx) -> %08lx\n",
288+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE),
289+
" Writing RELA %08lx(%08lx+%08lx+%08lx+%08lx) -> %08lx\n",
286290
vma + shdrs[symtab[sym].shndx].addr + symtab[sym].value + relatab[j].addend,
287291
vma, shdrs[symtab[sym].shndx].addr, symtab[sym].value, relatab[j].addend,
288292
vma + shdrs[sect].addr + relatab[j].offset);
@@ -321,7 +325,8 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
321325
uint32_t value = symtab[sym].value;
322326

323327
if(sect == 1 && j < 5) {
324-
dbglog(DBG_KDEBUG, " Writing undefined %s %08lx -> %08lx",
328+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE),
329+
" Writing undefined %s %08lx -> %08lx",
325330
pcrel ? "PCREL" : "ABSREL",
326331
value,
327332
vma + shdrs[sect].addr + reltab[j].offset);
@@ -336,15 +341,17 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
336341
+= value;
337342

338343
if(sect == 1 && j < 5) {
339-
dbglog(DBG_KDEBUG, "(%08lx)\n", *((uint32_t *)(imgout + shdrs[sect].addr + reltab[j].offset)));
344+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE),"(%08lx)\n",
345+
*((uint32_t *)(imgout + shdrs[sect].addr + reltab[j].offset)));
340346
}
341347
}
342348
else {
343349
uint32_t value = vma + shdrs[symtab[sym].shndx].addr
344350
+ symtab[sym].value;
345351

346352
if(sect == 1 && j < 5) {
347-
dbglog(DBG_KDEBUG, " Writing %s %08lx(%08lx+%08lx+%08lx) -> %08lx",
353+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE),
354+
" Writing %s %08lx(%08lx+%08lx+%08lx) -> %08lx",
348355
pcrel ? "PCREL" : "ABSREL",
349356
value,
350357
vma, shdrs[symtab[sym].shndx].addr, symtab[sym].value,
@@ -360,7 +367,8 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
360367
+= value;
361368

362369
if(sect == 1 && j < 5) {
363-
dbglog(DBG_KDEBUG, "(%08lx)\n", *((uint32_t *)(imgout + shdrs[sect].addr + reltab[j].offset)));
370+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), "(%08lx)\n",
371+
*((uint32_t *)(imgout + shdrs[sect].addr + reltab[j].offset)));
364372
}
365373
}
366374
}
@@ -396,7 +404,7 @@ int elf_load(const char *fn, klibrary_t *shell, elf_prog_t *out) {
396404
}
397405

398406
free(img);
399-
dbglog(DBG_KDEBUG, "elf_load final ELF stats: memory image at %p, size %08lx\n", out->data, out->size);
407+
dbglog(DBG_SOURCE(ELF_DBG_VERBOSE), "elf_load final ELF stats: memory image at %p, size %08lx\n", out->data, out->size);
400408

401409
/* Flush the icache for that zone */
402410
icache_flush_range((uint32_t)out->data, out->size);

0 commit comments

Comments
 (0)