[Bug ld/21404] [avr] assertion fail in bfd/elf32-avr.c:2145

2017-05-11 Thread cvs-commit at gcc dot gnu.org
https://sourceware.org/bugzilla/show_bug.cgi?id=21404

--- Comment #6 from cvs-commit at gcc dot gnu.org  ---
The binutils-2_28-branch branch has been updated by Senthil Kumar Selvaraj
:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e568fc190ac96d6ab427d018613361e03e4bd22b

commit e568fc190ac96d6ab427d018613361e03e4bd22b
Author: Senthil Kumar Selvaraj 
Date:   Mon Apr 24 15:17:14 2017 +0530

Fix PR21404 - assertion fail when calculating symbol size

Fix a host of problems related to adjustment of
symbol values and sizes when relaxing for avr.

1. Adjust symbol size first before adjusting symbol
value. Otherwise, a symbol whose value just got adjusted to the
relaxed address also ends up getting resized. See pr21404-1.s.

2. Reduce symbol sizes only if their span is below an
alignment boundary. Otherwise, the size gets decremented once when the
actual instruction is relaxed and padding bytes are added, and again
when the padding bytes are deleted (if padding ends up being unnecessary).
pr21404-2.s addresses that, and this bug is really the root cause of
PR21404.

3. Adjust all symbol values before an alignment boundary.
Previous code did not adjust symbol values if they fell in the
would-be padded area, resulting in incorrect symbol values in some
cases (see pr21404-3.s).

4. Increase symbol sizes if alignment directives require so.
As pr21404-4.s shows
.global nonzero_sym
L1:
jmp  L1
nonzero_sym:
nop
nop
.p2align 2
.size nonzero_sym, .-nonzero_sym

The two nops satisfy the 4 byte alignment at assembly time and
therefore the size of nonzero_sym is 4. Relaxation shortens
the 4 byte jmp to a 2 byte rjmp, and to satisfy 4 byte alignment
the code places 2 extra padding bytes after the nops, increasing
nonzero_sym's size by 2. This wasn't handled before.

If the assembly code does not have any align directives, then the
boundary is the section size, and symbol values and sizes == boundary
should also get adjusted. To handle that case, add a did_pad variable
and use that to determine whether it should use < boundary or <= boundary.

Also get rid of reloc_toaddr, which is now redundant.  toaddr is now not
adjusted to handle the above case - the newly added
did_pad variable does the job.

pr21404-{5,6,7,8} are the same testcases written for local symbols, as
the code handles them slightly differently.

bfd/ChangeLog
2017-05-01  Senthil Kumar Selvaraj  

PR ld/21404
* elf32-avr.c (avr_should_move_sym): New function.
(avr_should_reduce_sym_size): Likewise.
(avr_should_increase_sym_size): Likewise.
(elf32_avr_relax_delete_bytes): Adjust symbol values
and sizes by calling new functions.

ld/ChangeLog
2017-04-28  Senthil Kumar Selvaraj  

PR ld/21404
* testsuite/ld-avr/pr21404-1.d: New test.
* testsuite/ld-avr/pr21404-1.s: New test.
* testsuite/ld-avr/pr21404-2.d: New test.
* testsuite/ld-avr/pr21404-2.s: New test.
* testsuite/ld-avr/pr21404-3.d: New test.
* testsuite/ld-avr/pr21404-3.s: New test.
* testsuite/ld-avr/pr21404-4.d: New test.
* testsuite/ld-avr/pr21404-4.s: New test.
* testsuite/ld-avr/pr21404-5.d: New test.
* testsuite/ld-avr/pr21404-5.s: New test.
* testsuite/ld-avr/pr21404-6.d: New test.
* testsuite/ld-avr/pr21404-6.s: New test.
* testsuite/ld-avr/pr21404-7.d: New test.
* testsuite/ld-avr/pr21404-7.s: New test.
* testsuite/ld-avr/pr21404-8.d: New test.
* testsuite/ld-avr/pr21404-8.s: New test.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug ld/21459] Wrong location for .debug_gdb_scripts on Windows

2017-05-11 Thread nickc at redhat dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=21459

Nick Clifton  changed:

   What|Removed |Added

  Attachment #10043|0   |1
is obsolete||

--- Comment #5 from Nick Clifton  ---
Created attachment 10046
  --> https://sourceware.org/bugzilla/attachment.cgi?id=10046&action=edit
Proposed patch

Updated version of previous patch.  Not sure that it will fix the problem of
the excessively large VMA value though.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug ld/21459] Wrong location for .debug_gdb_scripts on Windows

2017-05-11 Thread egonelbre at gmail dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=21459

--- Comment #6 from Egon Elbre  ---
(In reply to Nick Clifton from comment #5)
> Created attachment 10046 [details]
> Proposed patch
> 
> Updated version of previous patch.  Not sure that it will fix the problem of
> the excessively large VMA value though.

Unfortunately no, still there.

I have a hypothesis: maybe there is a cast of uint32_t(-1), which then gets
aligned as uint64_t to give result 1LL.

Btw. is there any debug output or any other printf that would be helpful to
you?

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug ld/21404] [avr] assertion fail in bfd/elf32-avr.c:2145

2017-05-11 Thread saaadhu at gcc dot gnu.org
https://sourceware.org/bugzilla/show_bug.cgi?id=21404

Senthil Kumar Selvaraj  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #7 from Senthil Kumar Selvaraj  ---
Fixed in master and binutils-2_28-branch.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils