Index: uspace/lib/c/Makefile
===================================================================
--- uspace/lib/c/Makefile	(revision bae7bdce0a7ec22e0c314f46b0603c9c28fd6337)
+++ uspace/lib/c/Makefile	(revision c53d90624940aafb20634e3c830f61e7551afe43)
@@ -41,7 +41,11 @@
 CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config
 
+LINKER_SCRIPTS = \
+	$(LIBC_PREFIX)/arch/$(UARCH)/_link.ld \
+	$(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld
+
 PRE_DEPEND = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(COMMON_HEADER_ARCH)
-EXTRA_OUTPUT = $(LINKER_SCRIPT)
-EXTRA_CLEAN = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(COMMON_HEADER_ARCH) $(LINKER_SCRIPT)
+EXTRA_OUTPUT = $(LINKER_SCRIPTS)
+EXTRA_CLEAN = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(COMMON_HEADER_ARCH) $(LINKER_SCRIPTS)
 LIBRARY = libc
 
@@ -133,6 +137,9 @@
 	ln -sfn ../$< $@
 
-$(LINKER_SCRIPT): $(LINKER_SCRIPT).in
+$(LIBC_PREFIX)/arch/$(UARCH)/_link.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in
 	$(GCC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -E -x c $< | grep -v "^\#" > $@
+
+$(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in
+	$(GCC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DLOADER -E -x c $< | grep -v "^\#" > $@
 
 $(COMMON_HEADER_ARCH): $(COMMON_HEADER)
Index: uspace/lib/c/arch/abs32le/_link.ld.in
===================================================================
--- uspace/lib/c/arch/abs32le/_link.ld.in	(revision bae7bdce0a7ec22e0c314f46b0603c9c28fd6337)
+++ uspace/lib/c/arch/abs32le/_link.ld.in	(revision c53d90624940aafb20634e3c830f61e7551afe43)
@@ -3,11 +3,23 @@
 
 PHDRS {
+#ifdef LOADER
+	interp PT_INTERP;
+	text PT_LOAD FILEHDR PHDRS FLAGS(5);
+#else
 	text PT_LOAD FLAGS(5);
+#endif
 	data PT_LOAD FLAGS(6);
 }
 
 SECTIONS {
+#ifdef LOADER
+	.interp : {
+		*(.interp);
+	} :interp
+	
+	. = 0x70001000 + SIZEOF_HEADERS;
+#else
 	. = 0x1000 + SIZEOF_HEADERS;
-	
+#endif
 	.text : {
 		*(.text .text.*);
Index: uspace/lib/c/arch/amd64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/amd64/_link.ld.in	(revision bae7bdce0a7ec22e0c314f46b0603c9c28fd6337)
+++ uspace/lib/c/arch/amd64/_link.ld.in	(revision c53d90624940aafb20634e3c830f61e7551afe43)
@@ -3,5 +3,10 @@
 
 PHDRS {
+#ifdef LOADER
+	interp PT_INTERP;
+	text PT_LOAD FILEHDR PHDRS FLAGS(5);
+#else
 	text PT_LOAD FLAGS(5);
+#endif
 	data PT_LOAD FLAGS(6);
 	debug PT_NOTE;
@@ -9,6 +14,13 @@
 
 SECTIONS {
+#ifdef LOADER
+	.interp : {
+		*(.interp);
+	} :interp
+	
+	. = 0x70001000 + SIZEOF_HEADERS;
+#else
 	. = 0x1000 + SIZEOF_HEADERS;
-	
+#endif
 	.init : {
 		*(.init);
Index: uspace/lib/c/arch/arm32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/arm32/_link.ld.in	(revision bae7bdce0a7ec22e0c314f46b0603c9c28fd6337)
+++ uspace/lib/c/arch/arm32/_link.ld.in	(revision c53d90624940aafb20634e3c830f61e7551afe43)
@@ -3,11 +3,23 @@
 
 PHDRS {
+#ifdef LOADER
+	interp PT_INTERP;
+	text PT_LOAD FILEHDR PHDRS FLAGS(5);
+#else
 	text PT_LOAD FLAGS(5);
+#endif
 	data PT_LOAD FLAGS(6);
 }
 
 SECTIONS {
+#ifdef LOADER
+	.interp : {
+		*(.interp);
+	} :interp
+	
+	. = 0x70001000 + SIZEOF_HEADERS;
+#else
 	. = 0x1000 + SIZEOF_HEADERS;
-	
+#endif
 	.init : {
 		*(.init);
Index: uspace/lib/c/arch/ia32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/ia32/_link.ld.in	(revision bae7bdce0a7ec22e0c314f46b0603c9c28fd6337)
+++ uspace/lib/c/arch/ia32/_link.ld.in	(revision c53d90624940aafb20634e3c830f61e7551afe43)
@@ -3,5 +3,10 @@
 
 PHDRS {
+#ifdef LOADER
+	interp PT_INTERP;
+	text PT_LOAD FILEHDR PHDRS FLAGS(5);
+#else
 	text PT_LOAD FLAGS(5);
+#endif
 	data PT_LOAD FLAGS(6);
 	debug PT_NOTE;
@@ -9,6 +14,13 @@
 
 SECTIONS {
+#ifdef LOADER
+	.interp : {
+		*(.interp);
+	} :interp
+
+	. = 0x70001000 + SIZEOF_HEADERS;
+#else
 	. = 0x1000 + SIZEOF_HEADERS;
-	
+#endif
 	.init : {
 		*(.init);
Index: uspace/lib/c/arch/ia64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/ia64/_link.ld.in	(revision bae7bdce0a7ec22e0c314f46b0603c9c28fd6337)
+++ uspace/lib/c/arch/ia64/_link.ld.in	(revision c53d90624940aafb20634e3c830f61e7551afe43)
@@ -3,11 +3,23 @@
 
 PHDRS {
+#ifdef LOADER
+	interp PT_INTERP;
 	text PT_LOAD FLAGS(5);
+#else
+	text PT_LOAD FLAGS(5);
+#endif
 	data PT_LOAD FLAGS(6);
 }
 
 SECTIONS {
+#ifdef LOADER
+	.interp : {
+		*(.interp);
+	} :interp
+	
+	. = 0x800000000 + SIZEOF_HEADERS;
+#else
 	. = 0x4000 + SIZEOF_HEADERS;
-	
+#endif
 	.init : {
 		*(.init);
Index: uspace/lib/c/arch/mips32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/mips32/_link.ld.in	(revision bae7bdce0a7ec22e0c314f46b0603c9c28fd6337)
+++ uspace/lib/c/arch/mips32/_link.ld.in	(revision c53d90624940aafb20634e3c830f61e7551afe43)
@@ -3,11 +3,23 @@
 
 PHDRS {
+#ifdef LOADER
+	interp PT_INTERP;
+	text PT_LOAD FILEHDR PHDRS FLAGS(5);
+#else
 	text PT_LOAD FLAGS(5);
+#endif
 	data PT_LOAD FLAGS(6);
 }
 
 SECTIONS {
+#ifdef LOADER
+	.interp: {
+		*(.interp);
+	} :interp
+	
+	. = 0x70001000 + SIZEOF_HEADERS;
+#else
 	. = 0x4000 + SIZEOF_HEADERS;
-	
+#endif
 	.init : {
 		*(.init);
Index: uspace/lib/c/arch/ppc32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/ppc32/_link.ld.in	(revision bae7bdce0a7ec22e0c314f46b0603c9c28fd6337)
+++ uspace/lib/c/arch/ppc32/_link.ld.in	(revision c53d90624940aafb20634e3c830f61e7551afe43)
@@ -3,11 +3,23 @@
 
 PHDRS {
+#ifdef LOADER
+	interp PT_INTERP;
+	text PT_LOAD FILEHDR PHDRS FLAGS(5);
+#else
 	text PT_LOAD FLAGS(5);
+#endif
 	data PT_LOAD FLAGS(6);
 }
 
 SECTIONS {
+#ifdef LOADER
+	.itnerp : {
+		*(.interp);
+	} :interp
+	
+	. = 0x70001000 + SIZEOF_HEADERS;
+#else
 	. = 0x1000 + SIZEOF_HEADERS;
-	
+#endif
 	.init : {
 		*(.init);
Index: uspace/lib/c/arch/sparc64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/sparc64/_link.ld.in	(revision bae7bdce0a7ec22e0c314f46b0603c9c28fd6337)
+++ uspace/lib/c/arch/sparc64/_link.ld.in	(revision c53d90624940aafb20634e3c830f61e7551afe43)
@@ -3,11 +3,23 @@
 
 PHDRS {
+#ifdef LOADER
+	interp PT_INTERP;
+	text PT_LOAD FILEHDR PHDRS FLAGS(5);
+#else
 	text PT_LOAD FLAGS(5);
+#endif
 	data PT_LOAD FLAGS(6);
 }
 
 SECTIONS {
+#ifdef LOADER
+	.interp : {
+		*(.interp);
+	} :interp
+	
+	. = 0x70004000 + SIZEOF_HEADERS;
+#else
 	. = 0x4000 + SIZEOF_HEADERS;
-	
+#endif
 	.init : {
 		*(.init);
