提交 644017a3 创建 作者: Nickolai Zeldovich's avatar Nickolai Zeldovich

clean up bits that were not necessary in the end

上级 a1402352
...@@ -33,7 +33,7 @@ multiboot_header: ...@@ -33,7 +33,7 @@ multiboot_header:
.long flags .long flags
.long (- magic - flags) # checksum .long (- magic - flags) # checksum
.long PADDR(multiboot_header) # header address .long PADDR(multiboot_header) # header address
.long PADDR(multiboot_header)-0x1000 # load address, incl elf headers .long PADDR(multiboot_header) # load address
.long PADDR(edata) # load end address .long PADDR(edata) # load end address
.long PADDR(end) # bss end address .long PADDR(end) # bss end address
.long PADDR(start) # entry address .long PADDR(start) # entry address
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
void* void*
operator new(unsigned long nbytes) operator new(unsigned long nbytes)
{ {
panic("global operator new");
u64* x = (u64*) kmalloc(nbytes + sizeof(u64), "cpprt new"); u64* x = (u64*) kmalloc(nbytes + sizeof(u64), "cpprt new");
*x = nbytes; *x = nbytes;
return x+1; return x+1;
...@@ -19,6 +21,8 @@ operator new(unsigned long nbytes) ...@@ -19,6 +21,8 @@ operator new(unsigned long nbytes)
void void
operator delete(void* p) operator delete(void* p)
{ {
panic("global operator delete");
u64* x = (u64*) p; u64* x = (u64*) p;
kmfree(x-1, x[-1] + sizeof(u64)); kmfree(x-1, x[-1] + sizeof(u64));
} }
...@@ -173,34 +177,11 @@ free(void* vp) ...@@ -173,34 +177,11 @@ free(void* vp)
kmfree(p-1, p[-1]+8); kmfree(p-1, p[-1]+8);
} }
struct dl_phdr_info { extern "C" int dl_iterate_phdr(void);
Elf64_Addr dlpi_addr;
const char *dlpi_name;
const struct proghdr *dlpi_phdr;
Elf64_Half dlpi_phnum;
unsigned long long int dlpi_adds;
unsigned long long int dlpi_subs;
};
extern "C" int dl_iterate_phdr(int (*cb) (struct dl_phdr_info *info,
size_t size, void *data),
void *data);
int int
dl_iterate_phdr(int (*cb) (struct dl_phdr_info *info, size_t size, void *data), dl_iterate_phdr(void)
void *data) {
{ return -1;
extern char multiboot_header[];
elfhdr *eh = (elfhdr*) &multiboot_header[-0x1000];
assert(eh->magic == ELF_MAGIC);
struct dl_phdr_info info;
info.dlpi_addr = 0;
info.dlpi_name = "kernel";
info.dlpi_phdr = (proghdr*) (((char*) eh) + eh->phoff);
info.dlpi_phnum = eh->phnum;
info.dlpi_adds = 0;
info.dlpi_subs = 0;
return cb(&info, sizeof(struct dl_phdr_info), data);
} }
extern "C" void __stack_chk_fail(void); extern "C" void __stack_chk_fail(void);
......
...@@ -4,12 +4,9 @@ ENTRY(xxx) ...@@ -4,12 +4,9 @@ ENTRY(xxx)
SECTIONS SECTIONS
{ {
/* Skip one page to leave room for ELF headers. . = 0xFFFFFFFFC0100000;
* See multiboot_header and dl_iterate_phdr.
*/
. = 0xFFFFFFFFC0101000;
PROVIDE(text = .); PROVIDE(text = .);
.text : AT(0x101000) { .text : AT(0x100000) {
*(.text .stub .text.* .gnu.linkonce.t.*) *(.text .stub .text.* .gnu.linkonce.t.*)
} }
.rodata : { .rodata : {
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论