diff --git a/src/cmd/6l/asm.c b/src/cmd/6l/asm.c
index 53e39ac40afc3272128c2c7c9cdceb90c50bc03c..86832286452eabc401aa49bddc9672fe979f2778 100644
--- a/src/cmd/6l/asm.c
+++ b/src/cmd/6l/asm.c
@@ -426,7 +426,7 @@ asmb(void)
 		wputl(4);			/* Shdr with strings */
 
 		fo = 0;
-		va = INITRND;
+		va = INITTEXT & ~((vlong)INITRND - 1);
 		w = HEADR+textsize;
 
 		linuxphdr(1,			/* text - type = PT_LOAD */
@@ -537,7 +537,7 @@ asmb(void)
 		w = symsize;
 
 		linuxshdr(".gosymtab",		/* name */
-			2,			/* type */
+			7,			/* type */
 			0,			/* flags */
 			0,			/* addr */
 			fo,			/* off */
@@ -551,7 +551,7 @@ asmb(void)
 		w = lcsize;
 
 		linuxshdr(".gopclntab",		/* name */
-			2,			/* type */
+			7,			/* type */
 			0,			/* flags */
 			0,			/* addr */
 			fo,			/* off */
diff --git a/src/cmd/6l/obj.c b/src/cmd/6l/obj.c
index 47c0280de57e1df37b7b6016956d23687670738e..1b57687ea70654ab7e776067a6fc49c82329318d 100644
--- a/src/cmd/6l/obj.c
+++ b/src/cmd/6l/obj.c
@@ -198,7 +198,7 @@ main(int argc, char *argv[])
 	case 7:	/* elf64 executable */
 		HEADR = linuxheadr();
 		if(INITTEXT == -1)
-			INITTEXT = 4096+HEADR;
+			INITTEXT = (1<<22)+HEADR;
 		if(INITDAT == -1)
 			INITDAT = 0;
 		if(INITRND == -1)