Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Nuke data.S, since we do have a custom linker script.

  • Loading branch information...
commit dd4438b4fe934eef3f631238d45b3681a3abdd4d 1 parent ce6dd9d
@aclements aclements authored
Showing with 13 additions and 31 deletions.
  1. +4 −4 Makefile
  2. +0 −26 data.S
  3. +8 −0 kernel.ld
  4. +1 −1  vm.c
View
8 Makefile
@@ -109,8 +109,8 @@ initcode: initcode.S
$(OBJCOPY) -S -O binary initcode.out initcode
$(OBJDUMP) -S initcode.o > initcode.asm
-kernel: $(OBJS) entry.o data.o entryother initcode
- $(LD) $(LDFLAGS) -T kernel.ld -e entry -o kernel entry.o data.o $(OBJS) -b binary initcode entryother
+kernel: $(OBJS) entry.o entryother initcode
+ $(LD) $(LDFLAGS) -T kernel.ld -e entry -o kernel entry.o $(OBJS) -b binary initcode entryother
$(OBJDUMP) -S kernel > kernel.asm
$(OBJDUMP) -t kernel | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > kernel.sym
@@ -121,8 +121,8 @@ kernel: $(OBJS) entry.o data.o entryother initcode
# great for testing the kernel on real hardware without
# needing a scratch disk.
MEMFSOBJS = $(filter-out ide.o,$(OBJS)) memide.o
-kernelmemfs: $(MEMFSOBJS) entry.o data.o entryother initcode fs.img
- $(LD) $(LDFLAGS) -Ttext 0x100000 -e main -o kernelmemfs entry.o data.o $(MEMFSOBJS) -b binary initcode entryother fs.img
+kernelmemfs: $(MEMFSOBJS) entry.o entryother initcode fs.img
+ $(LD) $(LDFLAGS) -Ttext 0x100000 -e main -o kernelmemfs entry.o $(MEMFSOBJS) -b binary initcode entryother fs.img
$(OBJDUMP) -S kernelmemfs > kernelmemfs.asm
$(OBJDUMP) -t kernelmemfs | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > kernelmemfs.sym
View
26 data.S
@@ -1,26 +0,0 @@
-// The kernel layout is:
-//
-// text
-// rodata
-// data
-// bss
-//
-// Conventionally, Unix linkers provide pseudo-symbols
-// etext, edata, and end, at the end of the text, data, and bss.
-// For the kernel mapping, we need the address at the beginning
-// of the data section, but that's not one of the conventional
-// symbols, because the convention started before there was a
-// read-only rodata section between text and data.
-//
-// To get the address of the data section, we define a symbol
-// named data and make sure this is the first object passed to
-// the linker, so that it will be the first symbol in the data section.
-//
-// Alternative approaches would be to parse our own ELF header
-// or to write a linker script, but this is simplest.
-
-.data
-.align 4096
-.globl data
-data:
- .word 1
View
8 kernel.ld
@@ -41,6 +41,14 @@ SECTIONS
/* Adjust the address for the data segment to the next page */
. = ALIGN(0x1000);
+ /* Conventionally, Unix linkers provide pseudo-symbols
+ * etext, edata, and end, at the end of the text, data, and bss.
+ * For the kernel mapping, we need the address at the beginning
+ * of the data section, but that's not one of the conventional
+ * symbols, because the convention started before there was a
+ * read-only rodata section between text and data. */
+ PROVIDE(data = .);
+
/* The data segment */
.data : {
*(.data)
View
2  vm.c
@@ -7,7 +7,7 @@
#include "proc.h"
#include "elf.h"
-extern char data[]; // defined in data.S
+extern char data[]; // defined by kernel.ld
pde_t *kpgdir; // for use in scheduler()
struct segdesc gdt[NSEGS];
Please sign in to comment.
Something went wrong with that request. Please try again.