]>
git.saurik.com Git - apple/ld64.git/blob - src/ld/parsers/lto_file.h
332215d5d706b852e41a9a29bfdb3581e8e9215c
   1 /* -*- mode: C++; c-basic-offset: 4; tab-width: 4 -*- 
   3  * Copyright (c) 2009-2010 Apple Inc. All rights reserved. 
   5  * @APPLE_LICENSE_HEADER_START@ 
   7  * This file contains Original Code and/or Modifications of Original Code 
   8  * as defined in and that are subject to the Apple Public Source License 
   9  * Version 2.0 (the 'License'). You may not use this file except in 
  10  * compliance with the License. Please obtain a copy of the License at 
  11  * http://www.opensource.apple.com/apsl/ and read it before using this 
  14  * The Original Code and all software distributed under the License are 
  15  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  16  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  17  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  18  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  19  * Please see the License for the specific language governing rights and 
  20  * limitations under the License. 
  22  * @APPLE_LICENSE_HEADER_END@ 
  25 #ifndef __LTO_FILE_H__ 
  26 #define __LTO_FILE_H__ 
  32 extern const char* version(); 
  34 extern bool libLTOisLoaded(); 
  36 extern const char* archName(const uint8_t* fileContent
, uint64_t fileLength
); 
  38 extern bool isObjectFile(const uint8_t* fileContent
, uint64_t fileLength
, cpu_type_t architecture
, cpu_subtype_t subarch
); 
  40 extern ld::relocatable::File
* parse(const uint8_t* fileContent
, uint64_t fileLength
,  
  41                                                                         const char* path
, time_t modTime
, ld::File::Ordinal ordinal
, 
  42                                                                         cpu_type_t architecture
, cpu_subtype_t subarch
, bool logAllFiles
, 
  43                                                                         bool verboseOptimizationHints
); 
  45 struct OptimizeOptions 
{ 
  46         const char*                                                     outputFilePath
; 
  47         const char*                                                     tmpObjectFilePath
; 
  48         bool                                                            preserveAllGlobals
; 
  53         bool                                                            staticExecutable
;  
  56         bool                                                            linkerDeadStripping
;  
  57         bool                                                            needsUnwindInfoSection
;  
  59         bool                                                            verboseOptimizationHints
; 
  62         const std::vector
<const char*>*         llvmOptions
; 
  63         const std::vector
<const char*>*         initialUndefines
; 
  66 extern bool     optimize(   const std::vector
<const ld::Atom
*>& allAtoms
, 
  68                                                 const OptimizeOptions
&                          options
, 
  69                                                 ld::File::AtomHandler
&                          handler
, 
  70                                                 std::vector
<const ld::Atom
*>&           newAtoms
,  
  71                                                 std::vector
<const char*>&                       additionalUndefines
); 
  76 #endif // __LTO_FILE_H__