Module minidump_writer::mach

source ·
Expand description

Contains various helpers to improve and expand on the bindings provided by mach2

Modules§

  • This module corresponds to mach/task.defs.
  • This module roughly corresponds to mach/task_info.h.

Structs§

  • Dynamically linked shared libraries are identified by two things. The pathname (the name of the library as found for execution), and the compatibility version number. The pathname must match and the compatibility number in the user of the library must be greater than or equal to the library being used. The time stamp is used to record the time a library was built and copied into user so it can be use to determined if the library used at runtime is exactly the same as used to built the program.
  • A dynamically linked shared library (filetype == MH_DYLIB in the mach header) contains a dylib_command (cmd == LC_ID_DYLIB) to identify the library. An object that uses a dynamically linked shared library also contains a dylib_command (cmd == LC_LOAD_DYLIB, LC_LOAD_WEAK_DYLIB, or LC_REEXPORT_DYLIB) for each library it uses.
  • Every load command is a variable sized struct depending on its type, but they all include the fields in this struct at the beginning
  • A block of load commands for a particular image
  • The header at the beginning of every (valid) Mach image
  • The 64-bit segment load command indicates that a part of this file is to be mapped into a 64-bit task’s address space. If the 64-bit segment has sections then section_64 structures directly follow the 64-bit segment command and their size is reflected in cmdsize.
  • The uuid load command contains a single 128-bit unique random number that identifies an object produced by the static link editor.

Enums§

Constants§

Traits§

  • Minimal trait that just pairs a structure that can be filled out by mach2::task::task_info with the “flavor” that tells it the info we actually want to retrieve
  • Minimal trait that just pairs a structure that can be filled out by thread_info with the “flavor” that tells it the info we actually want to retrieve

Functions§

  • Retrieves an i32 sysctl by name and casts it to the specified integer type. Returns the default value if retrieval fails or the value is out of bounds of the specified integer type.
  • From <usr/include/mach/mach_traps.h>, this retrieves the normal PID for the specified task as the syscalls from BSD use PIDs, not mach ports.
  • Retrieves an integer sysctl by name. Returns the default value if retrieval fails.
  • Retrieves a string sysctl by name. Returns an empty string if the retrieval fails or the string can’t be converted to utf-8.
  • Fomr <user/include/mach/thread_act.h>, this retrieves thread info for the for the specified thread.

Type Aliases§