diff options
| author | Russ Cox <rsc@golang.org> | 2015-02-28 13:48:09 -0500 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2015-03-01 00:40:11 +0000 |
| commit | dca5f2e9b3212ef6df7e08ebd818b804ad27db91 (patch) | |
| tree | f7ef83263b2b01b7e1e47aa9e120e22e66db7f7f /src/cmd/5l/obj.c | |
| parent | 100d64b9206fb1e73c32ea513cedb31320e9c17e (diff) | |
| download | go-dca5f2e9b3212ef6df7e08ebd818b804ad27db91.tar.xz | |
cmd/5l etc: replace C code with Go code
mv cmd/new5l cmd/5l and so on.
Minimal changes to cmd/dist and cmd/go to keep things building.
More can be deleted in followup CLs.
Change-Id: I1449eca7654ce2580d1f413a56dc4a75f3d4618b
Reviewed-on: https://go-review.googlesource.com/6361
Reviewed-by: Rob Pike <r@golang.org>
Diffstat (limited to 'src/cmd/5l/obj.c')
| -rw-r--r-- | src/cmd/5l/obj.c | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/src/cmd/5l/obj.c b/src/cmd/5l/obj.c deleted file mode 100644 index 887cc5aef4..0000000000 --- a/src/cmd/5l/obj.c +++ /dev/null @@ -1,167 +0,0 @@ -// Inferno utils/5l/obj.c -// http://code.google.com/p/inferno-os/source/browse/utils/5l/obj.c -// -// Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. -// Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) -// Portions Copyright © 1997-1999 Vita Nuova Limited -// Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) -// Portions Copyright © 2004,2006 Bruce Ellis -// Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) -// Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others -// Portions Copyright © 2009 The Go Authors. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -// Reading object files. - -#include "l.h" -#include "../ld/lib.h" -#include "../ld/elf.h" -#include "../ld/macho.h" -#include "../ld/dwarf.h" -#include <ar.h> - -void -main(int argc, char **argv) -{ - linkarchinit(); - ldmain(argc, argv); -} - - -void -linkarchinit(void) -{ - thestring = "arm"; - thelinkarch = &linkarm; - - thearch.thechar = thechar; - thearch.ptrsize = thelinkarch->ptrsize; - thearch.intsize = thelinkarch->ptrsize; - thearch.regsize = thelinkarch->regsize; - thearch.funcalign = FuncAlign; - thearch.maxalign = MaxAlign; - thearch.minlc = MINLC; - thearch.dwarfregsp = DWARFREGSP; - - thearch.adddynlib = adddynlib; - thearch.adddynrel = adddynrel; - thearch.adddynsym = adddynsym; - thearch.archinit = archinit; - thearch.archreloc = archreloc; - thearch.archrelocvariant = archrelocvariant; - thearch.asmb = asmb; - thearch.elfreloc1 = elfreloc1; - thearch.elfsetupplt = elfsetupplt; - thearch.gentext = gentext; - thearch.machoreloc1 = machoreloc1; - thearch.lput = lputl; - thearch.wput = wputl; - thearch.vput = vputl; - - thearch.linuxdynld = "/lib/ld-linux.so.3"; // 2 for OABI, 3 for EABI - thearch.freebsddynld = "/usr/libexec/ld-elf.so.1"; - thearch.openbsddynld = "XXX"; - thearch.netbsddynld = "/libexec/ld.elf_so"; - thearch.dragonflydynld = "XXX"; - thearch.solarisdynld = "XXX"; -} - -void -archinit(void) -{ - LSym *s; - - // getgoextlinkenabled is based on GO_EXTLINK_ENABLED when - // Go was built; see ../../make.bash. - if(linkmode == LinkAuto && strcmp(getgoextlinkenabled(), "0") == 0) - linkmode = LinkInternal; - - switch(HEADTYPE) { - default: - if(linkmode == LinkAuto) - linkmode = LinkInternal; - if(linkmode == LinkExternal && strcmp(getgoextlinkenabled(), "1") != 0) - sysfatal("cannot use -linkmode=external with -H %s", headstr(HEADTYPE)); - break; - case Hlinux: - case Hfreebsd: - case Hnacl: - case Hdarwin: - break; - } - - switch(HEADTYPE) { - default: - diag("unknown -H option"); - errorexit(); - case Hplan9: /* plan 9 */ - HEADR = 32L; - if(INITTEXT == -1) - INITTEXT = 4128; - if(INITDAT == -1) - INITDAT = 0; - if(INITRND == -1) - INITRND = 4096; - break; - case Hlinux: /* arm elf */ - case Hfreebsd: - case Hnetbsd: - debug['d'] = 0; // with dynamic linking - elfinit(); - HEADR = ELFRESERVE; - if(INITTEXT == -1) - INITTEXT = 0x10000 + HEADR; - if(INITDAT == -1) - INITDAT = 0; - if(INITRND == -1) - INITRND = 4096; - break; - case Hnacl: - elfinit(); - HEADR = 0x10000; - funcalign = 16; - if(INITTEXT == -1) - INITTEXT = 0x20000; - if(INITDAT == -1) - INITDAT = 0; - if(INITRND == -1) - INITRND = 0x10000; - break; - case Hdarwin: /* apple MACH */ - debug['w'] = 1; // disable DWARF generataion - machoinit(); - HEADR = INITIAL_MACHO_HEADR; - if(INITTEXT == -1) - INITTEXT = 4096+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", - INITDAT, INITRND); - - // embed goarm to runtime.goarm - s = linklookup(ctxt, "runtime.goarm", 0); - s->type = SRODATA; - adduint8(ctxt, s, ctxt->goarm); -} |
