Skip to main content

Home/ The Apple Group/ Group items tagged binary

Rss Feed Group items tagged

Graham Perrin

XBinary: Extended Binary Format Support for Mac OS X - 0 views

  • Extended Binary Format Support
  • © Amit Singh
  • January 2009
  • ...51 more annotations...
  • —With the advent of x86-based Macintosh computers, Universal binaries, originally known as "fat" or multiple-architecture binaries, appeared in Mac OS X.
  • Universal Binaries
  • for one or more architectures
  • along with a header that describes each constituent binary.
  • a wrapper that contains Mach-O binaries
  • a "4-way fat" executable could consist of Mach-O executables for the i386 (32-bit Intel), x86_64 (64-bit Intel), ppc (32-bit PowerPC), and ppc64 (64-bit PowerPC) architectures
  • Mac OS X does not provide any kernel-level or user-level interfaces to extend binary format support.
  • we'll need to write special software
  • new kernel functionality
  • software will involve a kernel extension.
  • extend the kernel
  • and execute them through specified handler programs.
  • Let us call the new software that implements these features XBinary. binfmt_misc Those familiar with the Linux kernel will realize that functionality similar to what's been described here exists in Linux as the binfmt_misc kernel feature. XBinary is conceptually similar
  • XBinary also has some Mac OS X specific features.
  • download and install the XBinary package
  • a command-line tool (xbinary
  • a kernel extension (xbinary.kext)
  • research software at this point
  • choosing the best library from an extended fat library file.
  • for developers, researchers, and power users
  • take XBinary for a spin
  • XBinary: extended binary format support for Mac OS X Copyright (c) 2009 Amit Singh. All Rights Reserved. http://osxbook.com The XBinary software allows you to extend the Mac OS X kernel such that it can recognize arbitrary binary formats and execute them through specified handler programs. (Mac OS X natively supports executing only Mach-O binaries, Universal (fat) binaries, and interpreter scripts.) XBinary consists of a kernel extension (xbinary.kext) and this command-line tool, which lets you control the XBinary facility. This requires superuser privileges, so you should run this tool using sudo(8). The XBinary kext must be loaded for the facility to be available.
  • You can add and manipulate in-kernel entries that enable recognition of binary formats.
  • You can also specify flags that affect how a matched entry is processed. By default, the argument vector IS adjusted and setuid/setgid binaries are NOT allowed.
  • make experimentation involving new binary formats easy
  • Let us look at Java applications
  • then specify this wrapper script as the interpreter
  • and subsequently invoke the Java application launcher.
  • given a Java class file
  • a wrapper script
  • We don't even have to write such scripts
    • Graham Perrin
       
      :-)
  • a Universal binary containing, say, Tiger and Leopard versions
  • simplify code creation and maintenance.
  • Consider a 2-way fat binary containing i386 and x86_64 architectures.
  • operating system versions in addition to processor architectures.
    • Graham Perrin
       
      :-)
  • Now think of an "extended" fat binary mechanism that incorporates
  • our hypothetical extended fat binary contains eight "architectures"
  • the extended fat feature as implemented by XBinary is not a complete implementation
  • These examples assume that you are on an x86 (little-endian) machine.
  • XBinary requires Mac OS X 10.5.x (Leopard).
  • Executive Summary This document discusses XBinary, a new software that lets you add kernel-level support for executing files in arbitrary binary formats on Mac OS X.
  • Extending Executability
  • recognize arbitrary binary formats
  • using the xbinary tool
  • copious "help" output
  • Each entry must have as its name a unique identifier string up to 31 bytes in size. Additionally, a set of other arguments specify to the kernel how to recognize that binary format and which interpreter to invoke to handle it. XBinary can recognize a binary EITHER by matching magic bytes within the first page of the file OR by matching a file extension. OTHER_ARGS must be a valid combination of the following arguments (some are optional).
  • that will determine the startup class name
  • Bonus Feature: Extra Fat Binaries
  • Since XBinary is experimental, why not experiment with such a feature too?
  • XBinary wouldn't be able to help the dynamic linker
  • The XBinary software
1 - 1 of 1
Showing 20 items per page