extern void *_stack; /* initial adress of stackpointer */ extern void *_stack_size; extern void *_end; extern void *_heap_size; extern void *_start; extern void *_fbss; extern void *_root; unsigned long bss_start, bss_end, code_start, heap_size ; code_start = (unsigned long )(&_start); bss_start = (unsigned long )(&_bss_obj); bss_end = (unsigned long )(&_bss_objend); heap_size = (unsigned long )(&_heap_size); printf("code start = %X", code_start) ; printf("code size = %X (%d) bytes", bss_start - code_start, bss_start - code_start) ; printf("bss start = %X", bss_start) ; printf("bss end = %X", bss_end) ; printf("bss size = %X (%d) bytes", bss_end-bss_start, bss_end-bss_start) ; #include #include /* ?! extern void *_stack; extern void *_stack_size; extern void *_end; extern void *_heap_size; extern void *_heap_size; extern void *_fbss; extern void *_root; */ /* * only accessable at asm-level: * text-section: start etext end */ /* * on c-level */ /* text section */ /* cpp stuff */ extern void *__CTOR_LIST__; extern void *_CTOR_LIST__; extern void *__DTOR_LIST__; extern void *_DTOR_LIST__; /* data section */ extern void *_data_start__; extern void *_data_end__; /* bss section */ extern void *_bss_start__; extern void *_bss_end__; /* end */ extern void *end; extern void *_end__; int main(int argc, char *argv[]) { unsigned long all_start=0, all_end=0; unsigned long text_start=0, text_end=0; unsigned long data_start=0, data_end=0; unsigned long bss_start=0, bss_end=0; #ifdef _text_start__ text_start = (unsigned long )(&_text_start__); #endif #ifdef _text_end__ text_end = (unsigned long )(&_text_end__); #endif data_start = (unsigned long )(&_data_start__); data_end = (unsigned long )(&_data_end__); bss_start = (unsigned long )(&_bss_start__); bss_end = (unsigned long )(&_bss_end__); #ifdef end all_end = (unsigned long)(&end); #else #ifdef _end__ all_end = (unsigned long)(&_end__); #endif #endif printf("start = %08X\n", all_start) ; printf("text start = %08X\n", text_start) ; printf("text end = %08X\n", text_end) ; printf("text size = %08X (%d) bytes\n", text_end-text_start, text_end-text_start) ; printf("data start = %08X\n", data_start) ; printf("data end = %08X\n", data_end) ; printf("data size = %08X (%d) bytes\n", data_end-data_start, data_end-data_start) ; printf("bss start = %08X\n", bss_start) ; printf("bss end = %08X\n", bss_end) ; printf("bss size = %08X (%d) bytes\n", bss_end-bss_start, bss_end-bss_start) ; printf("end = %08X\n", all_end) ; return 0; }