Home | History | Annotate | Download | only in libasm

Lines Matching refs:ctx

34 text_end (AsmCtx_t *ctx)
42 binary_end (AsmCtx_t *ctx)
67 for (asmscn = ctx->section_list; asmscn != NULL; asmscn = asmscn->allnext)
70 Elf_Scn *scn = elf_getscn (ctx->out.elf, asmscn->data.main.scnndx);
115 if (ctx->nsymbol_tab > 0)
127 symscn_strent = ebl_strtabadd (ctx->section_strtab, ".symtab", 8);
128 strscn_strent = ebl_strtabadd (ctx->section_strtab, ".strtab", 8);
131 strscn = elf_newscn (ctx->out.elf);
139 ebl_strtabfinalize (ctx->symbol_strtab, strtabdata);
147 symscn = elf_newscn (ctx->out.elf);
156 data->d_size = gelf_fsize (ctx->out.elf, ELF_T_SYM,
157 ctx->nsymbol_tab + 1, EV_CURRENT);
172 ptr_nonlocal = ctx->nsymbol_tab;
173 while ((sym = asm_symbol_tab_iterate (&ctx->symbol_tab, &runp)) != NULL)
211 xndxscn = elf_newscn (ctx->out.elf);
227 xndxscn_strent = ebl_strtabadd (ctx->section_strtab,
233 ctx->nsymbol_tab + 1,
246 assert ((size_t) ptr < ctx->nsymbol_tab + 1);
265 shdr->sh_entsize = gelf_fsize (ctx->out.elf, ELF_T_SYM, 1, EV_CURRENT);
266 shdr->sh_addralign = gelf_fsize (ctx->out.elf, ELF_T_ADDR, 1,
275 shstrscn = elf_newscn (ctx->out.elf);
284 shstrscn_strent = ebl_strtabadd (ctx->section_strtab, ".shstrtab", 10);
286 ebl_strtabfinalize (ctx->section_strtab, shstrtabdata);
296 if (ctx->groups != NULL)
298 AsmScnGrp_t *runp = ctx->groups->next;
362 while ((runp = runp->next) != ctx->groups->next);
369 Elf_Scn *scn = elf_getscn (ctx->out.elf, symscnndx);
380 scn = elf_getscn (ctx->out.elf, strscnndx);
392 scn = elf_getscn (ctx->out.elf, xndxscnndx);
404 for (asmscn = ctx->section_list; asmscn != NULL; asmscn = asmscn->allnext)
420 ehdr = gelf_getehdr (ctx->out.elf, &ehdr_mem);
428 Elf_Scn *scn = elf_getscn (ctx->out.elf, 0);
446 gelf_update_ehdr (ctx->out.elf, ehdr);
449 if (unlikely (elf_update (ctx->out.elf, ELF_C_WRITE_MMAP)) < 0)
464 AsmScnGrp_t *scngrp = ctx->groups;
468 while ((scngrp = scngrp->next) != ctx->groups);
471 if (unlikely (elf_end (ctx->out.elf)) != 0)
485 asm_end (ctx)
486 AsmCtx_t *ctx;
490 if (ctx == NULL)
494 result = unlikely (ctx->textp) ? text_end (ctx) : binary_end (ctx);
499 if (fchmod (ctx->fd, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH) != 0)
506 if (rename (ctx->tmp_fname, ctx->fname) != 0)
513 __libasm_finictx (ctx);
542 __libasm_finictx (ctx)
543 AsmCtx_t *ctx;
546 AsmScn_t *scn = ctx->section_list;
557 while ((sym = asm_symbol_tab_iterate (&ctx->symbol_tab, &runp)) != NULL)
559 asm_symbol_tab_free (&ctx->symbol_tab);
563 AsmScnGrp_t *scngrp = ctx->groups;
572 while (scngrp != ctx->groups);
575 if (unlikely (ctx->textp))
578 fclose (ctx->out.file);
585 (void) close (ctx->fd);
588 ebl_strtabfree (ctx->section_strtab);
589 ebl_strtabfree (ctx->symbol_strtab);
593 rwlock_fini (ctx->lock);
596 free (ctx);