comparison lwlink/lwlink.c @ 8:fdc11ef4115b

Switched lwlink to lw_cmdline from argp and also brought in lw_alloc and lw_string to replace util.c
author lost@l-w.ca
date Sat, 22 Jan 2011 09:58:24 -0700
parents 2c24602be78f
children 127e5b1e01c0
comparison
equal deleted inserted replaced
7:917b608b8c66 8:fdc11ef4115b
27 #include <errno.h> 27 #include <errno.h>
28 #include <stdio.h> 28 #include <stdio.h>
29 #include <stdlib.h> 29 #include <stdlib.h>
30 #include <string.h> 30 #include <string.h>
31 31
32 #include <lw_alloc.h>
33 #include <lw_string.h>
34
32 #include "lwlink.h" 35 #include "lwlink.h"
33 #include "util.h"
34 36
35 int debug_level = 0; 37 int debug_level = 0;
36 int outformat = OUTPUT_DECB; 38 int outformat = OUTPUT_DECB;
37 char *outfile = NULL; 39 char *outfile = NULL;
38 char *scriptfile = NULL; 40 char *scriptfile = NULL;
49 char **scriptls = NULL; 51 char **scriptls = NULL;
50 52
51 void add_input_file(char *fn) 53 void add_input_file(char *fn)
52 { 54 {
53 inputfiles = lw_realloc(inputfiles, sizeof(fileinfo_t *) * (ninputfiles + 1)); 55 inputfiles = lw_realloc(inputfiles, sizeof(fileinfo_t *) * (ninputfiles + 1));
54 inputfiles[ninputfiles] = lw_malloc(sizeof(fileinfo_t)); 56 inputfiles[ninputfiles] = lw_alloc(sizeof(fileinfo_t));
55 memset(inputfiles[ninputfiles], 0, sizeof(fileinfo_t)); 57 memset(inputfiles[ninputfiles], 0, sizeof(fileinfo_t));
56 inputfiles[ninputfiles] -> forced = 1; 58 inputfiles[ninputfiles] -> forced = 1;
57 inputfiles[ninputfiles++] -> filename = lw_strdup(fn); 59 inputfiles[ninputfiles++] -> filename = lw_strdup(fn);
58 } 60 }
59 61
60 void add_input_library(char *libname) 62 void add_input_library(char *libname)
61 { 63 {
62 inputfiles = lw_realloc(inputfiles, sizeof(fileinfo_t *) * (ninputfiles + 1)); 64 inputfiles = lw_realloc(inputfiles, sizeof(fileinfo_t *) * (ninputfiles + 1));
63 inputfiles[ninputfiles] = lw_malloc(sizeof(fileinfo_t)); 65 inputfiles[ninputfiles] = lw_alloc(sizeof(fileinfo_t));
64 memset(inputfiles[ninputfiles], 0, sizeof(fileinfo_t)); 66 memset(inputfiles[ninputfiles], 0, sizeof(fileinfo_t));
65 inputfiles[ninputfiles] -> islib = 1; 67 inputfiles[ninputfiles] -> islib = 1;
66 inputfiles[ninputfiles] -> forced = 0; 68 inputfiles[ninputfiles] -> forced = 0;
67 inputfiles[ninputfiles++] -> filename = lw_strdup(libname); 69 inputfiles[ninputfiles++] -> filename = lw_strdup(libname);
68 } 70 }
93 l = base - sectspec; 95 l = base - sectspec;
94 *base = '\0'; 96 *base = '\0';
95 } 97 }
96 baseaddr = baseaddr & 0xffff; 98 baseaddr = baseaddr & 0xffff;
97 99
98 t = lw_malloc(l + 25); 100 t = lw_alloc(l + 25);
99 sprintf(t, "section %s load %04X", sectspec, baseaddr); 101 sprintf(t, "section %s load %04X", sectspec, baseaddr);
100 if (base) 102 if (base)
101 *base = '='; 103 *base = '=';
102 104
103 scriptls = lw_realloc(scriptls, sizeof(char *) * (nscriptls + 1)); 105 scriptls = lw_realloc(scriptls, sizeof(char *) * (nscriptls + 1));