Lines Matching refs:ctx
46 text_end (AsmCtx_t *ctx __attribute__ ((unused)))
48 if (fclose (ctx->out.file) != 0)
59 binary_end (AsmCtx_t *ctx)
84 for (asmscn = ctx->section_list; asmscn != NULL; asmscn = asmscn->allnext)
87 Elf_Scn *scn = elf_getscn (ctx->out.elf, asmscn->data.main.scnndx);
133 if (ctx->nsymbol_tab > 0)
136 symscn_strent = ebl_strtabadd (ctx->section_strtab, ".symtab", 8);
137 strscn_strent = ebl_strtabadd (ctx->section_strtab, ".strtab", 8);
140 Elf_Scn *strscn = elf_newscn (ctx->out.elf);
150 ebl_strtabfinalize (ctx->symbol_strtab, strtabdata);
158 Elf_Scn *symscn = elf_newscn (ctx->out.elf);
169 data->d_size = gelf_fsize (ctx->out.elf, ELF_T_SYM,
170 ctx->nsymbol_tab + 1, EV_CURRENT);
186 int ptr_nonlocal = ctx->nsymbol_tab;
189 while ((sym = asm_symbol_tab_iterate (&ctx->symbol_tab, &runp)) != NULL)
223 xndxscn = elf_newscn (ctx->out.elf);
240 xndxscn_strent = ebl_strtabadd (ctx->section_strtab,
246 ctx->nsymbol_tab + 1,
259 assert ((size_t) ptr < ctx->nsymbol_tab + 1);
278 shdr->sh_entsize = gelf_fsize (ctx->out.elf, ELF_T_SYM, 1, EV_CURRENT);
279 shdr->sh_addralign = gelf_fsize (ctx->out.elf, ELF_T_ADDR, 1,
288 shstrscn = elf_newscn (ctx->out.elf);
299 shstrscn_strent = ebl_strtabadd (ctx->section_strtab, ".shstrtab", 10);
301 ebl_strtabfinalize (ctx->section_strtab, shstrtabdata);
311 if (ctx->groups != NULL)
313 AsmScnGrp_t *runp = ctx->groups->next;
375 while ((runp = runp->next) != ctx->groups->next);
382 Elf_Scn *scn = elf_getscn (ctx->out.elf, symscnndx);
393 scn = elf_getscn (ctx->out.elf, strscnndx);
405 scn = elf_getscn (ctx->out.elf, xndxscnndx);
417 for (asmscn = ctx->section_list; asmscn != NULL; asmscn = asmscn->allnext)
433 ehdr = gelf_getehdr (ctx->out.elf, &ehdr_mem);
441 Elf_Scn *scn = elf_getscn (ctx->out.elf, 0);
459 gelf_update_ehdr (ctx->out.elf, ehdr);
462 if (unlikely (elf_update (ctx->out.elf, ELF_C_WRITE_MMAP)) < 0)
477 AsmScnGrp_t *scngrp = ctx->groups;
481 while ((scngrp = scngrp->next) != ctx->groups);
484 if (unlikely (elf_end (ctx->out.elf)) != 0)
498 asm_end (ctx)
499 AsmCtx_t *ctx;
503 if (ctx == NULL)
507 result = unlikely (ctx->textp) ? text_end (ctx) : binary_end (ctx);
512 if (fchmod (ctx->fd, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH) != 0)
519 if (rename (ctx->tmp_fname, ctx->fname) != 0)
526 __libasm_finictx (ctx);
555 __libasm_finictx (ctx)
556 AsmCtx_t *ctx;
559 AsmScn_t *scn = ctx->section_list;
570 while ((sym = asm_symbol_tab_iterate (&ctx->symbol_tab, &runp)) != NULL)
572 asm_symbol_tab_free (&ctx->symbol_tab);
576 AsmScnGrp_t *scngrp = ctx->groups;
585 while (scngrp != ctx->groups);
588 if (unlikely (ctx->textp))
591 fclose (ctx->out.file);
598 (void) close (ctx->fd);
601 ebl_strtabfree (ctx
602 ebl_strtabfree (ctx->symbol_strtab);
606 rwlock_fini (ctx->lock);
609 free (ctx);