     self.sectionIterator = si
     self.name = String(cString: LLVMGetSectionName(si))
     self.size = Int(LLVMGetSectionSize(si))
-    self.contents = String(cString: LLVMGetSectionContents(si))
+    self.contents = UnsafeBufferPointer<CChar>(start: LLVMGetSectionContents(si), count: self.size)
     self.address = Int(LLVMGetSectionAddress(si))
   }
 

  /// The size of the contents of the section.
  public let size: Int
  /// The raw contents of the section.
  public let contents: String
  /// The address of the section in the object file.
  public let address: Int


      case LLVMBinaryTypeMachO64L: self = .machO64L
      case LLVMBinaryTypeMachO64B: self = .machO64B
      case LLVMBinaryTypeWasm: self = .wasm
      default: fatalError("unknown binary type \(llvm)")
      }
    }
  }
