mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
23916fffce
ld atm ends up calling the write() syscall on every char when displaying an error message. For example: $ echo 'main(){foo();}' | strace -f -ewrite gcc -x c -o /dev/null - ... [pid 13035] write(2, ":", 1) = 1 [pid 13035] write(2, " ", 1) = 1 [pid 13035] write(2, "I", 1) = 1 [pid 13035] write(2, "n", 1) = 1 [pid 13035] write(2, " ", 1) = 1 [pid 13035] write(2, "f", 1) = 1 [pid 13035] write(2, "u", 1) = 1 [pid 13035] write(2, "n", 1) = 1 [pid 13035] write(2, "c", 1) = 1 [pid 13035] write(2, "t", 1) = 1 [pid 13035] write(2, "i", 1) = 1 [pid 13035] write(2, "o", 1) = 1 [pid 13035] write(2, "n", 1) = 1 [pid 13035] write(2, " ", 1) = 1 [pid 13035] write(2, "`", 1) = 1 ... That's just to write ": In function `main':". A slight optimization in the vfinfo() func gives a much more reasonable syscall footprint: ... write(2, ": In function `", 15) = 15 ... Signed-off-by: Mike Frysinger <vapier@gentoo.org>
292 lines
9.9 KiB
Plaintext
292 lines
9.9 KiB
Plaintext
2012-04-02 Mike Frysinger <vapier@gentoo.org>
|
||
|
||
* ldmisc.c (vfinfo): Assign new local str to fmt. Delete
|
||
putc call. If str and fmt are different, call fwrite on
|
||
the difference.
|
||
|
||
2012-03-30 Nick Clifton <nickc@redhat.com>
|
||
|
||
* po/vi.po: Updated Vietnamese translation.
|
||
|
||
2012-03-27 Roland McGrath <mcgrathr@google.com>
|
||
|
||
* configure.in: Set want64 on a 64-bit host regardless of
|
||
--enable-targets=all.
|
||
* configure: Regenerated.
|
||
|
||
2012-03-26 Tristan Gingold <gingold@adacore.com>
|
||
|
||
* lexsup.c (parse_args): Add a missing '\n'.
|
||
|
||
2012-03-25 Alan Modra <amodra@gmail.com>
|
||
|
||
* ldemul.c (before_allocation_default): Revert last change.
|
||
ldlang.c (lang_add_section): Likewise.
|
||
(strip_excluded_output_sections): Don't strip output sections with
|
||
user input sections when emitrelocations, unless all are SEC_EXCLUDE.
|
||
|
||
2012-03-23 Alan Modra <amodra@gmail.com>
|
||
|
||
* ldemul.c (before_allocation_default): When emitrelocations,
|
||
don't strip sections..
|
||
* ldlang.c (lang_add_section): ..and don't set up map_head, map_tail.
|
||
|
||
2012-03-14 Kai Tietz <ktietz@redhat.com>
|
||
Pascal Obry <pascal@obry.net>
|
||
|
||
* pe-dll.c (found_sym): New static variable.
|
||
(undef_count): Likewise.
|
||
(key_value): New structure.
|
||
(undef_sort_cmp): Compare routine for qsort/bsearch.
|
||
(pe_find_cdecl_alias_match): Add new argument.
|
||
(pe_undef_alias_cdecl_match): Removed.
|
||
(pe_undef_count): New helper routine.
|
||
(pe_create_undef_table): Likewise.
|
||
(pe_process_import_defs): Use pe_create_undef_table and
|
||
new pe_undef_alias_cdecl_match function.
|
||
|
||
2012-03-14 Alan Modra <amodra@gmail.com>
|
||
|
||
PR ld/13839
|
||
* ldexp.c (fold_name): Ignore undefined symbols when assigning to
|
||
dot in mark phase.
|
||
(exp_fold_tree_1): Evaluate assignment to dot expressions even when
|
||
discarding result, for side effects. Fix typo in error message.
|
||
|
||
2012-03-08 Tristan Gingold <gingold@adacore.com>
|
||
|
||
* ldexp.c (exp_print_tree): Special case for SEGMENT_START.
|
||
(exp_print_token): Constify.
|
||
|
||
2012-03-08 Alan Modra <amodra@gmail.com>
|
||
|
||
PR ld/10340
|
||
* ldfile.c (is_sysrooted_pathname): Remove notsame param.
|
||
(ldfile_add_library_path): Don't set sysrooted flag.
|
||
(ldfile_open_file_search): Likewise, and don't copy them.
|
||
(try_open): Delete exten and code handling such. Add sysrooted
|
||
param and return whether path is in sysroot.
|
||
(ldfile_find_command_file): Delete extend param. Add sysrooted
|
||
param. Rename local var. Update try_open calls.
|
||
(ldfile_open_command_file_1): Pass sysrooted to lex_push_file.
|
||
* ldfile.h (search_dirs_type): Remove sysrooted field.
|
||
* ldlang.c (new_afile): Always set sysrooted from input_flags.
|
||
(load_symbols): Don't set input_flags.sysrooted.
|
||
* ldlang.h (struct lang_input_statement_flags): Revise sysrooted
|
||
comment.
|
||
* ldlex.h (lex_push_file): Update prototype.
|
||
* ldlex.l (sysrooted_stack): New array.
|
||
(EOF): Pop input_flags.sysrooted.
|
||
(lex_push_file): Add sysrooted param. Save and set
|
||
input_flags.sysrooted.
|
||
|
||
2012-03-06 Alan Modra <amodra@gmail.com>
|
||
|
||
* ldlang.h (struct lang_input_statement_flags): New, extract from..
|
||
(lang_input_statement_type): ..here. New field "flags".
|
||
(input_flags): Declare.
|
||
(missing_file): Delete.
|
||
* ldmain.h (whole_archive): Delete.
|
||
(add_DT_NEEDED_for_regular, add_DT_NEEDED_for_dynamic): Delete.
|
||
* ld.h (ld_config_type <dynamic_link>): Delete.
|
||
* ldmain.c (whole_archive): Delete.
|
||
(add_DT_NEEDED_for_regular, add_DT_NEEDED_for_dynamic): Delete.
|
||
* ldlang.c (missing_file, ldlang_sysrooted_script): Delete.
|
||
(input_flags): New variable. Replace all uses of config.dynamic_link,
|
||
missing_file, ldlang_sysrooted_script, whole_archive,
|
||
add_DT_NEEDED_for_regular and add_DT_NEEDED_for_dynamic with fields
|
||
from here.
|
||
* ldfile.c: Likewise.
|
||
* ldgram.y: Likewise.
|
||
* ldmain.c: Likewise.
|
||
* ldwrite.c: Likewise.
|
||
* lexsup.c: Likewise.
|
||
* plugin.c: Likewise.
|
||
* emultempl/aix.em: Likewise.
|
||
* emultempl/armelf.em: Likewise.
|
||
* emultempl/elf32.em: Likewise.
|
||
* emultempl/hppaelf.em: Likewise.
|
||
* emultempl/linux.em: Likewise.
|
||
* emultempl/pe.em: Likewise.
|
||
* emultempl/pep.em: Likewise.
|
||
* emultempl/ppc64elf.em: Likewise.
|
||
* emultempl/scoreelf.em: Likewise.
|
||
* emultempl/spuelf.em: Likewise.
|
||
* emultempl/sunos.em: Likewise.
|
||
* emultempl/vms.em: Likewise.
|
||
* ldlang.c (new_afile): Use memset to init zero fields.
|
||
(load_symbols): Simplify save and restore of flags around command
|
||
file processing.
|
||
* ldfile.c (is_sysrooted_pathname): Tidy.
|
||
|
||
2012-03-05 Hans-Peter Nilsson <hp@axis.com>
|
||
|
||
* configure.tgt (mips64*el-*-freebsd*, mips64*-*-freebsd*)
|
||
(mips*el-*-freebsd*, mips*-*-freebsd*): Correct triplets by
|
||
replacing trailing "-*" with "*".
|
||
|
||
2012-02-25 Walter Lee <walt@tilera.com>
|
||
|
||
* Makefile.am (ALL_EMULATION_SOURCES): Add eelf32tilegx_be.c.
|
||
(ALL_64_EMULATION_SOURCES): Add eelf64tilegx_be.c.
|
||
(eelf32tilegx_be.c): Add rule to build this file.
|
||
(eelf64tilegx_be.c): Ditto.
|
||
* Makefile.in: Regenerate.
|
||
* configure.tgt (tilegx-*-*): Support big endian.
|
||
(tilegxbe-*-*): New.
|
||
* emulparams/elf32tilegx.sh (OUTPUT_FORMAT): Rename.
|
||
(BIG_OUTPUT_FORMAT): Define.
|
||
(LITTLE_OUTPUT_FORMAT): Define.
|
||
* emulparams/elf32tilegx_be.sh: New.
|
||
* emulparams/elf64tilegx.sh (OUTPUT_FORMAT): Rename.
|
||
(BIG_OUTPUT_FORMAT): Define.
|
||
(LITTLE_OUTPUT_FORMAT): Define.
|
||
* emulparams/elf64tilegx_be.sh: New.
|
||
|
||
2012-02-24 Kai Tietz <ktietz@redhat.com>
|
||
|
||
PR binutils/13710
|
||
* deffilep.y (keyword_as_name): Disable LIBRARY
|
||
keyword.
|
||
|
||
2012-02-22 Alan Modra <amodra@gmail.com>
|
||
|
||
PR ld/13683
|
||
* ldlang.c (lang_process): Rerun lang_do_assignments before
|
||
starting garbage collection.
|
||
* ldexp.c (fold_name): Generate a reloc for defined symbols
|
||
found without an associated output section during the mark phase.
|
||
(exp_fold_tree_1): Continue processing an expression, even if we
|
||
are unable to fold it, if we are in the first two evaluation
|
||
phases.
|
||
* ldexp.h (enum lang_phase_type): Add descriptions of the phases.
|
||
|
||
2012-02-19 Kai Tietz <ktietz@redhat.com>
|
||
|
||
* deffilep.y (cmp_import_elem): Sort first by module name.
|
||
* pe-dll.c (process_def_file_and_drectve): Free strings
|
||
from removed export-element.
|
||
(add_bfd_to_link): Optimize loop on import-elements and lower
|
||
allocated memory.
|
||
(pe_implied_import_dll): Pass NULL instead of 0 for pointer
|
||
argument.
|
||
|
||
2012-02-18 Hans-Peter Nilsson <hp@axis.com>
|
||
|
||
* ldmisc.c (vfinfo <%S>): Use same type and avoid cast for
|
||
temporary variable node used for NULL argument.
|
||
|
||
2012-02-18 Alan Modra <amodra@gmail.com>
|
||
|
||
PR ld/13343
|
||
* ld.h (parsing_defsym): Delete.
|
||
* ldexp.c (exp_intop, exp_bigintop, exp_relop): Set type.filename.
|
||
(fold_binary, fold_name, exp_fold_tree_1, exp_get_vma, exp_get_fill,
|
||
exp_get_abs_int): Add tree arg for %S in error messages. Don't
|
||
fudge lineno.
|
||
(exp_binop, exp_unop, exp_nameop, exp_assop, exp_assert): Copy
|
||
type.filename from sub-tree.
|
||
(exp_trinop): Likewise, and use "cond" rather than "lhs".
|
||
* ldexp.h (node_type): Add filename field to struct.
|
||
* ldfile.c (ldfile_input_filename): Delete. Remove all refs.
|
||
* ldfile.h (ldfile_input_filename): Delete.
|
||
* ldgram.y (phdr_type, phdr_qualifiers, yyerror): Add NULL arg for
|
||
%S in error messages.
|
||
* ldemul.c (syslib_default, hll_default): Likewise.
|
||
* ldlang.c (lang_memory_region_lookup, lang_memory_region_alias,
|
||
lang_get_regions, lang_new_phdr): Likewise.
|
||
(lang_size_sections_1): Pass addr_tree for %S.
|
||
* ldlex.h (lex_redirect): Update prototype.
|
||
(ldlex_filename): Declare.
|
||
* ldlex.l (<EOF>): Don't set ldfile_input_filename.
|
||
(lex_redirect): Add fake_filename and count params. Push
|
||
fake_filename to file_name_stack and init lineno from count.
|
||
(ldlex_filename): New function.
|
||
(lex_warn_invalid): Use above.
|
||
* ldmain.c (main): Update lex_redirect call.
|
||
* ldmisc.c (vfinfo <%S>): Take file name and line number from
|
||
etree_type arg, or use current if arg is NULL.
|
||
* lexsup.c (parsing_defsym): Delete.
|
||
(parse_args <OPTION_DEFSYM>): Update lex_redirect call.
|
||
|
||
2012-02-13 Kai Tietz <ktietz@redhat.com>
|
||
|
||
* deffilep.y (find_export_in_list): Set is_indent for
|
||
first or last element, if identical.
|
||
(find_import_in_list): Likewise.
|
||
|
||
2012-02-11 Kai Tietz <ktietz@redhat.com>
|
||
|
||
* deffilep.y (%union): New type id_const.
|
||
(opt_name2): New rule.
|
||
(keyword_as_name): New rule.
|
||
(dot_name): Replaced by opt_name2 rule.
|
||
(opt_name): Adjust rule.
|
||
(opt_equal_name): Likewise.
|
||
|
||
2012-02-11 Pascal Obry <pascal@obry.net>
|
||
|
||
* pe-dll.c (auto_export): Use bsearch to speed up scan of exports
|
||
table.
|
||
(process_def_file_and_drectve): Maintain sorting of exports table
|
||
after stripping leading @ signs.
|
||
|
||
2012-02-09 Alan Modra <amodra@gmail.com>
|
||
|
||
* ldgram.y (input_section_spec_no_keep): Don't ignore sect_flags.
|
||
|
||
2012-01-31 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR ld/13616
|
||
* emulparams/elf32_x86_64.sh: Remove NOP.
|
||
* emulparams/elf_i386.sh: Likewise.
|
||
* emulparams/elf_i386_be.sh: Likewise.
|
||
* emulparams/elf_i386_ldso.sh: Likewise.
|
||
* emulparams/elf_i386_vxworks.sh: Likewise.
|
||
* emulparams/elf_k1om.sh: Likewise.
|
||
* emulparams/elf_l1om.sh: Likewise.
|
||
* emulparams/elf_x86_64.sh: Likewise.
|
||
|
||
* ldlang.c (zero_fill): Initialized to 0.
|
||
|
||
* ldwrite.c (build_link_order): Set data size to linker odrder
|
||
size when they are the same.
|
||
|
||
* scripttempl/elf.sc: Don't specify fill if NOP is undefined.
|
||
|
||
2012-01-17 Alan Modra <amodra@gmail.com>
|
||
|
||
* ldver.c (ldversion): Update copyright message year.
|
||
|
||
2012-01-15 Alan Modra <amodra@gmail.com>
|
||
|
||
PR ld/12758
|
||
* ldlang.c (lang_process): Don't reopen all files, just those
|
||
newly added by plugin.
|
||
|
||
2012-01-11 Alan Modra <amodra@gmail.com>
|
||
|
||
* emultempl/ppc64elf.em (PARSE_AND_LIST_PROLOGUE,
|
||
PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS,
|
||
PARSE_AND_LIST_ARGS_CASES): Handle --{no-,}plt-thread-safe and
|
||
--{no-,}plt-align.
|
||
(plt_thread_safe, plt_stub_align): New vars.
|
||
(gld${EMULATION_NAME}_after_allocation): Pass them to
|
||
ppc64_elf_size_stubs. Align stub sections according to plt_stub_align.
|
||
* ld.texinfo: Document new command line options, and an old
|
||
undocumented option.
|
||
|
||
2012-01-09 Roland McGrath <mcgrathr@google.com>
|
||
|
||
* configure.in: Use AM_ZLIB.
|
||
* configure: Regenerated.
|
||
|
||
For older changes see ChangeLog-2011
|
||
|
||
Local Variables:
|
||
mode: change-log
|
||
left-margin: 8
|
||
fill-column: 74
|
||
version-control: never
|
||
End:
|