aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/5l/obj.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/5l/obj.c')
-rw-r--r--src/cmd/5l/obj.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/cmd/5l/obj.c b/src/cmd/5l/obj.c
index 805d39544e..8fd39c2919 100644
--- a/src/cmd/5l/obj.c
+++ b/src/cmd/5l/obj.c
@@ -71,6 +71,12 @@ isobjfile(char *f)
return v;
}
+static char*
+linkername[] =
+{
+ "runtime·softfloat",
+};
+
void
usage(void)
{
@@ -81,7 +87,7 @@ usage(void)
void
main(int argc, char *argv[])
{
- int c;
+ int c, i;
Binit(&bso, 1, OWRITE);
cout = -1;
@@ -257,6 +263,10 @@ main(int argc, char *argv[])
if(!debug['l'])
loadlib();
+ // mark some functions that are only referenced after linker code editing
+ // TODO(kaib): this doesn't work, the prog can't be found in runtime
+ for(i=0; i<nelem(linkername); i++)
+ mark(lookup(linkername[i], 0));
deadcode();
firstp = firstp->link;
@@ -294,6 +304,7 @@ main(int argc, char *argv[])
follow();
if(firstp == P)
goto out;
+ softfloat();
noops();
span();
asmb();