mirror of
https://github.com/python/cpython.git
synced 2025-11-25 21:11:09 +00:00
Adding the BeOS port. More checkins to follow.
This commit is contained in:
parent
3f7b6fcea0
commit
d8eb2119b5
22 changed files with 3749 additions and 0 deletions
126
BeOS/ar-1.1/docs/dumpo.py
Normal file
126
BeOS/ar-1.1/docs/dumpo.py
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
#! /bin/env python
|
||||
""" Dump data about a Metrowerks object file.
|
||||
|
||||
Based on reverse-engineering the library file format, since the docs are
|
||||
wrong.
|
||||
|
||||
Copyright (C) 1997 Chris Herborth (chrish@qnx.com)
|
||||
"""
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Standard modules
|
||||
import sys, getopt, string, time
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Extra goodies
|
||||
from dumpar import mk_long, str2hex, print_offset, get_string
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
def mk_short( str ):
|
||||
""" convert a 2-byte string into a number
|
||||
|
||||
Assumes big-endian!
|
||||
"""
|
||||
if len( str ) < 2:
|
||||
raise ValueError, "str must be 2 bytes long"
|
||||
|
||||
num = ord( str[1] )
|
||||
num = num + ord( str[0] ) * 0x100
|
||||
|
||||
return num
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
def usage():
|
||||
""" Display a usage message and exit.
|
||||
"""
|
||||
print "dumpo [-v] object1 [object2 ... objectn]"
|
||||
print
|
||||
print "Attempt to display some useful information about the contents"
|
||||
print "of the given Metrowerks object file(s)."
|
||||
print
|
||||
print "-v Be verbose (displays offsets along with the data)"
|
||||
raise SystemExit
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
def dump_o( file, verbose ):
|
||||
""" dump information about a Metrowerks object file
|
||||
|
||||
Note that there is more info there, 6 more quads before the file name.
|
||||
"""
|
||||
offset = 0
|
||||
|
||||
print "Dumping object:", file
|
||||
|
||||
# Attempt to read the data.
|
||||
try:
|
||||
data = open( file ).read()
|
||||
except IOError, retval:
|
||||
print "*** Unable to open file %s: %s" % ( file, retval[1] )
|
||||
return
|
||||
|
||||
# Check the magic number.
|
||||
if verbose:
|
||||
print_offset( offset )
|
||||
print "Magic:",
|
||||
magic = data[offset:offset + 8]
|
||||
print "'%s'" % ( magic )
|
||||
if magic != "MWOBPPC ":
|
||||
print "*** Invalid magic number!"
|
||||
return
|
||||
|
||||
offset = offset + 8
|
||||
|
||||
# version
|
||||
if verbose:
|
||||
print_offset( offset )
|
||||
print "version:", mk_long( data[offset:offset + 4] )
|
||||
offset = offset + 4
|
||||
|
||||
# flags
|
||||
if verbose:
|
||||
print_offset( offset )
|
||||
print "flags:", str2hex( data[offset:offset + 4] )
|
||||
offset = offset + 4
|
||||
|
||||
# code size
|
||||
if verbose:
|
||||
print_offset( offset )
|
||||
print "code size:", mk_long( data[offset:offset + 4] )
|
||||
offset = offset + 4
|
||||
|
||||
# data size
|
||||
if verbose:
|
||||
print_offset( offset )
|
||||
print "data size:", mk_long( data[offset:offset + 4] )
|
||||
offset = offset + 4
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
def main():
|
||||
""" mainline
|
||||
"""
|
||||
|
||||
# Set up some defaults
|
||||
be_verbose = 0
|
||||
|
||||
# First, check the command-line arguments
|
||||
try:
|
||||
opt, args = getopt.getopt( sys.argv[1:], "vh?" )
|
||||
except getopt.error:
|
||||
print "*** Error parsing command-line options!"
|
||||
usage()
|
||||
|
||||
for o in opt:
|
||||
if o[0] == "-h" or o[0] == "-?":
|
||||
usage()
|
||||
elif o[0] == "-v":
|
||||
be_verbose = 1
|
||||
else:
|
||||
print "*** Unknown command-line option!"
|
||||
usage()
|
||||
|
||||
# Now we can attempt to dump info about the arguments.
|
||||
for obj in args:
|
||||
dump_o( obj, be_verbose )
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue