summaryrefslogtreecommitdiff
path: root/src/cmd/8l
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/8l')
-rw-r--r--src/cmd/8l/asm.c35
-rw-r--r--src/cmd/8l/list.c2
-rw-r--r--src/cmd/8l/mkenam30
-rw-r--r--src/cmd/8l/obj.c17
-rw-r--r--src/cmd/8l/pass.c1
-rw-r--r--src/cmd/8l/span.c4
6 files changed, 26 insertions, 63 deletions
diff --git a/src/cmd/8l/asm.c b/src/cmd/8l/asm.c
index cb900d28d..e1ccfb8a3 100644
--- a/src/cmd/8l/asm.c
+++ b/src/cmd/8l/asm.c
@@ -83,9 +83,6 @@ enum {
ElfStrText,
ElfStrData,
ElfStrBss,
- ElfStrGosymcounts,
- ElfStrGosymtab,
- ElfStrGopclntab,
ElfStrShstrtab,
ElfStrSymtab,
ElfStrStrtab,
@@ -531,10 +528,9 @@ doelf(void)
elfstr[ElfStrBss] = addstring(shstrtab, ".bss");
addstring(shstrtab, ".elfdata");
addstring(shstrtab, ".rodata");
+ addstring(shstrtab, ".gosymtab");
+ addstring(shstrtab, ".gopclntab");
if(!debug['s']) {
- elfstr[ElfStrGosymcounts] = addstring(shstrtab, ".gosymcounts");
- elfstr[ElfStrGosymtab] = addstring(shstrtab, ".gosymtab");
- elfstr[ElfStrGopclntab] = addstring(shstrtab, ".gopclntab");
elfstr[ElfStrSymtab] = addstring(shstrtab, ".symtab");
elfstr[ElfStrStrtab] = addstring(shstrtab, ".strtab");
dwarfaddshstrings(shstrtab);
@@ -679,10 +675,11 @@ asmb(void)
seek(cout, sect->vaddr - segtext.vaddr + segtext.fileoff, 0);
codeblk(sect->vaddr, sect->len);
- /* output read-only data in text segment */
- sect = segtext.sect->next;
- seek(cout, sect->vaddr - segtext.vaddr + segtext.fileoff, 0);
- datblk(sect->vaddr, sect->len);
+ /* output read-only data in text segment (rodata, gosymtab and pclntab) */
+ for(sect = sect->next; sect != nil; sect = sect->next) {
+ seek(cout, sect->vaddr - segtext.vaddr + segtext.fileoff, 0);
+ datblk(sect->vaddr, sect->len);
+ }
if(debug['v'])
Bprint(&bso, "%5.2f datblk\n", cputime());
@@ -920,10 +917,6 @@ asmb(void)
break;
Elfput:
- /* elf 386 */
- if(HEADTYPE == Htiny)
- debug['d'] = 1;
-
eh = getElfEhdr();
startva = INITTEXT - HEADR;
@@ -1087,18 +1080,6 @@ asmb(void)
elfshbits(sect);
if (!debug['s']) {
- sh = newElfShdr(elfstr[ElfStrGosymtab]);
- sh->type = SHT_PROGBITS;
- sh->flags = SHF_ALLOC;
- sh->addralign = 1;
- shsym(sh, lookup("symtab", 0));
-
- sh = newElfShdr(elfstr[ElfStrGopclntab]);
- sh->type = SHT_PROGBITS;
- sh->flags = SHF_ALLOC;
- sh->addralign = 1;
- shsym(sh, lookup("pclntab", 0));
-
sh = newElfShdr(elfstr[ElfStrSymtab]);
sh->type = SHT_SYMTAB;
sh->off = symo;
@@ -1276,6 +1257,6 @@ genasmsym(void (*put)(Sym*, char*, int, vlong, vlong, int, Sym*))
put(nil, a->asym->name, 'p', a->aoffset, 0, 0, a->gotype);
}
if(debug['v'] || debug['n'])
- Bprint(&bso, "symsize = %uld\n", symsize);
+ Bprint(&bso, "symsize = %d\n", symsize);
Bflush(&bso);
}
diff --git a/src/cmd/8l/list.c b/src/cmd/8l/list.c
index 4e199d767..31ae02346 100644
--- a/src/cmd/8l/list.c
+++ b/src/cmd/8l/list.c
@@ -176,7 +176,7 @@ Dconv(Fmt *fp)
}
brk:
if(a->index != D_NONE) {
- sprint(s, "(%R*%d)", a->index, a->scale);
+ sprint(s, "(%R*%d)", (int)a->index, a->scale);
strcat(str, s);
}
conv:
diff --git a/src/cmd/8l/mkenam b/src/cmd/8l/mkenam
index b33fec7cc..992aa3160 100644
--- a/src/cmd/8l/mkenam
+++ b/src/cmd/8l/mkenam
@@ -28,18 +28,18 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-ed - ../8l/8.out.h <<'!'
-v/^ A/d
-,s/^ A/ "/
-g/ .*$/s///
-,s/,*$/",/
-1i
-char* anames[] =
-{
-.
-$a
-};
-.
-w enam.c
-Q
-!
+awk '
+BEGIN {
+ print "char* anames[] ="
+ print "{"
+}
+
+/^ A/ {
+ name=$1
+ sub(/,/, "", name)
+ sub(/^A/, "", name)
+ print "\t\"" name "\","
+}
+
+END { print "};" }
+' ../8l/8.out.h >enam.c
diff --git a/src/cmd/8l/obj.c b/src/cmd/8l/obj.c
index 440dcb77f..ce7b59518 100644
--- a/src/cmd/8l/obj.c
+++ b/src/cmd/8l/obj.c
@@ -54,11 +54,9 @@ Header headers[] = {
"msdosexe", Hmsdosexe,
"darwin", Hdarwin,
"linux", Hlinux,
- "nacl", Hnacl,
"freebsd", Hfreebsd,
"windows", Hwindows,
"windowsgui", Hwindows,
- "tiny", Htiny,
0, 0
};
@@ -70,10 +68,8 @@ Header headers[] = {
* -Hmsdosexe -Tx -Rx is fake MS-DOS .EXE
* -Hdarwin -Tx -Rx is Apple Mach-O
* -Hlinux -Tx -Rx is Linux ELF32
- * -Hnacl -Tx -Rx was Google Native Client
* -Hfreebsd -Tx -Rx is FreeBSD ELF32
* -Hwindows -Tx -Rx is MS Windows PE32
- * -Htiny -Tx -Rx is tiny (os image)
*/
void
@@ -254,17 +250,6 @@ main(int argc, char *argv[])
if(INITRND == -1)
INITRND = PESECTALIGN;
break;
- case Htiny:
- tlsoffset = 0;
- elfinit();
- HEADR = ELFRESERVE;
- if(INITTEXT == -1)
- INITTEXT = 0x100000+HEADR;
- if(INITDAT == -1)
- INITDAT = 0;
- if(INITRND == -1)
- INITRND = 4096;
- break;
}
if(INITDAT != 0 && INITRND != 0)
print("warning: -D0x%ux is ignored because of -R0x%ux\n",
@@ -488,7 +473,6 @@ loop:
s = lookup(x, r);
if(x != name)
free(x);
- name = nil;
if(debug['S'] && r == 0)
sig = 1729;
@@ -718,7 +702,6 @@ loop:
lastp = p;
goto loop;
}
- goto loop;
eof:
diag("truncated object file: %s", pn);
diff --git a/src/cmd/8l/pass.c b/src/cmd/8l/pass.c
index 72ae043d6..2e0990c5a 100644
--- a/src/cmd/8l/pass.c
+++ b/src/cmd/8l/pass.c
@@ -414,7 +414,6 @@ dostkoff(void)
autoffset = 0;
q = P;
- q1 = P;
if(pmorestack != P)
if(!(p->from.scale & NOSPLIT)) {
p = appendp(p); // load g into CX
diff --git a/src/cmd/8l/span.c b/src/cmd/8l/span.c
index 66a843b23..a4cba1257 100644
--- a/src/cmd/8l/span.c
+++ b/src/cmd/8l/span.c
@@ -89,7 +89,7 @@ span1(Sym *s)
*bp++ = v;
*bp++ = v>>8;
*bp++ = v>>16;
- *bp++ = v>>24;
+ *bp = v>>24;
}
}
p->comefrom = P;
@@ -1319,7 +1319,7 @@ asmins(Prog *p)
andptr = and;
doasm(p);
if(andptr > and+sizeof and) {
- print("and[] is too short - %d byte instruction\n", andptr - and);
+ print("and[] is too short - %ld byte instruction\n", andptr - and);
errorexit();
}
}