"Fossies" - the Fresh Open Source Software Archive

Member "fasm/examples/elfexe/dynamic/import32.inc" (21 Feb 2022, 1287 Bytes) of package /linux/misc/fasm-1.73.30.tgz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) fasm source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 
    2 include 'elf.inc'
    3 
    4 macro interpreter [library]
    5 {
    6  segment interpreter readable
    7  db library,0
    8 }
    9 
   10 macro needed [library]
   11 {
   12  local str
   13  match needed,needed@dynamic \{ define needed@dynamic needed,str:library \}
   14  match ,needed@dynamic \{ define needed@dynamic str:library \}
   15 }
   16 define needed@dynamic
   17 
   18 macro import [name]
   19 {
   20  common
   21   local strtab,strsz,symtab,rel,relsz,hash
   22   segment dynamic readable
   23   match needed,needed@dynamic
   24   \{ irp item,needed \\{ match str:library,item \\\{ dd DT_NEEDED,str-strtab \\\} \\} \}
   25   dd DT_STRTAB,strtab
   26   dd DT_STRSZ,strsz
   27   dd DT_SYMTAB,symtab
   28   dd DT_SYMENT,sizeof.Elf32_Sym
   29   dd DT_REL,rel
   30   dd DT_RELSZ,relsz
   31   dd DT_RELENT,sizeof.Elf32_Rel
   32   dd DT_HASH,hash
   33   dd DT_NULL,0
   34   segment readable writeable
   35   symtab: Elf32_Sym
   36  forward
   37   local fstr
   38   Elf32_Sym fstr-strtab,0,0,STB_GLOBAL,STT_FUNC,0,0
   39  common
   40   rel:
   41   local counter
   42   counter = 1
   43  forward
   44    Elf32_Rel name,counter,R_386_32
   45    counter = counter+1
   46  common
   47   relsz = $-rel
   48   hash:
   49   dd 1,counter
   50   dd 0
   51   repeat counter
   52    if %=counter
   53     dd 0
   54    else
   55     dd %
   56    end if
   57   end repeat
   58   strtab db 0
   59  forward
   60   fstr db `name,0
   61  common
   62   match needed,needed@dynamic
   63   \{ irp item,needed \\{ match str:library,item \\\{ str db library,0 \\\} \\} \}
   64   strsz = $-strtab
   65  forward
   66   name dd 0
   67 }