1
0
mirror of https://github.com/golang/go synced 2024-11-05 15:06:09 -07:00

Added automatic detection of system libraries to 5l.

R=rsc
APPROVED=rsc
DELTA=83  (73 added, 3 deleted, 7 changed)
OCL=29276
CL=29382
This commit is contained in:
Kai Backman 2009-05-26 12:14:55 -07:00
parent 7943556970
commit 3c7a1ef208

View File

@ -30,6 +30,7 @@
#define EXTERN
#include "l.h"
#include "compat.h"
#include <ar.h>
#ifndef DEFAULT
@ -144,6 +145,10 @@ main(int argc, char *argv[])
diag("usage: 5l [-options] objects");
errorexit();
}
mywhatsys(); // get goroot, goarch, goos
if(strcmp(goarch, thestring) != 0)
print("goarch is not known: %s\n", goarch);
if(!debug['9'] && !debug['U'] && !debug['B'])
debug[DEFAULT] = 1;
if(HEADTYPE == -1) {
@ -259,19 +264,20 @@ main(int argc, char *argv[])
firstp = prg();
lastp = firstp;
if(INITENTRY == 0) {
INITENTRY = "_main";
if(debug['p'])
INITENTRY = "_mainp";
if(!debug['l'])
lookup(INITENTRY, 0)->type = SXREF;
} else
lookup(INITENTRY, 0)->type = SXREF;
if(INITENTRY == nil) {
INITENTRY = mal(strlen(goarch)+strlen(goos)+10);
sprint(INITENTRY, "_rt0_%s_%s", goarch, goos);
}
lookup(INITENTRY, 0)->type = SXREF;
while(*argv)
objfile(*argv++);
if(!debug['l'])
if(!debug['l']) {
loadlib();
a = mal(strlen(goroot)+strlen(goarch)+strlen(goos)+20);
sprint(a, "%s/lib/lib_%s_%s.a", goroot, goarch, goos);
objfile(a);
}
firstp = firstp->link;
if(firstp == P)
goto out;