Index: uspace/lib/c/arch/abs32le/_link.ld.in
===================================================================
--- uspace/lib/c/arch/abs32le/_link.ld.in	(revision 5b61171402bf41905f2575034ebd820663168e72)
+++ uspace/lib/c/arch/abs32le/_link.ld.in	(revision 47b2d7e3f708bed0cc86a39575d3eb6cb2b6e7f8)
@@ -5,8 +5,6 @@
 #ifdef LOADER
 	interp PT_INTERP;
+#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
-#else
-	text PT_LOAD FLAGS(5);
-#endif
 	data PT_LOAD FLAGS(6);
 }
@@ -14,8 +12,12 @@
 SECTIONS {
 #ifdef LOADER
-	. = 0x70001000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x70400000);
 #else
-	. = 0x1000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x400000);
 #endif
+#ifndef SHLIB
+	PROVIDE (__executable_start = .);
+#endif
+	. = . + SIZEOF_HEADERS;
 
 	.text : {
Index: uspace/lib/c/arch/amd64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/amd64/_link.ld.in	(revision 5b61171402bf41905f2575034ebd820663168e72)
+++ uspace/lib/c/arch/amd64/_link.ld.in	(revision 47b2d7e3f708bed0cc86a39575d3eb6cb2b6e7f8)
@@ -5,8 +5,6 @@
 #ifdef LOADER
 	interp PT_INTERP;
+#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
-#else
-	text PT_LOAD FLAGS(5);
-#endif
 	data PT_LOAD FLAGS(6);
 	debug PT_NOTE;
@@ -15,8 +13,12 @@
 SECTIONS {
 #ifdef LOADER
-	. = 0x70001000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x70400000);
 #else
-	. = 0x1000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x400000);
 #endif
+#ifndef SHLIB
+	PROVIDE (__executable_start = .);
+#endif
+	. = . + SIZEOF_HEADERS;
 
 	.init : {
Index: uspace/lib/c/arch/arm32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/arm32/_link.ld.in	(revision 5b61171402bf41905f2575034ebd820663168e72)
+++ uspace/lib/c/arch/arm32/_link.ld.in	(revision 47b2d7e3f708bed0cc86a39575d3eb6cb2b6e7f8)
@@ -5,8 +5,6 @@
 #ifdef LOADER
 	interp PT_INTERP;
+#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
-#else
-	text PT_LOAD FLAGS(5);
-#endif
 	data PT_LOAD FLAGS(6);
 }
@@ -14,8 +12,12 @@
 SECTIONS {
 #ifdef LOADER
-	. = 0x70001000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x70400000);
 #else
-	. = 0x1000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x400000);
 #endif
+#ifndef SHLIB
+	PROVIDE (__executable_start = .);
+#endif
+	. = . + SIZEOF_HEADERS;
 
 	.init : {
Index: uspace/lib/c/arch/ia32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/ia32/_link.ld.in	(revision 5b61171402bf41905f2575034ebd820663168e72)
+++ uspace/lib/c/arch/ia32/_link.ld.in	(revision 47b2d7e3f708bed0cc86a39575d3eb6cb2b6e7f8)
@@ -7,8 +7,6 @@
 #if defined(LOADER) || defined(DLEXE)
 	interp PT_INTERP;
+#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
-#else
-	text PT_LOAD FLAGS(5);
-#endif
 	data PT_LOAD FLAGS(6);
 	tls PT_TLS;
@@ -21,8 +19,12 @@
 SECTIONS {
 #ifdef LOADER
-	. = 0x70001000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x70400000);
 #else
-	. = 0x1000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x400000);
 #endif
+#ifndef SHLIB
+	PROVIDE (__executable_start = .);
+#endif
+	. = . + SIZEOF_HEADERS;
 
 	.init : {
Index: uspace/lib/c/arch/ia64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/ia64/_link.ld.in	(revision 5b61171402bf41905f2575034ebd820663168e72)
+++ uspace/lib/c/arch/ia64/_link.ld.in	(revision 47b2d7e3f708bed0cc86a39575d3eb6cb2b6e7f8)
@@ -5,8 +5,6 @@
 #ifdef LOADER
 	interp PT_INTERP;
-	text PT_LOAD FLAGS(5);
-#else
-	text PT_LOAD FLAGS(5);
 #endif
+	text PT_LOAD FILEHDR PHDRS FLAGS(5);
 	data PT_LOAD FLAGS(6);
 }
@@ -14,8 +12,12 @@
 SECTIONS {
 #ifdef LOADER
-	. = 0x800000000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x8000000000);
 #else
-	. = 0x4000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x400000);
 #endif
+#ifndef SHLIB
+	PROVIDE (__executable_start = .);
+#endif
+	. = . + SIZEOF_HEADERS;
 
 	/* Workaround proper alignment of the .init section */
Index: uspace/lib/c/arch/mips32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/mips32/_link.ld.in	(revision 5b61171402bf41905f2575034ebd820663168e72)
+++ uspace/lib/c/arch/mips32/_link.ld.in	(revision 47b2d7e3f708bed0cc86a39575d3eb6cb2b6e7f8)
@@ -5,8 +5,6 @@
 #ifdef LOADER
 	interp PT_INTERP;
+#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
-#else
-	text PT_LOAD FLAGS(5);
-#endif
 	data PT_LOAD FLAGS(6);
 }
@@ -14,8 +12,12 @@
 SECTIONS {
 #ifdef LOADER
-	. = 0x70004000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x70400000);
 #else
-	. = 0x4000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x400000);
 #endif
+#ifndef SHLIB
+	PROVIDE (__executable_start = .);
+#endif
+	. = . + SIZEOF_HEADERS;
 
 	.init : {
Index: uspace/lib/c/arch/ppc32/_link.ld.in
===================================================================
--- uspace/lib/c/arch/ppc32/_link.ld.in	(revision 5b61171402bf41905f2575034ebd820663168e72)
+++ uspace/lib/c/arch/ppc32/_link.ld.in	(revision 47b2d7e3f708bed0cc86a39575d3eb6cb2b6e7f8)
@@ -5,8 +5,6 @@
 #ifdef LOADER
 	interp PT_INTERP;
+#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
-#else
-	text PT_LOAD FLAGS(5);
-#endif
 	data PT_LOAD FLAGS(6);
 	debug PT_NOTE;
@@ -15,8 +13,12 @@
 SECTIONS {
 #ifdef LOADER
-	. = 0x70001000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x70400000);
 #else
-	. = 0x1000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x400000);
 #endif
+#ifndef SHLIB
+	PROVIDE (__executable_start = .);
+#endif
+	. = . + SIZEOF_HEADERS;
 
 	.init : {
Index: uspace/lib/c/arch/riscv64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/riscv64/_link.ld.in	(revision 5b61171402bf41905f2575034ebd820663168e72)
+++ uspace/lib/c/arch/riscv64/_link.ld.in	(revision 47b2d7e3f708bed0cc86a39575d3eb6cb2b6e7f8)
@@ -5,8 +5,6 @@
 #ifdef LOADER
 	interp PT_INTERP;
+#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
-#else
-	text PT_LOAD FLAGS(5);
-#endif
 	data PT_LOAD FLAGS(6);
 	debug PT_NOTE;
@@ -15,8 +13,12 @@
 SECTIONS {
 #ifdef LOADER
-	. = 0x70001000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x70400000);
 #else
-	. = 0x1000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x400000);
 #endif
+#ifndef SHLIB
+	PROVIDE (__executable_start = .);
+#endif
+	. = . + SIZEOF_HEADERS;
 
 	.text : {
Index: uspace/lib/c/arch/sparc64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/sparc64/_link.ld.in	(revision 5b61171402bf41905f2575034ebd820663168e72)
+++ uspace/lib/c/arch/sparc64/_link.ld.in	(revision 47b2d7e3f708bed0cc86a39575d3eb6cb2b6e7f8)
@@ -5,8 +5,6 @@
 #ifdef LOADER
 	interp PT_INTERP;
+#endif
 	text PT_LOAD FILEHDR PHDRS FLAGS(5);
-#else
-	text PT_LOAD FLAGS(5);
-#endif
 	data PT_LOAD FLAGS(6);
 	debug PT_NOTE;
@@ -15,8 +13,12 @@
 SECTIONS {
 #ifdef LOADER
-	. = 0x70004000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x70400000);
 #else
-	. = 0x4000 + SIZEOF_HEADERS;
+	. = SEGMENT_START("text-segment", 0x400000);
 #endif
+#ifndef SHLIB
+	PROVIDE (__executable_start = .);
+#endif
+	. = . + SIZEOF_HEADERS;
 
 	.init : {
