elf_update(3elf) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

elf_update(3elf)

elf_update(3ELF)             ELF Library Functions            elf_update(3ELF)

NAME
       elf_update - update an ELF descriptor

SYNOPSIS
       cc [ flag ... ] file ... -lelf [ library ... ]
       #include <libelf.h>

       off_t elf_update(Elf *elf, Elf_Cmd cmd);

DESCRIPTION
       The elf_update() function causes the library to examine the information
       associated  with  an ELF descriptor, elf, and to recalculate the struc‐
       tural data needed to generate the file's image.


       The cmd argument can have the following values:

       ELF_C_NULL     This value tells  elf_update()  to  recalculate  various
                      values, updating only the ELF descriptor's memory struc‐
                      tures.  Any  modified  structures  are  flagged with the
                      ELF_F_DIRTY bit. A program thus can  update  the  struc‐
                      tural information and then reexamine them without chang‐
                      ing the file associated with the ELF descriptor. Because
                      this  does  not  change the file, the ELF descriptor may
                      allow reading, writing, or both reading and writing (see
                      elf_begin(3ELF)).


       ELF_C_WRITE    If cmd  has  this  value,  elf_update()  duplicates  its
                      ELF_C_NULL  actions and also writes any "dirty" informa‐
                      tion associated with the ELF  descriptor  to  the  file.
                      That  is,  when  a program has used elf_getdata(3ELF) or
                      the elf_flagdata(3ELF) facilities to supply new (or  up‐
                      date  existing) information for an ELF descriptor, those
                      data will be examined, coordinated, translated if neces‐
                      sary (see  elf32_xlatetof(3ELF)),  and  written  to  the
                      file.  When  portions  of  the  file  are  written,  any
                      ELF_F_DIRTY bits are reset, indicating  those  items  no
                      longer  need  to  be  written to the file (see elf_flag‐
                      data(3ELF)). The sections' data are written in the order
                      of their section header entries, and the section  header
                      table  is  written  to the end of the file. When the ELF
                      descriptor was created with elf_begin(),  it  must  have
                      allowed  writing the file. That is, the elf_begin() com‐
                      mand must have been either ELF_C_RDWR or ELF_C_WRITE.



       If elf_update() succeeds, it returns the total size of the  file  image
       (not  the memory image), in bytes. Otherwise an error occurred, and the
       function returns −1.


       When updating the internal structures, elf_update() sets  some  members
       itself.  Members  listed below are the application's responsibility and
       retain the values given by the program.


       The following table shows ELF Header members:

       tab(); lw(1.65i) lw(3.85i) MemberNotes

       e_ident[EI_DATA]Library controls other e_ident values e_type  e_machine
       e_version  e_entry  e_phoffOnly  when ELF_F_LAYOUT asserted e_shoffOnly
       when ELF_F_LAYOUT asserted e_flags e_shstrndx



       The following table shows the Program Header members:

       tab(); lw(1.65i) lw(3.85i) MemberNotes

       p_typeThe  application  controls  all  p_offsetprogram  header  entries
       p_vaddr p_paddr p_filesz p_memsz p_flags p_align



       The following table shows the Section Header members:

       tab(); lw(1.65i) lw(3.85i) MemberNotes

       sh_name  sh_type  sh_flags  sh_addr sh_offsetOnly when ELF_F_LAYOUT as‐
       serted sh_sizeOnly when ELF_F_LAYOUT asserted  sh_link  sh_info  sh_ad‐
       dralignOnly when ELF_F_LAYOUT asserted sh_entsize



       The following table shows the Data Descriptor members:

       tab(); lw(1.65i) lw(3.85i) MemberNotes

       d_buf d_type d_size d_offOnly when ELF_F_LAYOUT asserted d_align d_ver‐
       sion



       Note  that  the  program  is responsible for two particularly important
       members (among others) in the ELF header. The e_version member controls
       the version of data structures written to the file. If the  version  is
       EV_NONE,   the   library   uses   its   own   internal   version.   The
       e_ident[EI_DATA] entry controls the data encoding used in the file.  As
       a special case, the value may be ELFDATANONE to request the native data
       encoding  for the host machine. An error occurs in this case if the na‐
       tive encoding doesn't match a file encoding known by the library.


       Further note that the program is responsible for the sh_entsize section
       header member. Although the library sets it  for  sections  with  known
       types, it cannot reliably know the correct value for all sections. Con‐
       sequently,  the library relies on the program to provide the values for
       unknown section types. If the entry size is unknown or not  applicable,
       the value should be set to 0.


       When  deciding  how  to  build  the output file, elf_update() obeys the
       alignments of individual data buffers to create output sections. A sec‐
       tion's most strictly aligned data buffer controls the section's  align‐
       ment.  The  library also inserts padding between buffers, as necessary,
       to ensure the proper alignment of each buffer.

ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityCommitted _ MT-LevelMT-Safe


SEE ALSO
       libelf(3LIB),   elf32_xlatetof(3ELF),   elf(3ELF),   elf32_fsize(3ELF),
       elf32_getehdr(3ELF),  elf32_getshdr(3ELF),  elf_begin(3ELF),  elf_flag‐
       data(3ELF), elf_getdata(3ELF), attributes(7)

NOTES
       As  mentioned  above, the ELF_C_WRITE command translates data as neces‐
       sary, before writing them to the file. This translation is  not  always
       transparent  to  the  application  program.  If  a program has obtained
       pointers to data associated with a file (for example,  see  elf32_gete‐
       hdr(3ELF)  and  elf_getdata(3ELF)),  the program should reestablish the
       pointers after calling elf_update().

Oracle Solaris 11.4               11 Jul 2001                 elf_update(3ELF)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3