package linksem

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

The gnu_ext_symbol_versioning defines constants, types and functions * relating to the GNU symbol versioning extensions (i.e. contents of * GNU_VERSYM sections). * * TODO: work out what is going on with symbol versioning. The specification * is completely opaque.

val gnu_ext_ver_def_none : Nat_big_num.num

No version

val gnu_ext_ver_def_current : Nat_big_num.num

No version

Current version

val gnu_ext_ver_flg_base : Nat_big_num.num

Version definition of file itself

val gnu_ext_ver_flg_weak : Nat_big_num.num

Version definition of file itself

Weak version identifier

val gnu_ext_ver_ndx_local : Nat_big_num.num

Symbol is local

val gnu_ext_ver_ndx_global : Nat_big_num.num

Symbol is local

Symbol is global

val gnu_ext_ver_ndx_loreserve : Nat_big_num.num

Symbol is global

Beginning of reserved entries

val gnu_ext_ver_ndx_eliminate : Nat_big_num.num

Beginning of reserved entries

Symbol is to be eliminated

val gnu_ext_ver_need_none : Nat_big_num.num

No version

val gnu_ext_ver_need_current : Nat_big_num.num

No version

Current version

type gnu_ext_elf32_symbol_version_table = Uint32_wrapper.uint32 list

gnu_ext_elf32_symbol_version_table is an array (linked list, here) of * elf32_half entries. It has as many entries as the dynamic symbol table * (DT_SYMTAB). I.e., each symbol table entry has its associated entry in the * symbol version table.

type gnu_ext_elf64_symbol_version_table = Uint32_wrapper.uint32 list
type gnu_ext_elf32_verdef = {
  1. gnu_ext_elf32_vd_version : Uint32_wrapper.uint32;
  2. gnu_ext_elf32_vd_flags : Uint32_wrapper.uint32;
  3. gnu_ext_elf32_vd_ndx : Uint32_wrapper.uint32;
  4. gnu_ext_elf32_vd_cnt : Uint32_wrapper.uint32;
  5. gnu_ext_elf32_vd_hash : Uint32_wrapper.uint32;
  6. gnu_ext_elf32_vd_aux : Uint32_wrapper.uint32;
  7. gnu_ext_elf32_vd_next : Uint32_wrapper.uint32;
}
type gnu_ext_elf64_verdef = {
  1. gnu_ext_elf64_vd_version : Uint32_wrapper.uint32;
  2. gnu_ext_elf64_vd_flags : Uint32_wrapper.uint32;
  3. gnu_ext_elf64_vd_ndx : Uint32_wrapper.uint32;
  4. gnu_ext_elf64_vd_cnt : Uint32_wrapper.uint32;
  5. gnu_ext_elf64_vd_hash : Uint32_wrapper.uint32;
  6. gnu_ext_elf64_vd_aux : Uint32_wrapper.uint32;
  7. gnu_ext_elf64_vd_next : Uint32_wrapper.uint32;
}
val string_of_gnu_ext_elf32_verdef : gnu_ext_elf32_verdef -> string
val string_of_gnu_ext_elf64_verdef : gnu_ext_elf64_verdef -> string
val gnu_ext_elf32_verdef_size : Nat_big_num.num
val gnu_ext_elf64_verdef_size : Nat_big_num.num
type gnu_ext_elf32_veraux = {
  1. gnu_ext_elf32_vda_name : Uint32_wrapper.uint32;
  2. gnu_ext_elf32_vda_next : Uint32_wrapper.uint32;
}
type gnu_ext_elf64_veraux = {
  1. gnu_ext_elf64_vda_name : Uint32_wrapper.uint32;
  2. gnu_ext_elf64_vda_next : Uint32_wrapper.uint32;
}
val gnu_ext_elf32_veraux_size : Nat_big_num.num
val gnu_ext_elf64_veraux_size : Nat_big_num.num
type gnu_ext_elf32_verneed = {
  1. gnu_ext_elf32_vn_version : Uint32_wrapper.uint32;
  2. gnu_ext_elf32_vn_cnt : Uint32_wrapper.uint32;
  3. gnu_ext_elf32_vn_file : Uint32_wrapper.uint32;
  4. gnu_ext_elf32_vn_aux : Uint32_wrapper.uint32;
  5. gnu_ext_elf32_vn_next : Uint32_wrapper.uint32;
}
type gnu_ext_elf64_verneed = {
  1. gnu_ext_elf64_vn_version : Uint32_wrapper.uint32;
  2. gnu_ext_elf64_vn_cnt : Uint32_wrapper.uint32;
  3. gnu_ext_elf64_vn_file : Uint32_wrapper.uint32;
  4. gnu_ext_elf64_vn_aux : Uint32_wrapper.uint32;
  5. gnu_ext_elf64_vn_next : Uint32_wrapper.uint32;
}
val gnu_ext_elf32_verneed_size : Nat_big_num.num
val gnu_ext_elf64_verneed_size : Nat_big_num.num
type gnu_ext_elf32_vernaux = {
  1. gnu_ext_elf32_vna_hash : Uint32_wrapper.uint32;
  2. gnu_ext_elf32_vna_flags : Uint32_wrapper.uint32;
  3. gnu_ext_elf32_vna_other : Uint32_wrapper.uint32;
  4. gnu_ext_elf32_vna_name : Uint32_wrapper.uint32;
  5. gnu_ext_elf32_vna_next : Uint32_wrapper.uint32;
}
type gnu_ext_elf64_vernaux = {
  1. gnu_ext_elf64_vna_hash : Uint32_wrapper.uint32;
  2. gnu_ext_elf64_vna_flags : Uint32_wrapper.uint32;
  3. gnu_ext_elf64_vna_other : Uint32_wrapper.uint32;
  4. gnu_ext_elf64_vna_name : Uint32_wrapper.uint32;
  5. gnu_ext_elf64_vna_next : Uint32_wrapper.uint32;
}
val string_of_gnu_ext_elf32_vernaux : gnu_ext_elf32_vernaux -> string
val string_of_gnu_ext_elf64_vernaux : gnu_ext_elf64_vernaux -> string
val gnu_ext_elf32_vernaux_size : Nat_big_num.num
val gnu_ext_elf64_vernaux_size : Nat_big_num.num
type gnu_ext_interpreted_verdef = {
  1. gnu_ext_interpreted_verdef_version : Nat_big_num.num;
  2. gnu_ext_interpreted_verdef_flags : Nat_big_num.num;
  3. gnu_ext_interpreted_verdef_ndx : Nat_big_num.num;
  4. gnu_ext_interpreted_verdef_hash : Nat_big_num.num;
  5. gnu_ext_interpreted_verdef_name : string;
  6. gnu_ext_interpreted_verdef_parents : string list;
}
type gnu_ext_interpreted_verneed = {
  1. gnu_ext_interpreted_verneed_version : Nat_big_num.num;
  2. gnu_ext_interpreted_verneed_file : string;
}
type gnu_ext_interpreted_vernaux = {
  1. gnu_ext_interpreted_vernaux_hash : Nat_big_num.num;
  2. gnu_ext_interpreted_vernaux_flags : Nat_big_num.num;
  3. gnu_ext_interpreted_vernaux_other : Nat_big_num.num;
  4. gnu_ext_interpreted_vernaux_name : string;
  5. gnu_ext_interpreted_vernaux_verneed : gnu_ext_interpreted_verneed;
}
type gnu_ext_interpreted_versym_entry = {
  1. gnu_ext_interpreted_versym_entry_value : Nat_big_num.num;
  2. gnu_ext_interpreted_versym_entry_hidden : bool;
}
type gnu_ext_interpreted_versym_table = {
  1. gnu_ext_interpreted_versym_table_entries : gnu_ext_interpreted_versym_entry list;
  2. gnu_ext_interpreted_versym_table_verdef : gnu_ext_interpreted_verdef list;
  3. gnu_ext_interpreted_versym_table_verneed : gnu_ext_interpreted_vernaux list;
}
val gnu_ext_verdef_base_unspecified : Nat_big_num.num

The unspecified name for the base definition.

The name given later to the baseline of symbols once the library started using symbol versioning.

val gnu_ext_verdef_base_versioned : Nat_big_num.num

The name given later to the baseline of symbols once the library started using symbol versioning.

val obtain_gnu_ext_elf64_interpreted_versym_table_symbols : Endianness.endianness -> Elf_file.elf64_file -> (Nat_big_num.num * (Nat_big_num.num, 'a) Elf_dynamic.dyn_value) list -> gnu_ext_interpreted_versym_entry list option Error.error
val obtain_gnu_ext_elf64_interpreted_verdef_table : Endianness.endianness -> Elf_file.elf64_file -> (Nat_big_num.num * (Nat_big_num.num, 'a) Elf_dynamic.dyn_value) list -> gnu_ext_interpreted_verdef list option Error.error
val obtain_gnu_ext_elf64_interpreted_verneed_table : Endianness.endianness -> Elf_file.elf64_file -> (Nat_big_num.num * (Nat_big_num.num, 'a) Elf_dynamic.dyn_value) list -> gnu_ext_interpreted_vernaux list option Error.error
val obtain_gnu_ext_elf64_interpreted_versym_table : Elf_file.elf64_file -> (Nat_big_num.num * (Nat_big_num.num, 'a) Elf_dynamic.dyn_value) list -> gnu_ext_interpreted_versym_table option Error.error
type gnu_ext_interpreted_verdef_lookup =
  1. | GnuExtInterpretedVerdefLocal
  2. | GnuExtInterpretedVerdefGlobal
  3. | GnuExtInterpretedVerdefVersion of gnu_ext_interpreted_verdef
  4. | GnuExtInterpretedVerdefHidden of gnu_ext_interpreted_verdef
OCaml

Innovation. Community. Security.