[2.25][ARM][GAS]Backport "Positively emit symbols for alignment."
Renlin Li
renlin.li@arm.com
Tue Jun 16 08:31:00 GMT 2015
Sorry for the noise, I forgot to add the ChangeLog. Here they are.
gas/ChangeLog:
2015-06-16 Renlin Li <renlin.li@arm.com>
backport from mainline
2015-04-28 Renlin Li <renlin.li@arm.com>
2015-06-03 Renlin Li <renlin.li@arm.com>
* config/tc-arm.c (arm_init_frag): Always emit mapping symbols.
gas/testsuite/ChangeLog:
2015-06-16 Renlin Li <renlin.li@arm.com>
backport from mainline
2015-04-28 Renlin Li <renlin.li@arm.com>
* gas/arm/thumb2_vpool_be.d: Adjust the desired output.
* gas/arm/vldconst_be.d: Likewise.
ld/testsuite/ChangeLog:
2015-06-16 Renlin Li <renlin.li@arm.com>
backport from mainline
2015-04-29 Renlin Li <renlin.li@arm.com>
* ld-arm/ifunc-10.dd: Adjust the desired output.
* ld-arm/ifunc-2.dd: Likewise.
On 16/06/15 09:24, Renlin Li wrote:
> Hi all,
>
> This is a merged backport patch from the following three. They together
> fix one problem, So I merge them into one backport patch. The
> description of problem is quoted below.
>
> The initial patch:
> https://sourceware.org/ml/binutils/2015-04/msg00381.html
>
> Fix two failing test case:
> https://sourceware.org/ml/binutils/2015-04/msg00457.html
>
> Fix a bug in the initial patch:
> https://sourceware.org/ml/binutils/2015-06/msg00045.html
>
>
> Binutils, ld, gas regression test Okay. Okay to commit?
>
> On 24/04/15 13:53, Renlin Li wrote:
>> Hi all,
>>
>> In arm_init_frag(), when ARM or THUMB are recorded, it will simply
>> return without doing anything. This is not correct in a few cases.
>>
>> For the following two cases:
>> case 1:
>> nop ----> MAP_ARM
>> .long 0 ---> MAP_DATA
>> .align 4 --->
>> ---->(1)
>> ----> start new frag
>> .word 0x12345678
>>
>> (1) paddings here are all treated as data, because the previous state is
>> MAP_DATA.
>>
>> case 2:
>> nop ----> MAP_ARM
>> .long 0 ---> MAP_DATA
>> .byte 1
>> .align 2 ---> (1)
>> ----> (2)
>> ----> start new frag
>> .long 0x12345678 ----> (3)
>>
>> stage 1: while parsing the input file:
>> (1) arm_init_frag early returns, No state change, no new symbol. (3)No
>> state change, no new symbol.
>> stage 2: Later, while writing the object file:
>> (2)MAP_DATA, MAP_ARM are inserted by insert_data_mapping_symol to handle
>> alignment. (3) interpreted as instruction because of the MAP_ARM
>> inserted at (2)
>>
>>
>> This change might generate redundant symbols, some of them can be
>> removed later. In check_mapping_symbols(), the symbols at the end of a
>> section, and overlapping symbols will be removed.
>>
>> gas checked without any new issues. Okay to commit?
More information about the Binutils
mailing list