2007-10-09  Jakub Jelinek  <jakub@redhat.com>

	* src/cxx.c (remove_redundant_cxx_conflicts): Allow .sdata
	section as well.

	* src/prelink.h (struct prelink_conflict): Add next2 field.
	(struct prelink_conflicts): Add hash2 field.
	* src/get.c (prelink_record_relocations): Clear next2 fields.
	* src/prelink.c (free_info): Also free hash2 table.
	* src/cxx.c (remove_redundant_cxx_conflicts): Populate hash2
	if not populated yet, use it to speed up pltref checking.

	* src/prelink.h (struct prelink_conflicts): New type.
	(struct prelink_info): Change type of conflicts and curconflicts
	fields to struct prelink_conflicts *.
	* src/get.c (conflict_hash_init): New function.
	(prelink_record_relocations): Adjust initialization of conflicts
	array.  If conflict linked lists has more than 15 entries, use
	hash table with chains.
	* src/prelink.c (free_info): Handle freeing conflict list using a hash
	table.
	* src/fptr.c (opd_init): Only walk corresponding hash chain if
	conflict list is using a hash table.
	* src/conflict.c (prelink_conflict): Likewise.
	(prelink_build_conflicts): Handle conflict list using a hash table.
	* src/cxx.c (remove_redundant_cxx_conflicts): Likewise.  Only walk
	corresponding hash chain if conflict list is using a hash table.

	* src/doit.c (find_ents): Clear e->u.tmp.
	(clear_ent_marks, find_unlisted_dependency): Remove.
	(prelink_ent): More efficient non-recursive check for
	unlisted dependencies.

	* src/cxx.c (find_cxx_sym): If fcs->lastndx != -1, search first
	among symbols around it.

2007-10-08  Jakub Jelinek  <jakub@redhat.com>

	* src/space.c (find_readonly_space): Disallow section insertion in
	between adjacent SHT_NOTE sections.  When creating new PT_LOAD,
	handle multiple consecutive SHT_NOTE sections with just one PT_NOTE
	segment for them.
	* testsuite/Makefile.am (TESTS): Add shuffle9.sh.
	* testsuite/Makefile.in: Regenerated.
	* testsuite/shuffle9.sh: New test.
	* testsuite/shuffle9.c: New.

	* testsuite/shuffle2.c: Add .previous at the end of __asm.
	* testsuite/reloc5.c (main): Likewise.

	* testsuite/tls3.sh: If libs aren't built with -fpic,
	disable the test under SELinux in enforcing mode.

	* src/cxx.c: Include alloca.h.
	(specials): Moved out of remove_redundant_cxx_conflicts to toplevel.
	Remove section fields.
	(find_cxx_sym_valsize, find_cxx_sym_cache): New structs.
	(struct find_cxx_sym): Add cache and lastndx fields.
	(cachecmp, create_cache): New functions.
	(find_cxx_sym): Add cache argument.  If cache[n] is NULL, call
	create_cache.  Do a binary search in cache[n]->vals array instead
	of always reading the whole symbol table.
	(remove_redundant_cxx_conflicts): Adjust find_cxx_sym caller.
	Check if secname is ".data" or ".data.rel.ro" instead of comparing
	it against specials[k].secname.  Use binary search in binsymcache
	when doing check_pltref checks.
	* testsuite/Makefile.am (TESTS): Add cxx2.sh.
	* testsuite/Makefile.in: Regenerated.
	* testsuite/cxx1.sh: Check that some conflicts are optimized out
	by C++ optimizations.
	* testsuite/cxx2.sh: New test.
	* testsuite/cxx2.C: New.

2007-10-04  Jakub Jelinek  <jakub@redhat.com>

	* src/prelink.h (read_config): New prototype.
	(gather_config, blacklist_from_config): Remove argument.
	* src/gather.c (struct config_line): New type.
	(config_lines, config_end): New variables.
	(read_config): New function.
	(gather_config, blacklist_from_config): Walk config_lines
	chain instead of reading the config file.
	* src/verify.c (prelink_verify): Call read_config.  Don't
	pass any argument to gather_config.
	* src/main.c (main): Likewise.  Also for blacklist_from_config.
	* testsuite/quick2.sh: Use new -c etc/prelink.conf.d/*.conf
	feature in prelink.conf and multiple config snippets.

2007-06-27  Jakub Jelinek  <jakub@redhat.com>

	* testsuite/reloc2.sh: If libs aren't built with -fpic,
	disable the test under SELinux in enforcing mode.

2007-03-02  Sandra Loosemore  <sandra@codesourcery.com>

	* doc/prelink.8: Spelling and grammar fixes.

2006-12-01  Jakub Jelinek  <jakub@redhat.com>

	* src/verify.c (prelink_verify): Unlink ent->filename in case of
	failures between closing the unprelinked dso and unlinking
	ent->filename.

2006-10-27  Jakub Jelinek  <jakub@redhat.com>

	* src/prelink.h (READWRITEPROTOSIZE): Undef after use.

2006-10-24  Richard Sandiford  <richard@codesourcery.com>

	* testsuite/tls3.sh: Use -fpic for MIPS too.
	* testsuite/reloc2.sh: Likewise.

	* testsuite/reloc4.sh: Use -mxgot when compiling for MIPS targets.
	* testsuite/reloc5.c (main): Make the printed inline asm globalize
	testzero.

	* testsuite/shuffle2.c (testzero): Globalize asm definition.

	* src/Makefile.am (arch_SOURCES): Add arch-mips.c
	* src/Makefile.in: Regenerate.
	* src/arch-mips.c: New file.

	* src/prelink.h (DT_MIPS_RLD_VERSION): Define.
	(DT_MIPS_TIME_STAMP): Likewise.
	(DT_MIPS_ICHECKSUM): Likewise.
	(DT_MIPS_IVERSION): Likewise.
	(DT_MIPS_FLAGS): Likewise.
	(DT_MIPS_BASE_ADDRESS): Likewise.
	(DT_MIPS_CONFLICT): Likewise.
	(DT_MIPS_LIBLIST): Likewise.
	(DT_MIPS_LOCAL_GOTNO): Likewise.
	(DT_MIPS_CONFLICTNO): Likewise.
	(DT_MIPS_LIBLISTNO): Likewise.
	(DT_MIPS_SYMTABNO): Likewise.
	(DT_MIPS_UNREFEXTNO): Likewise.
	(DT_MIPS_GOTSYM): Likewise.
	(DT_MIPS_HIPAGENO): Likewise.
	(DT_MIPS_RLD_MAP): Likewise.
	(R_MIPS_TLS_DTPMOD): Likewise.
	(R_MIPS_TLS_DTPREL): Likewise.
	(R_MIPS_TLS_TPREL): Likewise.
	(R_MIPS_GLOB_DAT): Likewise.
	(DSO): Add info_DT_MIPS_LOCAL_GOTNO, info_DT_MIPS_GOTSYM,
	and info_DT_MIPS_SYMTABNO.

	* src/dso.c (read_dynamic): Initialize the new DSO fields.
	(adjust_symbol_p): Handle stub values on MIPS.
	* src/prelink.c (prelink_prepare): Handle SHT_DYNAMIC and
	SHT_MIPS_REGINFO on MIPS.
	* src/space.c (find_readonly_space): Don't place the new section
	in the PT_PHDR segment.

	* src/prelink.h (data_iterator): New structure.
	(init_data_iterator): Declare.
	(get_data_from_iterator): Likewise.
	(get_sym_from_iterator): Likewise.
	* src/data.c (init_data_iterator): New function.
	(get_data_from_iterator): Likewise.
	(get_sym_from_iterator): Likewise.

	* src/prelink.h (READWRITEPROTOSIZE): New macro.  Instantiate
	READWRITEPROTO for big and little endian.  Add prototypes for
	native-endian functions (buf_read_uneNN, read_uneNN, buf_write_neNN
	and write_neNN).  Replace uses of READWRITEPROTO with uses of
	this macro.
	* src/data.c (BUFREADUNE, READUNE, WRITENE, BUFWRITENE): New macros.
	(READWRITESIZE): New macro.  Instantiate READWRITE for big and
	little endian.  Instantiate BUFREADUNE, READUNE, WRITENE
	and BUFWRITENE.  Replace uses of READWRITE with uses of this macro.
	* src/arch-sh.c (read_une32, write_ne32, buf_write_ne32): Delete.

	* src/prelink.h (PLArch): Add an arch_prelink_conflict callback.
	* src/conflict.c (prelink_build_conflicts): If defined, call it
	for each dependency.

	* src/prelink.h (PLArch): Make the arch_prelink callback take
	a "struct prelink_info *" argument, not a "DSO *" argument.
	* src/prelink.c (prelink): Adjust call accordingly.
	* src/arch-alpha.c (alpha_arch_prelink): Adjust definition accordingly.
	* src/arch-arm.c (arm_arch_prelink): Likewise.
	* src/arch-cris.c (cris_arch_prelink): Likewise.
	* src/arch-i386.c (i386_arch_prelink): Likewise.
	* src/arch-ia64.c (ia64_arch_prelink): Likewise.
	* src/arch-ppc.c (ppc_arch_prelink): Likewise.
	* src/arch-s390.c (s390_arch_prelink): Likewise
	* src/arch-s390x.c (s390x_arch_prelink): Likewise
	* src/arch-sh.c (sh_arch_prelink): Likewise.
	* src/arch-sparc64.c (sparc64_arch_prelink): Likewise.
	* src/arch-sparc.c (sparc_arch_prelink): Likewise
	* src/arch-x86_64.c (x86_64_arch_prelink): Likewise.

	* src/prelink.h (PLArch): Add an arch_adjust callback.
	* src/dso.c (adjust_dso): Use it, if defined.

	* src/prelink.h (adjust_symbol_p): Declare.
	* src/dso.c (adjust_symbol_p): New function, extracted from...
	(adjust_symtab): ...here.

2006-10-27  Jakub Jelinek  <jakub@redhat.com>

	* src/dwarf2.c (adjust_dwarf2_ranges): Fix adjusting if end of range
	is at the end of some section and there is padding before the
	following one.

2006-07-28  Alexandre Oliva  <aoliva@redhat.com>

	* src/cache.c (deps_cmp): Avoid segfault if both a and b are NULL.

2001-05-24  Jakub Jelinek  <jakub@redhat.com>

	* The beginning.
