Update of /cvsroot/blob/blob/src/blob
In directory usw-pr-cvs1:/tmp/cvs-serv15217
Modified Files:
main.c
Log Message:
Print layout of ELF section in debug mode. Minor cleanups.
Index: main.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/main.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- main.c 2001/10/31 16:44:18 1.8
+++ main.c 2001/11/04 23:15:41 1.9
@@ -59,6 +59,7 @@
static int do_reload(char *what);
static void PrintSerialSpeed(eBauds speed);
+static void print_elf_sections(void);
@@ -83,11 +84,8 @@
init_subsystems();
/* initialise status */
- blob_status.paramSize = 0;
blob_status.paramType = fromFlash;
- blob_status.kernelSize = 0;
blob_status.kernelType = fromFlash;
- blob_status.ramdiskSize = 0;
blob_status.ramdiskType = fromFlash;
blob_status.downloadSpeed = baud115k2;
blob_status.terminalSpeed = baud9k6;
@@ -122,6 +120,18 @@
/* get the amount of memory */
get_memory_map();
+ print_elf_sections();
+
+#ifdef BLOB_DEBUG
+ {
+ register u32 stackptr;
+ SerialOutputString("Current stack pointer: 0x");
+ asm("mov %0, sp": "=r" (stackptr));
+ SerialOutputHex(stackptr);
+ SerialOutputByte('\n');
+ }
+#endif
+
/* Parse all the tags in the paramater block */
#ifdef PARAM_START
parse_ptags((void *) PARAM_START, &conf);
@@ -561,4 +571,44 @@
SerialOutputString("(unknown)");
break;
}
+}
+
+
+
+
+static void print_elf_sections(void)
+{
+#ifdef BLOB_DEBUG
+ extern u32 __text_start, __text_end;
+ extern u32 __rodata_start, __rodata_end;
+ extern u32 __data_start, __data_end;
+ extern u32 __got_start, __got_end;
+ extern u32 __commandlist_start, __commandlist_end;
+ extern u32 __initlist_start, __initlist_end;
+ extern u32 __exitlist_start, __exitlist_end;
+ extern u32 __ptagtable_begin, __ptagtable_end;
+ extern u32 __bss_start, __bss_end;
+ extern u32 __stack_start, __stack_end;
+
+ SerialOutputString("ELF sections layout:\n");
+
+#define PRINT_ELF_SECTION(from, to, name) \
+ SerialOutputString(" 0x"); \
+ SerialOutputHex((u32)&(from)); \
+ SerialOutputString(" - 0x"); \
+ SerialOutputHex((u32)&(to)); \
+ SerialOutputString(" " name "\n");
+
+
+ PRINT_ELF_SECTION(__text_start, __text_end, ".text");
+ PRINT_ELF_SECTION(__rodata_start, __rodata_end, ".rodata");
+ PRINT_ELF_SECTION(__data_start, __data_end, ".data");
+ PRINT_ELF_SECTION(__got_start, __got_end, ".got");
+ PRINT_ELF_SECTION(__commandlist_start, __commandlist_end, ".commandlist");
+ PRINT_ELF_SECTION(__initlist_start, __initlist_end, ".initlist");
+ PRINT_ELF_SECTION(__exitlist_start, __exitlist_end, ".exitlist");
+ PRINT_ELF_SECTION(__ptagtable_begin, __ptagtable_end, ".ptaglist");
+ PRINT_ELF_SECTION(__bss_start, __bss_end, ".bss");
+ PRINT_ELF_SECTION(__stack_start, __stack_end, ".stack (in .bss)");
+#endif
}
|