• R/O
  • HTTP
  • SSH
  • HTTPS

List of commits

標籤
無標籤

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

GNU Binutils with patches for OS216


users/hjl/pr18599
RSS
修訂. 時間 作者
f0b7391 users/hjl/pr18599 2015-06-28 13:27:43 H.J. Lu

Update linker tests

2e1523f 2015-06-28 13:27:43 H.J. Lu

Update binitils tests

a73eee0 2015-06-28 13:27:42 H.J. Lu

Update gas tests

22152c9 2015-06-28 13:27:35 H.J. Lu

Use .strtab section for section name strings

For section name strings, use .shstrtab section if there are no
symbols, otherwise use .strtab section.

216cb58 2015-06-28 08:43:43 H.J. Lu

Update ia64 gas tests

* gas/ia64/psn.d: Updated.
* gas/ia64/xdata-ilp32.d: Likewise.

a2a55a4 2015-06-28 08:25:34 H.J. Lu

Update xtensa linker tests

* ld-xtensa/tlsbin.rd: Updated.
* ld-xtensa/tlspic.rd: Likewise.

98090c0 2015-06-27 09:00:07 GDB Administrator

Automatic date update in version.in

ee93cd5 2015-06-27 02:27:45 Keith Seitz

PR 16253 revisited

Last year a patch was submitted/approved/commited to eliminate
symbol_matches_domain which was causing this problem. It was later reverted
because it introduced a (severe) performance regression.

Recap:

(gdb) list
1 enum e {A,B,C} e;
2 int main (void) { return 0; }
3
(gdb) p e
Attempt to use a type name as an expression

The parser attempts to find a symbol named "e" of VAR_DOMAIN.
This gets passed down through lookup_symbol and (eventually) into
block_lookup_symbol_primary, which iterates over the block's dictionary
of symbols:

for (sym = dict_iter_name_first (block->dict, name, &dict_iter);
sym != NULL;
sym = dict_iter_name_next (name, &dict_iter))
{
if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
SYMBOL_DOMAIN (sym), domain))
return sym;
}

The problem here is that we have a symbol named "e" in both STRUCT_DOMAIN
and VAR_DOMAIN, and for languages like C++, Java, and Ada, where a tag name
may be used as an implicit typedef of the type, symbol_matches_domain ignores
the difference between VAR_DOMAIN and STRUCT_DOMAIN. As it happens, the
STRUCT_DOMAIN symbol is found first, considered a match, and that symbol is
returned to the parser, eliciting the (now dreaded) error message.

Since this bug exists specifically because we have both STRUCT and VAR_DOMAIN
symbols in a given block/CU, this patch rather simply/naively changes
block_lookup_symbol_primary so that it continues to search for an exact
domain match on the symbol if symbol_matches_domain returns a symbol
which does not exactly match the requested domain.

This "fixes" the immediate problem, but admittedly might uncover other,
related bugs. [Paranoia?] However, it causes no regressions (functional
or performance) in the test suite. A similar change has been made
to block_lookup_symbol for other cases in which this bug might appear.

The tests from the previous submission have been resurrected and updated.
However since we can still be given a matching symbol with a different domain
than requested, we cannot say that a symbol "was not found." The error
messages today will still be the (dreaded) "Attempt to use a type name..."

ChangeLog

PR 16253
* block.c (block_lookup_symbol): For non-function blocks,
continue to search for a symbol with an exact domain match
Otherwise, return any previously found "best domain" symbol.
(block_lookup_symbol_primary): Likewise.

testsuite/ChangeLog

PR 16253
* gdb.cp/var-tag-2.cc: New file.
* gdb.cp/var-tag-3.cc: New file.
* gdb.cp/var-tag-4.cc: New file.
* gdb.cp/var-tag.cc: New file.
* gdb.cp/var-tag.exp: New file.

fc637f0 2015-06-27 00:05:56 Patrick Palka

Add option to remove duplicate command history entries

This patch implements the new option "history remove-duplicates", which
controls the removal of duplicate history entries ("off" by default).

The motivation for this option is to be able to reduce the prevalence of
basic commands such as "up" and "down" in the history file. These
common commands crowd out more unique commands in the history file (when
the history file has a fixed size), and they make navigation of the
history file via ^P, ^N and ^R more inconvenient.

The option takes an integer denoting the number of history entries to
look back at for a history entry that is a duplicate of the latest one.
"history remove-duplicates 1" is equivalent to bash's ignoredups option,
and "history remove-duplicates unlimited" is equivalent to bash's
erasedups option.

[ I decided to go with this integer approach instead of a tri-state enum
because it's slightly more flexible and seemingly more intuitive than
leave/erase/ignore. ]

gdb/ChangeLog:

* NEWS: Mention the new option "history remove-duplicates".
* top.c (history_remove_duplicates): New static variable.
(show_history_remove_duplicates): New static function.
(gdb_add_history): Conditionally remove duplicate history
entries.
(init_main): Add "history remove-duplicates" option.

gdb/doc/ChangeLog:

* gdb.texinfo (Command History): Document the new option
"history remove-duplicates".

gdb/testsuite/ChangeLog:

* gdb.base/history-duplicates.exp: New test.

2e52ae6 2015-06-26 23:11:28 Patrick Palka

Add tab completion for TUI's "focus" command

The implementation is pretty straightforward, with the only caveat being
that the "src", "cmd", "next" and "prev" entries get delibrately added
to the completion list even when the TUI has not yet been initialized
(i.e. has never been enabled during the session), since invoking the
"focus" command with these arguments already works when the TUI has not
yet been initialized.

gdb/ChangeLog:

* tui/tui-win.c (focus_completer): New static function.
(_initialize_tui_win): Set the completion function of the
"focus" command to focus_completer.

gdb/testsuite/ChangeLog:

* gdb.base/completion.exp: Test the completion of the "focus"
command.

6e22494 2015-06-26 22:11:14 Jan Kratochvil

Do not skip prologue for asm (.S) files

GDB tries to skip prologue for .S files according to .debug_line but it then
places the breakpoint to a location where it is never hit.

This is because #defines in .S files cause prologue skipping which is
completely inappropriate, for s390x:

glibc/sysdeps/unix/syscall-template.S
78:/* This is a "normal" system call stub: if there is an error,
79: it returns -1 and sets errno. */
80:
81:T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
82: ret

00000000000f4210 T __select
Line Number Statements:
Extended opcode 2: set Address to 0xf41c8
Advance Line by 80 to 81
Copy
Advance PC by 102 to 0xf422e
Special opcode 6: advance Address by 0 to 0xf422e and Line by 1 to 82
Special opcode 34: advance Address by 2 to 0xf4230 and Line by 1 to 83
Advance PC by 38 to 0xf4256
Extended opcode 1: End of Sequence
Compilation Unit @ offset 0x28b3e0:
<0><28b3eb>: Abbrev Number: 1 (DW_TAG_compile_unit)
<28b3ec> DW_AT_stmt_list : 0x7b439
<28b3f0> DW_AT_low_pc : 0xf41c8
<28b3f8> DW_AT_high_pc : 0xf4256
<28b400> DW_AT_name : ../sysdeps/unix/syscall-template.S
<28b423> DW_AT_comp_dir : /usr/src/debug////////glibc-2.17-c758a686/misc
<28b452> DW_AT_producer : GNU AS 2.23.52.0.1
<28b465> DW_AT_language : 32769 (MIPS assembler)

without debuginfo or with debuginfo and the fix - correct address:
(gdb) b select
Breakpoint 1 at 0xf4210

It is also where .dynsym+.symtab point to:
00000000000f4210 T __select
00000000000f4210 W select

with debuginfo, without the fix:
(gdb) b select
Breakpoint 1 at 0xf41c8: file ../sysdeps/unix/syscall-template.S, line 81.

One part is to behave for asm files similar way like for 'locations_valid':
/* Symtab has been compiled with both optimizations and debug info so that
GDB may stop skipping prologues as variables locations are valid already
at function entry points. */
unsigned int locations_valid : 1;

The other part is to extend the 'locations_valid'-like functionality more.

Both minsym_found and find_function_start_sal need to be patched, otherwise
their addresses do not match and GDB regresses on ppc64:

gdb/ChangeLog
2015-06-26 Jan Kratochvil <jan.kratochvil@redhat.com>

* linespec.c (minsym_found): Reset sal.PC for COMPUNIT_LOCATIONS_VALID
and language_asm..
* symtab.c (find_function_start_sal): Likewise.

gdb/testsuite/ChangeLog
2015-06-26 Jan Kratochvil <jan.kratochvil@redhat.com>

* gdb.arch/amd64-prologue-skip.S: New file.
* gdb.arch/amd64-prologue-skip.exp: New file.

c742574 2015-06-26 21:41:04 H.J. Lu

Compile-in IAMCU linker scripts

* emulparams/elf_iamcu.sh (COMPILE_IN): New.

a5499fa 2015-06-26 19:53:33 Matthew Fortune

Add support for DT_MIPS_RLD_MAP_REL.

This tag makes it possible to access the debug map when debugging position
independent executables.

bfd/

* elfxx-mips.c (_bfd_mips_elf_create_dynamic_sections): Use executable
instead of !shared to indicate an application vs shared library.
(_bfd_mips_elf_size_dynamic_sections): Likewise.
(_bfd_mips_elf_finish_dynamic_sections): Handle DT_MIPS_RLD_MAP_REL.
(_bfd_mips_elf_get_target_dtag): Likewise.

binutils/

* readelf.c (get_mips_dynamic_type): Handle DT_MIPS_RLD_MAP_REL.

include/

* elf/mips.h (DT_MIPS_RLD_MAP_REL): New macro.

ld/testsuite/

* ld-mips-elf/pic-and-nonpic-3b.ad: Adjust for extra dynamic tag.
* ld-mips-elf/pic-and-nonpic-4b.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-5b.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-6-n32.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-6-n64.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-6-o32.ad: Likewise.
* ld-mips-elf/tlsdyn-o32-1.d: Likewise.
* ld-mips-elf/tlsdyn-o32-1.got: Likewise.
* ld-mips-elf/tlsdyn-o32-2.d: Likewise.
* ld-mips-elf/tlsdyn-o32-2.got: Likewise.
* ld-mips-elf/tlsdyn-o32-3.d: Likewise.
* ld-mips-elf/tlsdyn-o32-3.got: Likewise.
* ld-mips-elf/tlsdyn-o32.d: Likewise.
* ld-mips-elf/tlsdyn-o32.got: Likewise.
* ld-mips-elf/pie-n32.d: New file.
* ld-mips-elf/pie-n64.d: Likewise.
* ld-mips-elf/pie-o32.d: Likewise.
* ld-mips-elf/pie.s: Likewise.
* ld-mips-elf/mips-elf.exp: Add new tests.

920d644 2015-06-26 09:00:07 GDB Administrator

Automatic date update in version.in

3f30707 2015-06-26 06:20:15 DJ Delorie

Fix REL handling for MSP430

* elf32-msp430.c (msp430_final_link_relocate): Fix comments. Fix
REL loads to match RELA stores.

946748d 2015-06-26 05:04:07 H.J. Lu

Don't set sh_size for .shstrtab twice

_bfd_elf_assign_file_positions_for_non_load will set the sh_size
field for .shstrtab section. There is need to initialize it in
_bfd_elf_compute_section_file_positions.

* elf.c (_bfd_elf_compute_section_file_positions): Don't
initialize sh_size for .shstrtab here.

bf7b9cd 2015-06-26 02:33:14 Simon Marchi

py-prettyprint.exp: Add is_address_zero_readable check

gdb/testsuite/ChangeLog:

* gdb.python/py-prettyprint.exp (run_lang_tests): Add
is_address_zero_readable check.

06e78fc 2015-06-26 02:14:13 H.J. Lu

Run ld-elf/strtab only on linux/gnu targets

Since not all ELF targets support -shared, we limit ld-elf/strtab to
linux and gnu targets.

* ld-elf/strtab.d: Only run on *-*-linux* and *-*-gnu* targets.

4a677ba 2015-06-26 02:07:53 H.J. Lu

Update .strtab section sizes in mmix tests

Since commit ef10c3ace00674e8c3599c3bf95f06c87d68898b may reduce .strtab
section size, we need to adjust expected .strtab section sizes in mmix
tests.

gas/testsuite/

* gas/mmix/loc-3.d: Updated.
* gas/mmix/loc-5.d: Likewise.

ld/testsuite/

* ld-mmix/bspec1.d: Updated.
* ld-mmix/bspec2.d: Likewise.
* ld-mmix/undef-3.d: Likewise.

ef10c3a 2015-06-26 00:16:14 H.J. Lu

Use strtab with GC and suffix merging for .strtab

This patch uses ELF strtab with GC and suffix merging support to create
ELF .strtab section. There is some small memory overhead to use ELF
strtab:

==14928== HEAP SUMMARY:
==14928== in use at exit: 3,276,318 bytes in 679 blocks
==14928== total heap usage: 1,544 allocs, 865 frees, 15,259,146 bytes allocated

vs.

==14936== HEAP SUMMARY:
==14936== in use at exit: 3,276,318 bytes in 679 blocks
==14936== total heap usage: 1,532 allocs, 853 frees, 15,026,402 bytes allocated

when running:

./ld-new -m elf_x86_64 -o tmpdir/ld-partial.o -r ldgram.o ldlex-wrapper.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o plugin.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o eelf_x86_64.o eelf32_x86_64.o eelf_i386.o eelf_iamcu.o ei386linux.o eelf_l1om.o eelf_k1om.o ldbuildid.o

The results are

[32] .strtab STRTAB 0+ 3beff8 00407a 00 0 0 1

vs

[32] .strtab STRTAB 0+ 3beff8 0041d8 00 0 0 1

It reduces the .strtab size by 350 bytes, about 2%

Saving on libc.so from glibc is much more since libc.so has many alias
symbols with the same suffix. For x32 glibc,

[82] .strtab STRTAB 0+ 81b348 0159e7 00 0 0 1

vs

[82] .strtab STRTAB 0+ 81b8bc 019e72 00 0 0 1

It reduces the .strtab size by 17547 bytes, about 16%.

bfd/

PR gas/18451
* elf-bfd.h (elf_sym_strtab): New.
(elf_link_hash_table): Add strtabcount, strtabsize and
strtab.
(_bfd_elf_stringtab_init): Removed.
* elf.c (_bfd_elf_stringtab_init): Removed.
(_bfd_elf_compute_section_file_positions): Replace
bfd_strtab_hash/_bfd_elf_stringtab_init/_bfd_stringtab_free/
_bfd_stringtab_size with
elf_strtab_hash/_bfd_elf_strtab_init/_bfd_elf_strtab_free/
_bfd_elf_strtab_size. Use _bfd_elf_strtab_add,
_bfd_elf_strtab_finalize and _bfd_elf_strtab_offset to get
st_name.
(swap_out_syms): Likewise.
* elflink.c (elf_final_link_info): Replace bfd_strtab_hash
with elf_strtab_hash. Remove symbuf, symbuf_count,
symbuf_size and shndxbuf_size.
(elf_link_flush_output_syms): Removed.
(elf_link_output_sym): Renamed to ...
(elf_link_output_symstrtab): This. Replace _bfd_stringtab_add
with _bfd_elf_strtab_add. Don't flush symbols to the file nor
swap out symbols.
(elf_link_swap_symbols_out): New.
(elf_link_output_extsym): Replace elf_link_output_sym with
elf_link_output_symstrtab.
(elf_link_input_bfd): Likewise.
(elf_final_link_free): Replace _bfd_stringtab_free with
_bfd_elf_strtab_free. Remove symbuf.
(bfd_elf_final_link): Replace _bfd_elf_stringtab_init with
_bfd_elf_strtab_init. Don't set symbuf, symbuf_count,
symbuf_size nor shndxbuf_size. Initialize strtabsize and
strtab. Initialize symshndxbuf to -1 when number of sections
>= 64K. Replace elf_link_output_sym/elf_link_output_sym with
elf_link_output_symstrtab/elf_link_output_symstrtab. Don't
call elf_link_flush_output_syms. Call _bfd_elf_strtab_finalize
and elf_link_swap_symbols_out. Replace _bfd_stringtab_size
and _bfd_stringtab_emit with _bfd_elf_strtab_size and
_bfd_elf_strtab_emit.

gas/testsuite/

PR gas/18451
* gas/elf/elf.exp: Run strtab.
* gas/elf/strtab.d: New file.
* gas/elf/strtab.s: Likewise.

ld/testsuite/

PR gas/18451
* ld-elf/strtab.d: New file.
* ld-elf/strtab.s: Likewise.

f8773be 2015-06-25 17:54:12 Gary Benson

Correctly notice empty sysroots in solib_find_1

Some parts of solib_find_1 should only operate if the sysroot
is nonempty after processing, but the logic that checked this
happened before trailing slashes were stripped so empty but
non-NULL sysroots were possible. This commit moves the logic
so it correctly notices all empty sysroots.

gdb/ChangeLog:

* solib.c (solib_find_1): Set local variable sysroot to NULL if
it is the empty string after trailing slashes have been stripped.

a3be80c 2015-06-25 17:31:07 Gary Benson

Remove gdb_sysroot NULL checks

Since fed040c6a50399617d8265cbddc7fd21b3f134ef gdb_sysroot is
never NULL. This commit removes all gdb_sysroot NULL checks.

gdb/ChangeLog:

* exec.c (exec_file_locate_attach): Remove gdb_sysroot NULL check.
* infrun.c (follow_exec): Likewise.
* remote.c (remote_filesystem_is_local): Likewise.
* solib.c (solib_find_1): Likewise.

53f7371 2015-06-25 09:00:16 GDB Administrator

Automatic date update in version.in

68c3545 2015-06-25 07:30:11 H.J. Lu

Remove the extra @section .cfi_lsda

Commit 2f0c68f23bb3132cd5ac466ca8775c0d9e4960cd added an extra @section
.cfi_lsda:

@subsection @code{.cfi_lsda @var{encoding} [, @var{exp}]}
+@section @code{.cfi_lsda @var{encoding} [, @var{exp}]}
@code{.cfi_lsda} defines LSDA and its encoding.

It shouldn't be there.

* doc/as.texinfo (.cfi_lsda): Remove the extra @section.

7cc152b 2015-06-25 07:02:02 H.J. Lu

Silence older GCC warning

* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Silence older
GCC warning.

32fad71 2015-06-25 06:09:19 Keith Seitz

Fix lrealpath memory leak in build_id_to_debug_bfd

Valgrind reports memory leaking from build_id_to_debug_bfd:
==7261== 88 bytes in 2 blocks are definitely lost in loss record 31,319 of 35,132
==7261== at 0x4A06BCF: malloc (vg_replace_malloc.c:296)
==7261== by 0x32CA88A9B9: strdup (strdup.c:42)
==7261== by 0xFE62AB: lrealpath (lrealpath.c:88)
==7261== by 0x7F7AD6: build_id_to_debug_bfd (build-id.c:116)
==7261== by 0x7F7BB5: find_separate_debug_file_by_buildid (build-id.c:149)
==7261== by 0x6D9382: elf_symfile_read (elfread.c:1348)
==7261== by 0x777F02: read_symbols (symfile.c:875)
==7261== by 0x778505: syms_from_objfile_1 (symfile.c:1078)
==7261== by 0x778548: syms_from_objfile (symfile.c:1094)
==7261== by 0x778746: symbol_file_add_with_addrs (symfile.c:1191)
==7261== by 0x77893B: symbol_file_add_from_bfd (symfile.c:1280)
==7261== by 0x8E51E3: solib_read_symbols (solib.c:706)
==7261== by 0x8E58AF: solib_add (solib.c:1029)

This occurs because commit 1be5090b in bfd, addressing PR 11983, started
taking a copy of the input filename instead of directly caching it. It
appears that this code was never updated to reflect that API change.

This simple patch creates a cleanup to free the return value for lrealpath.

gdb/ChangeLog

* build-id.c (build_id_to_debug_bfd): Add cleanup to free
return value from lrealpath.

7c1e8d3 2015-06-25 05:47:37 H.J. Lu

Keep .plt section and DT_PLTGOT for prelink

Since the .plt section and DT_PLTGOT are used by prelink to undo
prelinking for dynamic relocations, we must keep them even if there is
no PLT relocation. This patch reverted commit a3747075a.

bfd/

* elf32-i386.c (elf_i386_allocate_dynrelocs): Always allocate
space for the first .plt entry.
(elf_i386_size_dynamic_sections): Always add DT_PLTGOT for .plt
section. Add DT_PLTRELSZ, DT_PLTREL and DT_JMPREL only if
there are PLT relocations.
* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Always
allocate space for the first .plt entry.
(elf_x86_64_size_dynamic_sections): Always add DT_PLTGOT for
.plt section. Add DT_PLTRELSZ, DT_PLTREL and DT_JMPREL only if
there are PLT relocations.

ld/testsuite/

* ld-i386/i386.exp: Run pltgot-2 for Linux targets.
* ld-x86-64/x86-64.exp: Likewise.
* ld-i386/pltgot-1.d: Updated.
* ld-x86-64/pltgot-1.d: Likewise.
* ld-i386/pltgot-2.d: New file.
* ld-x86-64/pltgot-2.d: Likewise.

f91ca6b 2015-06-25 04:43:02 Iain Buclaw

Sync libiberty from GCC, replaying updates to configure scripts

59cab53 2015-06-25 02:20:41 H.J. Lu

Don't convert R_X86_64_GOTPCREL if it will overflow

When converting "mov foo@GOTPCREL(%rip), %reg" to "lea foo(%rip), %reg"
with R_X86_64_PC32 relocation, it may overflow if the target section
is more than 2GB away. This patch estimates distance between mov
instruction and the target section. We convert R_X86_64_GOTPCREL to
R_X86_64_PC32 only if their distance is less than 2GB.

PR ld/18591
* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Don't convert
R_X86_64_GOTPCREL to R_X86_64_PC32 if it will cause relocation
overflow.

602a67c 2015-06-25 00:10:30 Mike Frysinger

sim: trace: drop unused trace_one_insn

Everyone has migrated to the split functions (trace_prefix + trace_generic)
a while ago, so we can drop this one now.