anchor.diff:  
   (defun archive-header-read (stream)
     (let ((header (make-archive-header)))
  -  	(setf (archive-header-name header) (read-string stream 16))
  -  	(setf (archive-header-date header) (parse-integer (read-string stream 12)))
  -  	(setf (archive-header-uid header) (read-seq stream 6))
  -  	(setf (archive-header-gid header) (read-seq stream 6))
  -  	(setf (archive-header-mode header) (read-seq stream 8))
  -  	(setf (archive-header-size header) (parse-integer (read-string stream 10)))
  -  	(setf (archive-header-fmag header) (read-string stream 2)) 
  -  	; adjust size
  -  	(setf (archive-header-size header) (logand (+ (archive-header-size header) 1) (lognot 1)))
  -  	header))
  +    (setf (archive-header-name header) (read-string stream 16))
  +    (setf (archive-header-date header) (parse-integer (read-string stream 12)))
  +    (setf (archive-header-uid header) (read-seq stream 6))
  +    (setf (archive-header-gid header) (read-seq stream 6))
  +    (setf (archive-header-mode header) (read-seq stream 8))
  +    (setf (archive-header-size header) (parse-integer (read-string stream 10)))
  +    (setf (archive-header-fmag header) (read-string stream 2)) 
  +    (setf (archive-header-size header) (logand (+ (archive-header-size header) 1) (lognot 1))) header))
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
  
positive.code: 
  (defconstant +null+ (code-char 0))
  
  (defstruct elf-header
      ident
  	type
  	machine
  	version
  	entry
  	phoff
  	shoff
  	flags
  	ehsize
  	phentsize
  	phnum
  	shentsize
  	shnum
  	shstrndx)
  
  (defstruct elf-section 
    	name-string
    	name
  	type
  	flags
  	addr
  	offset
  	size
  	link
  	info
  	addralign
  	entsize
  	data)
  
  (defstruct symbol-table
    	name-string
  	name
  	value
  	size
  	info
  	other
  	shndx)
  
  
  (defstruct elf-file
    header
    sections
    symbol-table
    function-table
    text-offset
    data-offset
    rodata-offset
    bssdata-offset)
  
  ;
  ;
  ;
  ;
  
  
  (defun read-string (stream length)
  
negative.code:   (declare (optimize (speed 0) (safety 3) (debug 3)))
  
    (let ((elf-file (make-elf-file))
          (header (read-header stream)))
  
      (setf (elf-file-header elf-file) header)
      (file-pos-rel stream file-offset (elf-header-shoff header))
  
      ; read all sections
    
      (let ((sections (make-array (elf-header-shnum header) :element-type 'elf-section)))
        (loop for i from 0 below (elf-header-shnum header) do
          (setf (aref sections i) (read-section-header stream)))
  
        (setf (elf-file-sections elf-file) sections)
  
        ; resolve the names for the sections
    
        (let ((symtab-section-offset (elf-section-offset (aref sections (elf-header-shstrndx header)))))
          (loop for i from 0 below (elf-header-shnum header) do
            ; set file-position to where the string is
            (file-pos-rel stream file-offset (+ symtab-section-offset (elf-section-name (aref sections i))))
            (setf (elf-section-name-string (aref sections i)) (read-null-terminated-ascii stream))))
  
        ; Setup the symbols table
  
        (let ((symtab-section (find-section sections ".symtab")))
  
        (when symtab-section
          (setf (elf-file-symbol-table elf-file) (read-symtable stream file-offset
                                                 (elf-section-offset symtab-section) 
                                                 (elf-section-size symtab-section)  
                                                 (elf-section-entsize symtab-section)))
        ; resolve the names
    
          (let ((symtab-section-offset (elf-section-offset (aref sections (elf-section-link symtab-section))))
                (symbol-table (elf-file-symbol-table elf-file))
                (symbol-hash (make-hash-table)))
            (loop for i from 0 below (length symbol-table) do
              (file-pos-rel stream file-offset (+ symtab-section-offset (elf-symbol-table-name (aref symbol-table i))))
              (setf (elf-symbol-table-name-string (aref symbol-table i)) (read-null-terminated-ascii stream)))
  
            ; create a hash-table with function mappings
      
            (loop for i from 0 below (length symbol-table) do
              (when (eq (logand (symbol-table-info (aref symbol-table i)) #xf) 2)
              (setf (gethash (elf-symbol-table-name-string (aref symbol-table i)) symbol-hash) 
                             (elf-symbol-table-value (aref symbol-table i)))))
  
            (setf (elf-file-function-table elf-file) symbol-hash))
    
          ; read the data's to the sections that needs it
  
          (read-section-data stream file-offset sections ".text")
          (read-section-data stream file-offset sections ".data")
          (read-section-data stream file-offset sections ".rodata")))) elf-file)) 
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  (defun elf-file-read (filename)
    (with-open-file (stream filename :element-type '(unsigned-byte 8))
      (elf-read-stream 0 stream)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; Archiver Reader
  
  (defstruct archive-header name date uid gid mode size fmag)
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  