* fileread.cc (File_read::find_view): Add byteshift and vshifted

parameters.  Update for new key type to views_.  Change all
	callers.
	(File_read::read): Adjust for byteshift in returned view.
	(File_read::add_view): New function, broken out of
	find_and_make_view.
	(File_read::make_view): New function, broken out of
	find_and_make_view.
	(File_read::find_or_make_view): Add offset and aligned
	parameters.  Rewrite accordingly.  Change all callers.
	(File_read::get_view): Add offset and aligned parameters.  Adjust
	for byteshift in return value.
	(File_read::get_lasting_view): Likewise.
	* fileread.h (class File_read): Update declarations.
	(class File_read::View): Add byteshift_ field.  Add byteshift to
	constructor.  Add byteshift method.
	* archive.h (Archive::clear_uncached_views): New function.
	(Archive::get_view): Add aligned parameter.  Change all callers.
	* object.h (Object::get_view): Add aligned parameter.  Change all
	callers.
	(Object::get_lasting_view): Likewise.

	* fileread.cc (File_read::release): Don't call clear_views if
	there are multiple objects.
	* fileread.h (File_read::clear_uncached_views): New function.
	* archive.cc (Add_archive_symbols::run): Call clear_uncached_views
	on the archive.
This commit is contained in:
Ian Lance Taylor
2008-04-02 20:58:21 +00:00
parent 5caffa0e9b
commit 39d0cb0e83
10 changed files with 290 additions and 113 deletions

View File

@@ -132,7 +132,7 @@ Binary_to_elf::sized_convert(const Task* task)
}
section_size_type filesize = convert_to_section_size_type(f.filesize());
const unsigned char* fileview = f.get_view(0, filesize, false);
const unsigned char* fileview = f.get_view(0, 0, filesize, false, false);
unsigned int align;
if (size == 32)