From 3884f7321f7f79e6bb32029dff83882d42704cba Mon Sep 17 00:00:00 2001 From: Kai Backman Date: Mon, 25 Jan 2010 21:38:27 -0800 Subject: [PATCH] salvaging 183105 from dead client a number of fixes for arm elf generation in 5l. -T now works as advertised, -D now works properly. R=rsc CC=golang-dev https://golang.org/cl/194076 --- src/cmd/5l/asm.c | 11 ++++++----- src/cmd/5l/doc.go | 2 +- src/cmd/5l/obj.c | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/cmd/5l/asm.c b/src/cmd/5l/asm.c index a375b8bf87..bc8b322ab0 100644 --- a/src/cmd/5l/asm.c +++ b/src/cmd/5l/asm.c @@ -301,13 +301,14 @@ asmb(void) wputl(5); /* # of Shdrs */ wputl(4); /* Shdr with strings */ - fo = 0; - va = INITTEXT & ~((vlong)INITRND - 1); - w = HEADR+textsize; + fo = HEADR; + va = rnd(INITTEXT, INITRND); + + w = textsize; linuxphdr(1, /* text - type = PT_LOAD */ 1L+4L, /* text - flags = PF_X+PF_R */ - 0, /* file offset */ + fo, /* file offset */ va, /* vaddr */ va, /* paddr */ w, /* file size */ @@ -360,7 +361,7 @@ asmb(void) stroffset = 1; /* 0 means no name, so start at 1 */ fo = HEADR; - va = (INITTEXT & ~((vlong)INITRND - 1)) + HEADR; + va = rnd(INITTEXT, INITRND); w = textsize; linuxshdr(".text", /* name */ diff --git a/src/cmd/5l/doc.go b/src/cmd/5l/doc.go index be1fddd706..132426158a 100644 --- a/src/cmd/5l/doc.go +++ b/src/cmd/5l/doc.go @@ -19,10 +19,10 @@ Major changes include: Original options are listed in the link above. Options new in this version: + -L dir1,dir2,.. Search for libraries (package files) in the comma-separated list of directories. The default is the single location $GOROOT/pkg/$GOOS_arm. - */ package documentation diff --git a/src/cmd/5l/obj.c b/src/cmd/5l/obj.c index 274d502b84..292a0df7a6 100644 --- a/src/cmd/5l/obj.c +++ b/src/cmd/5l/obj.c @@ -80,7 +80,7 @@ linkername[] = void usage(void) { - fprint(2, "usage: 5l [-options] main.5\n"); + fprint(2, "usage: 5l [-E entry] [-H head] [-L dir] [-T text] [-D data] [-R rnd] [-o out] main.5\n"); errorexit(); } @@ -221,7 +221,7 @@ main(int argc, char *argv[]) case 6: /* arm elf */ HEADR = linuxheadr(); if(INITTEXT == -1) - INITTEXT = 0x8000+HEADR; + INITTEXT = 0x8000; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) -- 2.48.1