feat: ported debug logging
This commit is contained in:
167
yak-kernel/include/elf.h
Normal file
167
yak-kernel/include/elf.h
Normal file
@@ -0,0 +1,167 @@
|
||||
//
|
||||
// Created by rick on 07-03-21.
|
||||
//
|
||||
|
||||
#ifndef NEW_KERNEL_ELF_H
|
||||
#define NEW_KERNEL_ELF_H
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
// \x7FELF (little endian)
|
||||
#define ELF_MAGIC 0x464C457F
|
||||
|
||||
#define ELF_CLASS_32 1
|
||||
#define ELF_CLASS_64 2
|
||||
|
||||
#define ELF_ENDIAN_LITTLE 1
|
||||
#define ELF_ENDIAN_BIG 2
|
||||
|
||||
#define SHT_NULL 0
|
||||
#define SHT_PROGBITS 1
|
||||
#define SHT_SYMTAB 2
|
||||
#define SHT_STRTAB 3
|
||||
#define SHT_RELA 4
|
||||
#define SHT_HASH 5
|
||||
#define SHT_DYNAMIC 6
|
||||
#define SHT_NOTE 7
|
||||
#define SHT_NOBITS 8
|
||||
#define SHT_REL 9
|
||||
#define SHT_SHLIB 10
|
||||
#define SHT_DYNSYM 11
|
||||
#define SHT_LOPROC 0x70000000
|
||||
#define SHT_HIPROC 0x7fffffff
|
||||
#define SHT_LOUSER 0x80000000
|
||||
#define SHT_HIUSER 0xffffffff
|
||||
|
||||
#define SHF_WRITE 0x1
|
||||
#define SHF_ALLOC 0x2
|
||||
#define SHF_EXECINSTR 0x4
|
||||
#define SHF_MASKPROC 0xf0000000
|
||||
|
||||
#define ELF32_ST_BIND(i) ((i)>>4)
|
||||
#define ELF32_ST_TYPE(i) ((i)&0xf)
|
||||
#define ELF32_ST_INFO(b, t) (((b)<<4)+((t)&0xf))
|
||||
|
||||
#define STB_LOCAL 0
|
||||
#define STB_GLOBAL 1
|
||||
#define STB_WEAK 2
|
||||
#define STB_LOPROC 13
|
||||
#define STB_HIPROC 15
|
||||
|
||||
#define STT_NOTYPE 0
|
||||
#define STT_OBJECT 1
|
||||
#define STT_FUNC 2
|
||||
#define STT_SECTION 3
|
||||
#define STT_FILE 4
|
||||
#define STT_LOPROC 13
|
||||
#define STT_HIPROC 15
|
||||
|
||||
struct elf_file_header {
|
||||
uint32_t ei_magic;
|
||||
uint8_t ei_class;
|
||||
uint8_t ei_data;
|
||||
uint8_t ei_version;
|
||||
uint8_t ei_osabi;
|
||||
uint8_t ei_abiversion;
|
||||
uint64_t: 56; // 7 bytes padding
|
||||
union {
|
||||
struct {
|
||||
uint16_t e_type;
|
||||
uint16_t e_machine;
|
||||
uint32_t e_version;
|
||||
uint32_t e_entry;
|
||||
uint32_t e_phoff;
|
||||
uint32_t e_shoff;
|
||||
uint32_t e_flags;
|
||||
uint16_t e_ehsize;
|
||||
uint16_t e_phentsize;
|
||||
uint16_t e_phnum;
|
||||
uint16_t e_shentsize;
|
||||
uint16_t e_shnum;
|
||||
uint16_t e_shstrndx;
|
||||
} elf32 __attribute((packed));
|
||||
struct {
|
||||
uint16_t e_type;
|
||||
uint16_t e_machine;
|
||||
uint32_t e_version;
|
||||
uint64_t e_entry;
|
||||
uint64_t e_phoff;
|
||||
uint64_t e_shoff;
|
||||
uint32_t e_flags;
|
||||
uint16_t e_ehsize;
|
||||
uint16_t e_phentsize;
|
||||
uint16_t e_phnum;
|
||||
uint16_t e_shentsize;
|
||||
uint16_t e_shnum;
|
||||
uint16_t e_shstrndx;
|
||||
} elf64 __attribute((packed));
|
||||
};
|
||||
} __attribute((packed));
|
||||
|
||||
struct elf32_program_header {
|
||||
uint32_t p_type;
|
||||
uint32_t p_offset;
|
||||
uint32_t p_vaddr;
|
||||
uint32_t p_paddr;
|
||||
uint32_t p_filesz;
|
||||
uint32_t p_memsz;
|
||||
uint32_t p_flags;
|
||||
uint32_t p_align;
|
||||
} __attribute((packed));
|
||||
|
||||
struct elf64_program_header {
|
||||
uint32_t p_type;
|
||||
uint32_t p_flags;
|
||||
uint64_t p_offset;
|
||||
uint64_t p_vaddr;
|
||||
uint64_t p_paddr;
|
||||
uint64_t p_filesz;
|
||||
uint64_t p_memsz;
|
||||
uint64_t p_align;
|
||||
} __attribute((packed));
|
||||
|
||||
struct elf32_section_header {
|
||||
uint32_t sh_name;
|
||||
uint32_t sh_type;
|
||||
uint32_t sh_flags;
|
||||
uint32_t sh_addr;
|
||||
uint32_t sh_offset;
|
||||
uint32_t sh_size;
|
||||
uint32_t sh_link;
|
||||
uint32_t sh_info;
|
||||
uint32_t sh_addr_align;
|
||||
uint32_t sh_ent_size;
|
||||
} __attribute((packed));
|
||||
|
||||
struct elf64_section_header {
|
||||
uint32_t sh_name;
|
||||
uint32_t sh_type;
|
||||
uint64_t sh_flags;
|
||||
uint64_t sh_addr;
|
||||
uint64_t sh_offset;
|
||||
uint64_t sh_size;
|
||||
uint32_t sh_link;
|
||||
uint32_t sh_info;
|
||||
uint64_t sh_addr_align;
|
||||
uint64_t sh_ent_size;
|
||||
} __attribute((packed));
|
||||
|
||||
struct elf32_symtab_entry {
|
||||
uint32_t st_name;
|
||||
uint32_t st_value;
|
||||
uint32_t st_size;
|
||||
uint8_t st_info;
|
||||
uint8_t st_other;
|
||||
uint16_t st_shndx;
|
||||
} __attribute((packed));
|
||||
|
||||
struct elf64_symtab_entry {
|
||||
uint32_t st_name;
|
||||
uint8_t st_info;
|
||||
uint8_t st_other;
|
||||
uint16_t st_shndx;
|
||||
uint64_t st_value;
|
||||
uint64_t st_size;
|
||||
} __attribute((packed));
|
||||
|
||||
#endif //NEW_KERNEL_ELF_H
|
||||
14
yak-kernel/include/yak/rt/debug/debug.h
Normal file
14
yak-kernel/include/yak/rt/debug/debug.h
Normal file
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// Created by rick on 08-03-21.
|
||||
//
|
||||
|
||||
#ifndef NEW_KERNEL_DEBUG_H
|
||||
#define NEW_KERNEL_DEBUG_H
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
void debug_store_info(void *kernel);
|
||||
|
||||
void debug_backtrace(bool do_sync);
|
||||
|
||||
#endif //NEW_KERNEL_DEBUG_H
|
||||
@@ -7,7 +7,9 @@
|
||||
|
||||
typedef void (*print_function)(char c);
|
||||
|
||||
void kprint_now(char* msg);
|
||||
void kprint(const char* msg);
|
||||
|
||||
void kprint_now(const char* msg);
|
||||
|
||||
void kprint_putc_now(char c);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user