aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/5l/obj.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2015-02-28 13:48:09 -0500
committerRuss Cox <rsc@golang.org>2015-03-01 00:40:11 +0000
commitdca5f2e9b3212ef6df7e08ebd818b804ad27db91 (patch)
treef7ef83263b2b01b7e1e47aa9e120e22e66db7f7f /src/cmd/5l/obj.c
parent100d64b9206fb1e73c32ea513cedb31320e9c17e (diff)
downloadgo-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.c167
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);
-}