[patch, avr] Add 32 bit PC relative relocation
Sivanupandi, Pitchumani
Pitchumani.Sivanupandi@atmel.com
Mon Jul 6 12:03:00 GMT 2015
This patch adds PC relative difference relocation for AVR target. This
relocation is needed when generating per-function section names for dwarf
line information.
Consider the following test case that is failing when assemble with
'--gdwarf-sections' option.
Test case:
volatile int x;
void foo()
{
x++;
}
int main()
{
foo();
return x;
}
Command line: avr-gcc test.c -mmcu=atmega1280 -Wa,--gdwarf-sections -g1
Error messages:
/tmp/cc83MGOI.s: Assembler messages:
/tmp/cc83MGOI.s: Error: can't resolve `.debug_line_end' {.debug_line_end section} - `.Ldebug_line_start' {.debug_line section}
This patch defines DIFF_EXPR_OK for avr target to allow PC relative difference
relocation. When generating relocation (tc_gen_reloc) 32 bit relocation fixup
is changed to new 32 bit PC relative relocation if the fixup has pc-relative
flag set.
This relocation and fixup updates are similar to ARM target.
Is this approach is ok?
I have ran the regression test for binutils, gas, ld and gcc using avrtest.
No regression found.
If OK, could someone commit please? I do not have commit access.
Regards,
Pitchumani
bfd/ChangeLog
2015-07-06 Pitchumani Sivanupandi <pitchumani.s@atmel.com>
* elf32-avr.c: Add 32 bit PC relative relocation for AVR target.
gas/ChangeLog
2015-07-06 Pitchumani Sivanupandi <pitchumani.s@atmel.com>
* config/tc-avr.c (tc_gen_reloc): Change 32 bit relocation to
32 bit PC relative and update offset if the fixup is pc-relative.
* config/tc-avr.h (DIFF_EXPR_OK): Define to enable PC relative diff
relocs.
gas/testsuite/ChangeLog
2015-07-06 Pitchumani Sivanupandi <pitchumani.s@atmel.com>
* gas/avr/pc-relative-reloc.d: New test for 32 bit pc relative reloc.
* gas/avr/per-function-debugline.s: New test source.
include/ChangeLog
2015-07-06 Pitchumani Sivanupandi <pitchumani.s@atmel.com>
* elf/avr.h: Add new 32 bit PC relative relocation.
ld/testsuite/ChangeLog
2015-07-06 Pitchumani Sivanupandi <pitchumani.s@atmel.com>
* ld-avr/gc-section-debugline.d: New test.
* ld-avr/per-function-debugline.s: Source for new test.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pc-relative-reloc.patch
Type: application/octet-stream
Size: 9371 bytes
Desc: pc-relative-reloc.patch
URL: <https://sourceware.org/pipermail/binutils/attachments/20150706/0d9b89c7/attachment.obj>
More information about the Binutils
mailing list