209 goto err;
210 }
211
212 if (*fname == '/') {
213 (void) strncpy(fp->file_pname, fname, sizeof (fp->file_pname));
214 } else {
215 size_t sz;
216
217 if (getcwd(fp->file_pname, sizeof (fp->file_pname) - 1) ==
218 NULL) {
219 *perr = G_STRANGE;
220 goto err;
221 }
222
223 sz = strlen(fp->file_pname);
224 (void) snprintf(&fp->file_pname[sz],
225 sizeof (fp->file_pname) - sz, "/%s", fname);
226 }
227
228 fp->file_fd = fd;
229 fp->file_lo->rl_lmident = LM_ID_BASE;
230 if ((fp->file_lname = strdup(fp->file_pname)) == NULL) {
231 *perr = G_STRANGE;
232 goto err;
233 }
234 fp->file_lbase = basename(fp->file_lname);
235
236 if ((P->execname = strdup(fp->file_pname)) == NULL) {
237 *perr = G_STRANGE;
238 goto err;
239 }
240
241 P->num_files++;
242 list_link(fp, &P->file_head);
243
244 if (gelf_getehdr(elf, &ehdr) == NULL) {
245 *perr = G_STRANGE;
246 goto err;
247 }
248
|
209 goto err;
210 }
211
212 if (*fname == '/') {
213 (void) strncpy(fp->file_pname, fname, sizeof (fp->file_pname));
214 } else {
215 size_t sz;
216
217 if (getcwd(fp->file_pname, sizeof (fp->file_pname) - 1) ==
218 NULL) {
219 *perr = G_STRANGE;
220 goto err;
221 }
222
223 sz = strlen(fp->file_pname);
224 (void) snprintf(&fp->file_pname[sz],
225 sizeof (fp->file_pname) - sz, "/%s", fname);
226 }
227
228 fp->file_fd = fd;
229 fp->file_dbgfile = -1;
230 fp->file_lo->rl_lmident = LM_ID_BASE;
231 if ((fp->file_lname = strdup(fp->file_pname)) == NULL) {
232 *perr = G_STRANGE;
233 goto err;
234 }
235 fp->file_lbase = basename(fp->file_lname);
236
237 if ((P->execname = strdup(fp->file_pname)) == NULL) {
238 *perr = G_STRANGE;
239 goto err;
240 }
241
242 P->num_files++;
243 list_link(fp, &P->file_head);
244
245 if (gelf_getehdr(elf, &ehdr) == NULL) {
246 *perr = G_STRANGE;
247 goto err;
248 }
249
|