Index: uspace/Makefile.common
===================================================================
--- uspace/Makefile.common	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/Makefile.common	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -303,10 +303,10 @@
 ifneq ($(BINARY),)
 $(BINARY): $(LINKER_SCRIPT) $(OBJECTS) $(LIBTAGS) $(BASE_LIBS)
-	$(LD) $(LFLAGS) -T $(LINKER_SCRIPT) -Map $@.map -o $@ $(OBJECTS) $(LIBARGS) $(BASE_LIBS)
+	$(LD) $(LFLAGS) $(EXTRA_LFLAGS) -T $(LINKER_SCRIPT) -Map $@.map -o $@ $(OBJECTS) $(LIBARGS) $(BASE_LIBS)
 endif
 
 ifneq ($(TEST_BINARY),)
 $(TEST_BINARY): $(LINKER_SCRIPT) $(TEST_OBJECTS) $(TEST_BINARY_LIBS) $(LIBTAGS) $(BASE_LIBS)
-	$(LD) $(LFLAGS) -T $(LINKER_SCRIPT) -Map $@.map -o $@ $(TEST_OBJECTS) $(TEST_BINARY_LIBS) $(LIBARGS) $(BASE_LIBS)
+	$(LD) $(LFLAGS) $(EXTRA_LFLAGS) -T $(LINKER_SCRIPT) -Map $@.map -o $@ $(TEST_OBJECTS) $(TEST_BINARY_LIBS) $(LIBARGS) $(BASE_LIBS)
 endif
 
@@ -325,5 +325,5 @@
 
 $(SLIBRARY): $(LIB_LINKER_SCRIPT) $(LIBRARY).la
-	$(LD) $(LIB_LFLAGS) -T $(LIB_LINKER_SCRIPT) -Map $@.map -o $@ --whole-archive $(LIBRARY).la --no-whole-archive
+	$(LD) $(LIB_LFLAGS) $(EXTRA_LFLAGS) -T $(LIB_LINKER_SCRIPT) -Map $@.map -o $@ --whole-archive $(LIBRARY).la --no-whole-archive
 
 $(LSONAME):
Index: uspace/lib/c/Makefile
===================================================================
--- uspace/lib/c/Makefile	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/lib/c/Makefile	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -35,5 +35,4 @@
 LINKER_SCRIPTS = \
 	$(LIBC_PREFIX)/arch/$(UARCH)/_link.ld \
-	$(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld \
 	$(LIBC_PREFIX)/arch/$(UARCH)/_link-shlib.ld \
 	$(LIBC_PREFIX)/arch/$(UARCH)/_link-dlexe.ld
@@ -204,7 +203,4 @@
 	$(CC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -E -x c $< | grep -v "^\#" > $@
 
-$(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in
-	$(CC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DLOADER -E -x c $< | grep -v "^\#" > $@
-
 $(LIBC_PREFIX)/arch/$(UARCH)/_link-shlib.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in
 	$(CC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DSHLIB -E -x c $< | grep -v "^\#" > $@
Index: uspace/lib/c/arch/abs32le/_link.ld.in
===================================================================
--- uspace/lib/c/arch/abs32le/_link.ld.in	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/lib/c/arch/abs32le/_link.ld.in	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -3,7 +3,4 @@
 
 PHDRS {
-#ifdef LOADER
-	interp PT_INTERP;
-#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
 	data PT_LOAD FLAGS(6);
@@ -12,9 +9,5 @@
 
 SECTIONS {
-#ifdef LOADER
-	. = SEGMENT_START("text-segment", 0x70400000);
-#else
 	. = SEGMENT_START("text-segment", 0x400000);
-#endif
 #ifndef SHLIB
 	PROVIDE (__executable_start = .);
@@ -26,10 +19,4 @@
 		*(.rodata .rodata.*);
 	} :text
-
-#ifdef LOADER
-	.interp : {
-		*(.interp);
-	} :interp :text
-#endif
 
 	. = . + 0x1000;
Index: uspace/lib/c/arch/amd64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/amd64/_link.ld.in	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/lib/c/arch/amd64/_link.ld.in	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -3,7 +3,4 @@
 
 PHDRS {
-#ifdef LOADER
-	interp PT_INTERP;
-#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
 	data PT_LOAD FLAGS(6);
@@ -13,9 +10,5 @@
 
 SECTIONS {
-#ifdef LOADER
-	. = SEGMENT_START("text-segment", 0x70400000);
-#else
 	. = SEGMENT_START("text-segment", 0x400000);
-#endif
 #ifndef SHLIB
 	PROVIDE (__executable_start = .);
@@ -31,10 +24,4 @@
 		*(.rodata .rodata.*);
 	} :text
-
-#ifdef LOADER
-	.interp : {
-		*(.interp);
-	} :interp :text
-#endif
 
 	. = . + 0x1000;
Index: uspace/lib/c/arch/arm32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/arm32/_link.ld.in	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/lib/c/arch/arm32/_link.ld.in	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -3,7 +3,4 @@
 
 PHDRS {
-#ifdef LOADER
-	interp PT_INTERP;
-#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
 	data PT_LOAD FLAGS(6);
@@ -12,9 +9,5 @@
 
 SECTIONS {
-#ifdef LOADER
-	. = SEGMENT_START("text-segment", 0x70400000);
-#else
 	. = SEGMENT_START("text-segment", 0x400000);
-#endif
 #ifndef SHLIB
 	PROVIDE (__executable_start = .);
@@ -30,10 +23,4 @@
 		*(.rodata .rodata.*);
 	} :text
-
-#ifdef LOADER
-	.interp : {
-		*(.interp);
-	} :interp :text
-#endif
 
 	. = . + 0x1000;
Index: uspace/lib/c/arch/ia32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/ia32/_link.ld.in	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/lib/c/arch/ia32/_link.ld.in	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -5,5 +5,5 @@
 
 PHDRS {
-#if defined(LOADER) || defined(DLEXE)
+#if defined(DLEXE)
 	interp PT_INTERP;
 #endif
@@ -18,9 +18,5 @@
 
 SECTIONS {
-#ifdef LOADER
-	. = SEGMENT_START("text-segment", 0x70400000);
-#else
 	. = SEGMENT_START("text-segment", 0x400000);
-#endif
 #ifndef SHLIB
 	PROVIDE (__executable_start = .);
@@ -66,5 +62,5 @@
 #endif
 
-#if defined(LOADER) || defined(DLEXE)
+#if defined(DLEXE)
 	.interp : {
 		*(.interp);
Index: uspace/lib/c/arch/ia64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/ia64/_link.ld.in	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/lib/c/arch/ia64/_link.ld.in	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -3,7 +3,4 @@
 
 PHDRS {
-#ifdef LOADER
-	interp PT_INTERP;
-#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
 	data PT_LOAD FLAGS(6);
@@ -12,9 +9,5 @@
 
 SECTIONS {
-#ifdef LOADER
-	. = SEGMENT_START("text-segment", 0x8000000000);
-#else
 	. = SEGMENT_START("text-segment", 0x400000);
-#endif
 #ifndef SHLIB
 	PROVIDE (__executable_start = .);
@@ -33,10 +26,4 @@
 		*(.rodata .rodata.*);
 	} :text
-
-#ifdef LOADER
-	.interp : {
-		*(.interp);
-	} :interp :text
-#endif
 
 	. = . + 0x4000;
Index: uspace/lib/c/arch/mips32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/mips32/_link.ld.in	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/lib/c/arch/mips32/_link.ld.in	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -3,7 +3,4 @@
 
 PHDRS {
-#ifdef LOADER
-	interp PT_INTERP;
-#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
 	data PT_LOAD FLAGS(6);
@@ -12,9 +9,5 @@
 
 SECTIONS {
-#ifdef LOADER
-	. = SEGMENT_START("text-segment", 0x70400000);
-#else
 	. = SEGMENT_START("text-segment", 0x400000);
-#endif
 #ifndef SHLIB
 	PROVIDE (__executable_start = .);
@@ -30,10 +23,4 @@
 		*(.rodata .rodata.*);
 	} :text
-
-#ifdef LOADER
-	.interp : {
-		*(.interp);
-	} :interp :text
-#endif
 
 	. = . + 0x4000;
Index: uspace/lib/c/arch/ppc32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/ppc32/_link.ld.in	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/lib/c/arch/ppc32/_link.ld.in	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -3,7 +3,4 @@
 
 PHDRS {
-#ifdef LOADER
-	interp PT_INTERP;
-#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
 	data PT_LOAD FLAGS(6);
@@ -13,9 +10,5 @@
 
 SECTIONS {
-#ifdef LOADER
-	. = SEGMENT_START("text-segment", 0x70400000);
-#else
 	. = SEGMENT_START("text-segment", 0x400000);
-#endif
 #ifndef SHLIB
 	PROVIDE (__executable_start = .);
@@ -31,10 +24,4 @@
 		*(.rodata .rodata.*);
 	} :text
-
-#ifdef LOADER
-	.interp : {
-		*(.interp);
-	} :interp :text
-#endif
 
 	. = . + 0x1000;
Index: uspace/lib/c/arch/riscv64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/riscv64/_link.ld.in	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/lib/c/arch/riscv64/_link.ld.in	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -3,7 +3,4 @@
 
 PHDRS {
-#ifdef LOADER
-	interp PT_INTERP;
-#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
 	data PT_LOAD FLAGS(6);
@@ -13,9 +10,5 @@
 
 SECTIONS {
-#ifdef LOADER
-	. = SEGMENT_START("text-segment", 0x70400000);
-#else
 	. = SEGMENT_START("text-segment", 0x400000);
-#endif
 #ifndef SHLIB
 	PROVIDE (__executable_start = .);
@@ -28,10 +21,4 @@
 		*(.srodata .srodata.*);
 	} :text
-
-#ifdef LOADER
-	.interp : {
-		*(.interp);
-	} :interp :text
-#endif
 
 	. = . + 0x1000;
Index: uspace/lib/c/arch/sparc64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/sparc64/_link.ld.in	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/lib/c/arch/sparc64/_link.ld.in	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -3,7 +3,4 @@
 
 PHDRS {
-#ifdef LOADER
-	interp PT_INTERP;
-#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
 	data PT_LOAD FLAGS(6);
@@ -13,9 +10,5 @@
 
 SECTIONS {
-#ifdef LOADER
-	. = SEGMENT_START("text-segment", 0x70400000);
-#else
 	. = SEGMENT_START("text-segment", 0x400000);
-#endif
 #ifndef SHLIB
 	PROVIDE (__executable_start = .);
@@ -31,10 +24,4 @@
 		*(.rodata .rodata.*);
 	} :text
-
-#ifdef LOADER
-	.interp : {
-		*(.interp);
-	} :interp :text
-#endif
 
 	. = . + 0x4000;
Index: uspace/srv/loader/Makefile
===================================================================
--- uspace/srv/loader/Makefile	(revision 57d44dd9c17ddb49818d70775e58b45ccd3511fd)
+++ uspace/srv/loader/Makefile	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
@@ -30,5 +30,5 @@
 USPACE_PREFIX = ../..
 
-LINKER_SCRIPT = $(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld
+EXTRA_LFLAGS = -Ttext-segment=0x70000000
 
 BINARY = loader
