diff options
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 8 | ||||
-rw-r--r-- | gas/config/tc-avr.c | 10 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/avr/avr-prop-1.d | 19 | ||||
-rw-r--r-- | gas/testsuite/gas/avr/avr-prop-1.s | 4 |
5 files changed, 33 insertions, 13 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 90b358b..e81117a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +2015-10-12 Andrew Burgess <andrew.burgess@embecosm.com> + + * config/tc-avr.c (avr_output_property_record): Fix overwrite bug + for align and fill records. + (avr_handle_align): Record fill information for align frags. + (create_record_for_frag): Add next frag assertion, use correct + address for align records. + 2015-10-10 Alan Modra <amodra@gmail.com> PR gas/19113 diff --git a/gas/config/tc-avr.c b/gas/config/tc-avr.c index 09eea48..252b1a2 100644 --- a/gas/config/tc-avr.c +++ b/gas/config/tc-avr.c @@ -1993,7 +1993,7 @@ avr_output_property_record (char * const frag_base, char *frag_ptr, case RECORD_ALIGN_AND_FILL: md_number_to_chars (frag_ptr, record->data.align.bytes, 4); - md_number_to_chars (frag_ptr, record->data.align.fill, 4); + md_number_to_chars (frag_ptr + 4, record->data.align.fill, 4); frag_ptr += 8; break; @@ -2038,11 +2038,14 @@ avr_handle_align (fragS *fragP) alignment mechanism. */ if ((fragP->fr_type == rs_align || fragP->fr_type == rs_align_code) - && fragP->fr_address > 0 && fragP->fr_offset > 0) { + char *p = fragP->fr_literal + fragP->fr_fix; + fragP->tc_frag_data.is_align = TRUE; fragP->tc_frag_data.alignment = fragP->fr_offset; + fragP->tc_frag_data.fill = *p; + fragP->tc_frag_data.has_fill = (fragP->tc_frag_data.fill != 0); } if (fragP->fr_type == rs_org && fragP->fr_offset > 0) @@ -2078,6 +2081,7 @@ create_record_for_frag (segT sec, fragS *fragP) prop_rec_link = xmalloc (sizeof (struct avr_property_record_link)); memset (prop_rec_link, 0, sizeof (*prop_rec_link)); + gas_assert (fragP->fr_next != NULL); if (fragP->tc_frag_data.is_org) { @@ -2094,7 +2098,7 @@ create_record_for_frag (segT sec, fragS *fragP) } else { - prop_rec_link->record.offset = fragP->fr_address; + prop_rec_link->record.offset = fragP->fr_next->fr_address; prop_rec_link->record.section = sec; gas_assert (fragP->tc_frag_data.is_align); diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 814d0a6..54bb989 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-10-12 Andrew Burgess <andrew.burgess@embecosm.com> + + * gas/avr/avr-prop-1.s: Use fill in some cases. + * gas/avr/avr-prop-1.d: Update expected results. + 2015-10-07 Claudiu Zissulescu <claziss@synopsys.com> * gas/arc/adc.s: Update test for ARCv1/ARCv2. diff --git a/gas/testsuite/gas/avr/avr-prop-1.d b/gas/testsuite/gas/avr/avr-prop-1.d index b140ae6..9cbbd96 100644 --- a/gas/testsuite/gas/avr/avr-prop-1.d +++ b/gas/testsuite/gas/avr/avr-prop-1.d @@ -12,15 +12,18 @@ Contents of `\.avr\.prop' section: Flags: 0 0 ORG @ \.text\.1 \+ 0x000020 \(0x000020\) - 1 ORG @ \.text\.1 \+ 0x000044 \(0x000044\) + 1 ORG\+FILL @ \.text\.1 \+ 0x000044 \(0x000044\) + Fill: 0x000005 2 ORG @ \.text\.2 \+ 0x000020 \(0x000020\) - 3 ALIGN @ \.text\.2 \+ 0x000020 \(0x000020\) - Align: 0x000004 - 4 ALIGN @ \.text\.2 \+ 0x000030 \(0x000030\) - Align: 0x000004 + 3 ALIGN @ \.text\.2 \+ 0x000030 \(0x000030\) + Align: 0x000004 + 4 ALIGN\+FILL @ \.text\.2 \+ 0x000040 \(0x000040\) + Align: 0x000004, Fill: 0x000003 5 ORG @ \.text\.2 \+ 0x000200 \(0x000200\) - 6 ALIGN @ \.text\.2 \+ 0x000200 \(0x000200\) - Align: 0x000004 + 6 ALIGN @ \.text\.2 \+ 0x000210 \(0x000210\) + Align: 0x000004 7 ALIGN @ \.text\.3 \+ 0x000100 \(0x000100\) - Align: 0x000008 + Align: 0x000008 + 8 ALIGN @ \.text\.3 \+ 0x000200 \(0x000200\) + Align: 0x000008 diff --git a/gas/testsuite/gas/avr/avr-prop-1.s b/gas/testsuite/gas/avr/avr-prop-1.s index 6e50cf1..1949216 100644 --- a/gas/testsuite/gas/avr/avr-prop-1.s +++ b/gas/testsuite/gas/avr/avr-prop-1.s @@ -3,7 +3,7 @@ _start: .org 0x20 nop - .org 0x44 + .org 0x44,5 nop @@ -14,7 +14,7 @@ text2: nop .align 4 nop - .align 4 + .align 4,3 nop .org 0x200 nop |