]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/ld: handle large link base addresses
authorRuss Cox <rsc@golang.org>
Tue, 12 Aug 2014 21:41:16 +0000 (17:41 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 12 Aug 2014 21:41:16 +0000 (17:41 -0400)
codeblk and datblk were truncating their
arguments to int32. Don't do that.

LGTM=dvyukov, rminnich
R=iant, dvyukov, rminnich
CC=golang-codereviews
https://golang.org/cl/126050043

src/cmd/ld/data.c
src/cmd/ld/lib.h

index 96eadd479ad1244010e46489725ea30b17c9d6ec..c0dc3d05f20f282f843deadcddb7eceb1c6d3113 100644 (file)
@@ -425,10 +425,10 @@ dynreloc(void)
 }
 
 static void
-blk(LSym *start, int32 addr, int32 size)
+blk(LSym *start, int64 addr, int64 size)
 {
        LSym *sym;
-       int32 eaddr;
+       int64 eaddr;
        uchar *p, *ep;
 
        for(sym = start; sym != nil; sym = sym->next)
@@ -467,10 +467,10 @@ blk(LSym *start, int32 addr, int32 size)
 }
 
 void
-codeblk(int32 addr, int32 size)
+codeblk(int64 addr, int64 size)
 {
        LSym *sym;
-       int32 eaddr, n;
+       int64 eaddr, n;
        uchar *q;
 
        if(debug['a'])
@@ -527,10 +527,10 @@ codeblk(int32 addr, int32 size)
 }
 
 void
-datblk(int32 addr, int32 size)
+datblk(int64 addr, int64 size)
 {
        LSym *sym;
-       int32 i, eaddr;
+       int64 i, eaddr;
        uchar *p, *ep;
        char *typ, *rsname;
        Reloc *r;
index 4094dfa6b1f849f873320d5d896661587ff8ed59..dd2399023472c544dc8eabdbaea8f6a23b770d6f 100644 (file)
@@ -184,11 +184,11 @@ uint32    be32(uchar *b);
 uint64 be64(uchar *b);
 void   callgraph(void);
 void   cflush(void);
-void   codeblk(int32 addr, int32 size);
+void   codeblk(int64 addr, int64 size);
 vlong  cpos(void);
 void   cseek(vlong p);
 void   cwrite(void *buf, int n);
-void   datblk(int32 addr, int32 size);
+void   datblk(int64 addr, int64 size);
 int    datcmp(LSym *s1, LSym *s2);
 vlong  datoff(vlong addr);
 void   deadcode(void);