]> Cypherpunks repositories - gostls13.git/commitdiff
ld: share asmlc
authorRuss Cox <rsc@golang.org>
Wed, 6 Oct 2010 13:52:54 +0000 (09:52 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 6 Oct 2010 13:52:54 +0000 (09:52 -0400)
R=ken2
CC=golang-dev
https://golang.org/cl/2373043

src/cmd/5l/asm.c
src/cmd/5l/l.h
src/cmd/6l/span.c
src/cmd/8l/span.c
src/cmd/ld/lib.c
src/cmd/ld/lib.h

index aeab60a68446deec0b7c755a468fc868d771f2dd..82e7a098990eac61b1d09a0b41484d467acd8ef6 100644 (file)
@@ -1126,88 +1126,6 @@ putsymb(char *s, int t, int32 v, int ver)
        }
 }
 
-#define        MINLC   4
-void
-asmlc(void)
-{
-       int32 oldpc, oldlc;
-       Prog *p;
-       int32 v, s;
-
-       oldpc = INITTEXT;
-       oldlc = 0;
-       for(p = firstp; p != P; p = p->link) {
-               setarch(p);
-               if(p->line == oldlc || p->as == ATEXT || p->as == ANOP) {
-                       if(p->as == ATEXT)
-                               curtext = p;
-                       if(debug['L'])
-                               Bprint(&bso, "%6lux %P\n",
-                                       p->pc, p);
-                       continue;
-               }
-               if(debug['L'])
-                       Bprint(&bso, "\t\t%6ld", lcsize);
-               v = (p->pc - oldpc) / MINLC;
-               while(v) {
-                       s = 127;
-                       if(v < 127)
-                               s = v;
-                       cput(s+128);    /* 129-255 +pc */
-                       if(debug['L'])
-                               Bprint(&bso, " pc+%ld*%d(%ld)", s, MINLC, s+128);
-                       v -= s;
-                       lcsize++;
-               }
-               s = p->line - oldlc;
-               oldlc = p->line;
-               oldpc = p->pc + MINLC;
-               if(s > 64 || s < -64) {
-                       cput(0);        /* 0 vv +lc */
-                       cput(s>>24);
-                       cput(s>>16);
-                       cput(s>>8);
-                       cput(s);
-                       if(debug['L']) {
-                               if(s > 0)
-                                       Bprint(&bso, " lc+%ld(%d,%ld)\n",
-                                               s, 0, s);
-                               else
-                                       Bprint(&bso, " lc%ld(%d,%ld)\n",
-                                               s, 0, s);
-                               Bprint(&bso, "%6lux %P\n",
-                                       p->pc, p);
-                       }
-                       lcsize += 5;
-                       continue;
-               }
-               if(s > 0) {
-                       cput(0+s);      /* 1-64 +lc */
-                       if(debug['L']) {
-                               Bprint(&bso, " lc+%ld(%ld)\n", s, 0+s);
-                               Bprint(&bso, "%6lux %P\n",
-                                       p->pc, p);
-                       }
-               } else {
-                       cput(64-s);     /* 65-128 -lc */
-                       if(debug['L']) {
-                               Bprint(&bso, " lc%ld(%ld)\n", s, 64-s);
-                               Bprint(&bso, "%6lux %P\n",
-                                       p->pc, p);
-                       }
-               }
-               lcsize++;
-       }
-       while(lcsize & 1) {
-               s = 129;
-               cput(s);
-               lcsize++;
-       }
-       if(debug['v'] || debug['L'])
-               Bprint(&bso, "lcsize = %ld\n", lcsize);
-       Bflush(&bso);
-}
-
 static void
 outt(int32 f, int32 l)
 {
index c6659cfab3f4df522a0a617d1ff829f8256046a4..3cd1cbcd48232e725dab9d3aedeec85c09489b13 100644 (file)
@@ -279,6 +279,7 @@ enum
        NENT            = 100,
        MAXIO           = 8192,
        MAXHIST         = 20,   /* limit of path elements for history symbols */
+       MINLC   = 4,
 
        Roffset = 22,           /* no. bits for offset in relocation address */
        Rindex  = 10,           /* no. bits for index in relocation address */
index 49efa9a2e7168958b1a2221b54572272fac3e7de..60114ece59e5e8271705f11fb71717817defe090 100644 (file)
@@ -407,86 +407,6 @@ asmelfsym(void)
        genasmsym(putelfsymb);
 }
 
-void
-asmlc(void)
-{
-       vlong oldpc;
-       Prog *p;
-       int32 oldlc, v, s;
-
-       oldpc = INITTEXT;
-       oldlc = 0;
-       for(p = firstp; p != P; p = p->link) {
-               if(p->line == oldlc || p->as == ATEXT || p->as == ANOP) {
-                       if(p->as == ATEXT)
-                               curtext = p;
-                       if(debug['O'])
-                               Bprint(&bso, "%6llux %P\n",
-                                       p->pc, p);
-                       continue;
-               }
-               if(debug['O'])
-                       Bprint(&bso, "\t\t%6ld", lcsize);
-               v = (p->pc - oldpc) / MINLC;
-               while(v) {
-                       s = 127;
-                       if(v < 127)
-                               s = v;
-                       cput(s+128);    /* 129-255 +pc */
-                       if(debug['O'])
-                               Bprint(&bso, " pc+%ld*%d(%ld)", s, MINLC, s+128);
-                       v -= s;
-                       lcsize++;
-               }
-               s = p->line - oldlc;
-               oldlc = p->line;
-               oldpc = p->pc + MINLC;
-               if(s > 64 || s < -64) {
-                       cput(0);        /* 0 vv +lc */
-                       cput(s>>24);
-                       cput(s>>16);
-                       cput(s>>8);
-                       cput(s);
-                       if(debug['O']) {
-                               if(s > 0)
-                                       Bprint(&bso, " lc+%ld(%d,%ld)\n",
-                                               s, 0, s);
-                               else
-                                       Bprint(&bso, " lc%ld(%d,%ld)\n",
-                                               s, 0, s);
-                               Bprint(&bso, "%6llux %P\n",
-                                       p->pc, p);
-                       }
-                       lcsize += 5;
-                       continue;
-               }
-               if(s > 0) {
-                       cput(0+s);      /* 1-64 +lc */
-                       if(debug['O']) {
-                               Bprint(&bso, " lc+%ld(%ld)\n", s, 0+s);
-                               Bprint(&bso, "%6llux %P\n",
-                                       p->pc, p);
-                       }
-               } else {
-                       cput(64-s);     /* 65-128 -lc */
-                       if(debug['O']) {
-                               Bprint(&bso, " lc%ld(%ld)\n", s, 64-s);
-                               Bprint(&bso, "%6llux %P\n",
-                                       p->pc, p);
-                       }
-               }
-               lcsize++;
-       }
-       while(lcsize & 1) {
-               s = 129;
-               cput(s);
-               lcsize++;
-       }
-       if(debug['v'] || debug['O'])
-               Bprint(&bso, "lcsize = %ld\n", lcsize);
-       Bflush(&bso);
-}
-
 int
 prefixof(Adr *a)
 {
index 105d18b9f808fb785a4de07953c6b5361e0bd312..e0f3ffc90e2b832a327ec732c03e1587559aa075 100644 (file)
@@ -334,86 +334,6 @@ asmsym(void)
        Bflush(&bso);
 }
 
-void
-asmlc(void)
-{
-       int32 oldpc, oldlc;
-       Prog *p;
-       int32 v, s;
-
-       oldpc = INITTEXT;
-       oldlc = 0;
-       for(p = firstp; p != P; p = p->link) {
-               if(p->line == oldlc || p->as == ATEXT || p->as == ANOP) {
-                       if(p->as == ATEXT)
-                               curtext = p;
-                       if(debug['L'])
-                               Bprint(&bso, "%6lux %P\n",
-                                       p->pc, p);
-                       continue;
-               }
-               if(debug['L'])
-                       Bprint(&bso, "\t\t%6ld", lcsize);
-               v = (p->pc - oldpc) / MINLC;
-               while(v) {
-                       s = 127;
-                       if(v < 127)
-                               s = v;
-                       cput(s+128);    /* 129-255 +pc */
-                       if(debug['L'])
-                               Bprint(&bso, " pc+%ld*%d(%ld)", s, MINLC, s+128);
-                       v -= s;
-                       lcsize++;
-               }
-               s = p->line - oldlc;
-               oldlc = p->line;
-               oldpc = p->pc + MINLC;
-               if(s > 64 || s < -64) {
-                       cput(0);        /* 0 vv +lc */
-                       cput(s>>24);
-                       cput(s>>16);
-                       cput(s>>8);
-                       cput(s);
-                       if(debug['L']) {
-                               if(s > 0)
-                                       Bprint(&bso, " lc+%ld(%d,%ld)\n",
-                                               s, 0, s);
-                               else
-                                       Bprint(&bso, " lc%ld(%d,%ld)\n",
-                                               s, 0, s);
-                               Bprint(&bso, "%6lux %P\n",
-                                       p->pc, p);
-                       }
-                       lcsize += 5;
-                       continue;
-               }
-               if(s > 0) {
-                       cput(0+s);      /* 1-64 +lc */
-                       if(debug['L']) {
-                               Bprint(&bso, " lc+%ld(%ld)\n", s, 0+s);
-                               Bprint(&bso, "%6lux %P\n",
-                                       p->pc, p);
-                       }
-               } else {
-                       cput(64-s);     /* 65-128 -lc */
-                       if(debug['L']) {
-                               Bprint(&bso, " lc%ld(%ld)\n", s, 64-s);
-                               Bprint(&bso, "%6lux %P\n",
-                                       p->pc, p);
-                       }
-               }
-               lcsize++;
-       }
-       while(lcsize & 1) {
-               s = 129;
-               cput(s);
-               lcsize++;
-       }
-       if(debug['v'] || debug['L'])
-               Bprint(&bso, "lcsize = %ld\n", lcsize);
-       Bflush(&bso);
-}
-
 int
 prefixof(Adr *a)
 {
index 3e755d7f961e5aecdee1b454c5465af25e46f085..a7f8396fd69b155392e81971fa7a557a593b0db8 100644 (file)
@@ -1,5 +1,6 @@
-// Derived from Inferno utils/6l/obj.c
+// Derived from Inferno utils/6l/obj.c and utils/6l/span.c
 // http://code.google.com/p/inferno-os/source/browse/utils/6l/obj.c
+// http://code.google.com/p/inferno-os/source/browse/utils/6l/span.c
 //
 //     Copyright © 1994-1999 Lucent Technologies Inc.  All rights reserved.
 //     Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
@@ -933,3 +934,83 @@ ewrite(int fd, void *buf, int n)
                errorexit();
        }
 }
+
+void
+asmlc(void)
+{
+       vlong oldpc;
+       Prog *p;
+       int32 oldlc, v, s;
+
+       oldpc = INITTEXT;
+       oldlc = 0;
+       for(p = firstp; p != P; p = p->link) {
+               if(p->line == oldlc || p->as == ATEXT || p->as == ANOP) {
+                       if(p->as == ATEXT)
+                               curtext = p;
+                       if(debug['O'])
+                               Bprint(&bso, "%6llux %P\n",
+                                       p->pc, p);
+                       continue;
+               }
+               if(debug['O'])
+                       Bprint(&bso, "\t\t%6ld", lcsize);
+               v = (p->pc - oldpc) / MINLC;
+               while(v) {
+                       s = 127;
+                       if(v < 127)
+                               s = v;
+                       cput(s+128);    /* 129-255 +pc */
+                       if(debug['O'])
+                               Bprint(&bso, " pc+%ld*%d(%ld)", s, MINLC, s+128);
+                       v -= s;
+                       lcsize++;
+               }
+               s = p->line - oldlc;
+               oldlc = p->line;
+               oldpc = p->pc + MINLC;
+               if(s > 64 || s < -64) {
+                       cput(0);        /* 0 vv +lc */
+                       cput(s>>24);
+                       cput(s>>16);
+                       cput(s>>8);
+                       cput(s);
+                       if(debug['O']) {
+                               if(s > 0)
+                                       Bprint(&bso, " lc+%ld(%d,%ld)\n",
+                                               s, 0, s);
+                               else
+                                       Bprint(&bso, " lc%ld(%d,%ld)\n",
+                                               s, 0, s);
+                               Bprint(&bso, "%6llux %P\n",
+                                       p->pc, p);
+                       }
+                       lcsize += 5;
+                       continue;
+               }
+               if(s > 0) {
+                       cput(0+s);      /* 1-64 +lc */
+                       if(debug['O']) {
+                               Bprint(&bso, " lc+%ld(%ld)\n", s, 0+s);
+                               Bprint(&bso, "%6llux %P\n",
+                                       p->pc, p);
+                       }
+               } else {
+                       cput(64-s);     /* 65-128 -lc */
+                       if(debug['O']) {
+                               Bprint(&bso, " lc%ld(%ld)\n", s, 64-s);
+                               Bprint(&bso, "%6llux %P\n",
+                                       p->pc, p);
+                       }
+               }
+               lcsize++;
+       }
+       while(lcsize & 1) {
+               s = 129;
+               cput(s);
+               lcsize++;
+       }
+       if(debug['v'] || debug['O'])
+               Bprint(&bso, "lcsize = %ld\n", lcsize);
+       Bflush(&bso);
+}
index b828bed6eaa46f67b7de86f28b52d7ba96b83c2c..e26500d204fce2ec33bca55a1b30f70ba88878ec 100644 (file)
@@ -103,6 +103,7 @@ void        addlibpath(char *srcref, char *objref, char *file, char *pkg);
 Section*       addsection(Segment*, char*, int);
 void   copyhistfrog(char *buf, int nbuf);
 void   addhist(int32 line, int type);
+void   asmlc(void);
 void   histtoauto(void);
 void   collapsefrog(Sym *s);
 Sym*   lookup(char *symb, int v);