Index: src/cmd/6l/asm.c |
=================================================================== |
--- a/src/cmd/6l/asm.c |
+++ b/src/cmd/6l/asm.c |
@@ -591,22 +591,6 @@ |
elfstr[ElfStrGnuVersion] = addstring(shstrtab, ".gnu.version"); |
elfstr[ElfStrGnuVersionR] = addstring(shstrtab, ".gnu.version_r"); |
- /* interpreter string */ |
- if(interpreter == nil) { |
- switch(HEADTYPE) { |
- case Hlinux: |
- interpreter = linuxdynld; |
- break; |
- case Hfreebsd: |
- interpreter = freebsddynld; |
- break; |
- } |
- } |
- s = lookup(".interp", 0); |
- s->type = SELFROSECT; |
- s->reachable = 1; |
- addstring(s, interpreter); |
- |
/* dynamic symbol table - first entry all zeros */ |
s = lookup(".dynsym", 0); |
s->type = SELFROSECT; |
@@ -909,7 +893,7 @@ |
break; |
} |
} |
- shsym(sh, lookup(".interp", 0)); |
+ elfinterp(sh, startva, interpreter); |
ph = newElfPhdr(); |
ph->type = PT_INTERP; |
@@ -1088,7 +1072,7 @@ |
a += elfwritephdrs(); |
a += elfwriteshdrs(); |
cflush(); |
- if(a > ELFRESERVE) |
+ if(a+elfwriteinterp() > ELFRESERVE) |
diag("ELFRESERVE too small: %d > %d", a, ELFRESERVE); |
break; |
case Hwindows: |