http://sourceware.org/bugzilla/show_bug.cgi?id=13402

             Bug #: 13402
           Summary: using "-Wl,--relax" on the AVR port causes lss file
                    and debug information to "lose sync" with generated
                    code
           Product: binutils
           Version: 2.20
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ld
        AssignedTo: unassig...@sourceware.org
        ReportedBy: ilya.lesok...@gmail.com
    Classification: Unclassified


When using "-Wl,--relax" on the AVR port and the size of an instruction
actually changes, the location of the following instruction is not updated, So
the lss file and debug information "lose sync" with the actual code.

For example - the following code:
.global main
main:
call a
call b
call c

a:
b:
c:

when compiled and relaxed generates an lss file with the following:
...
00000092 <main>:
.global main
main:
call a
  92:    02 d0           rcall    .+4          ; 0x98 <_exit>
  94:    01 d0           rcall    .+2          ; 0x98 <_exit>
call b
  96:    00 d0           rcall    .+0          ; 0x98 <_exit>
...

As can be seen call b is now pointing to what was originally call c, and call c
is omitted.

This makes debugging (in AVRStudio and probably other IDE's) of relaxed code
difficult since the line's in the IDE dont match the line in the actual code.

Also, it seems the code generated by gcc is not effected by this issue.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- 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

Reply via email to