From 0c70d543524adba5b1194cf9f128fd72cc4eec99 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Sat, 25 Jan 2014 17:51:53 +0100 Subject: [PATCH] Review linking of programs --- cpp.mk | 1 + programs/hello/Makefile | 2 +- programs/linker.ld | 20 ++++++++++++++++++++ programs/long/Makefile | 2 +- programs/loop/Makefile | 2 +- programs/one/Makefile | 2 +- 6 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 programs/linker.ld diff --git a/cpp.mk b/cpp.mk index f6b8f476..b45c0533 100644 --- a/cpp.mk +++ b/cpp.mk @@ -12,5 +12,6 @@ CPP_FLAGS_32=$(COMMON_CPP_FLAGS) $(CPP_FLAGS_LOW) -mpreferred-stack-boundary=4 CPP_FLAGS_64=$(COMMON_CPP_FLAGS) -mno-sse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 COMMON_LINK_FLAGS=-lgcc +PROGRAM_LINK_FLAGS=$(COMMON_LINK_FLAGS) -T ../linker.ld PROGRAM_FLAGS=-I../../userlib/include/ diff --git a/programs/hello/Makefile b/programs/hello/Makefile index 0d456393..f600cad7 100644 --- a/programs/hello/Makefile +++ b/programs/hello/Makefile @@ -8,7 +8,7 @@ include ../../cpp.mk $(CC) $(PROGRAM_FLAGS) $(CPP_FLAGS_64) $(WARNING_FLAGS) -c $< -o $@ a.out: main.cpp.o - $(CC) $(COMMON_LINK_FLAGS) -e main $(CPP_FLAGS_64) -o a.out main.cpp.o + $(CC) $(PROGRAM_LINK_FLAGS) -e main $(CPP_FLAGS_64) -o a.out main.cpp.o clean: rm *.cpp.o diff --git a/programs/linker.ld b/programs/linker.ld new file mode 100644 index 00000000..980c0f41 --- /dev/null +++ b/programs/linker.ld @@ -0,0 +1,20 @@ +SECTIONS { + . = 0x400000000; + + .text BLOCK(4096) : ALIGN(4096) + { + *(.text) + } + + . = 0x400400000; + + .data BLOCK(4096) : ALIGN(4096) + { + *(.data) + } + + .bss BLOCK(4096) : ALIGN(4096) + { + *(.bss) + } +} \ No newline at end of file diff --git a/programs/long/Makefile b/programs/long/Makefile index 0d456393..f600cad7 100644 --- a/programs/long/Makefile +++ b/programs/long/Makefile @@ -8,7 +8,7 @@ include ../../cpp.mk $(CC) $(PROGRAM_FLAGS) $(CPP_FLAGS_64) $(WARNING_FLAGS) -c $< -o $@ a.out: main.cpp.o - $(CC) $(COMMON_LINK_FLAGS) -e main $(CPP_FLAGS_64) -o a.out main.cpp.o + $(CC) $(PROGRAM_LINK_FLAGS) -e main $(CPP_FLAGS_64) -o a.out main.cpp.o clean: rm *.cpp.o diff --git a/programs/loop/Makefile b/programs/loop/Makefile index 0d456393..f600cad7 100644 --- a/programs/loop/Makefile +++ b/programs/loop/Makefile @@ -8,7 +8,7 @@ include ../../cpp.mk $(CC) $(PROGRAM_FLAGS) $(CPP_FLAGS_64) $(WARNING_FLAGS) -c $< -o $@ a.out: main.cpp.o - $(CC) $(COMMON_LINK_FLAGS) -e main $(CPP_FLAGS_64) -o a.out main.cpp.o + $(CC) $(PROGRAM_LINK_FLAGS) -e main $(CPP_FLAGS_64) -o a.out main.cpp.o clean: rm *.cpp.o diff --git a/programs/one/Makefile b/programs/one/Makefile index 0d456393..f600cad7 100644 --- a/programs/one/Makefile +++ b/programs/one/Makefile @@ -8,7 +8,7 @@ include ../../cpp.mk $(CC) $(PROGRAM_FLAGS) $(CPP_FLAGS_64) $(WARNING_FLAGS) -c $< -o $@ a.out: main.cpp.o - $(CC) $(COMMON_LINK_FLAGS) -e main $(CPP_FLAGS_64) -o a.out main.cpp.o + $(CC) $(PROGRAM_LINK_FLAGS) -e main $(CPP_FLAGS_64) -o a.out main.cpp.o clean: rm *.cpp.o