// interface, and it would be nice to have something more automatic.
void
clear_uncached_views()
- { this->clear_views(false); }
+ { this->clear_views(CLEAR_VIEWS_ARCHIVE); }
// A struct used to do a multiple read.
struct Read_multiple_entry
get_mtime();
private:
+ // Control for what views to clear.
+ enum Clear_views_mode
+ {
+ // Clear uncached views not used by an archive.
+ CLEAR_VIEWS_NORMAL,
+ // Clear all uncached views (including in an archive).
+ CLEAR_VIEWS_ARCHIVE,
+ // Clear all views (i.e., we're destroying the file).
+ CLEAR_VIEWS_ALL
+ };
+
// This class may not be copied.
File_read(const File_read&);
File_read& operator=(const File_read&);
accessed() const
{ return this->accessed_; }
+ // Returns TRUE if this view contains permanent data -- e.g., data that
+ // was supplied by the owner of the File object.
+ bool
+ is_permanent_view() const
+ { return this->data_ownership_ == DATA_NOT_OWNED; }
+
private:
View(const View&);
View& operator=(const View&);
// Clear the file views.
void
- clear_views(bool);
+ clear_views(Clear_views_mode);
// The size of a file page for buffering data.
static const off_t page_size = 8192;
class Input_file
{
public:
+ enum Format
+ {
+ FORMAT_NONE,
+ FORMAT_ELF,
+ FORMAT_BINARY
+ };
+
Input_file(const Input_file_argument* input_argument)
: input_argument_(input_argument), found_name_(), file_(),
- is_in_sysroot_(false)
+ is_in_sysroot_(false), format_(FORMAT_NONE)
{ }
// Create an input file with the contents already provided. This is
bool
just_symbols() const;
+ // Return the format of the unconverted input file.
+ Format
+ format() const
+ { return this->format_; }
+
+ // Try to find a file in the extra search dirs. Returns true on success.
+ static bool
+ try_extra_search_path(int* pindex,
+ const Input_file_argument* input_argument,
+ std::string filename, std::string* found_name,
+ std::string* namep);
+
+ // Find the actual file.
+ static bool
+ find_file(const Dirsearch& dirpath, int* pindex,
+ const Input_file_argument* input_argument,
+ bool* is_in_sysroot,
+ std::string* found_name, std::string* namep);
+
private:
Input_file(const Input_file&);
Input_file& operator=(const Input_file&);
File_read file_;
// Whether we found the file in a directory in the system root.
bool is_in_sysroot_;
+ // Format of unconverted input file.
+ Format format_;
};
} // end namespace gold