diff options
author | Jie Zhang <jie.zhang@analog.com> | 2010-03-19 14:43:09 +0000 |
---|---|---|
committer | Jie Zhang <jie.zhang@analog.com> | 2010-03-19 14:43:09 +0000 |
commit | 0f020cefaaafef23c09c563bb2f39794117a9748 (patch) | |
tree | f3488d22934956e74e7773f0ac90033d4b4a6aed /gas | |
parent | 860deac3a2e14413139a4b06baca3caa8449e64b (diff) | |
download | gdb-0f020cefaaafef23c09c563bb2f39794117a9748.zip gdb-0f020cefaaafef23c09c563bb2f39794117a9748.tar.gz gdb-0f020cefaaafef23c09c563bb2f39794117a9748.tar.bz2 |
* config/tc-arm.c (make_mapping_symbol): Hanle the case
that two mapping symbols have the same value.
testsuite/
* gas/arm/mapmisc.s: Add the test case for two mapping
symbols having the same value.
* gas/arm/mapmisc.d: Likewise.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-arm.c | 10 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/mapmisc.d | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/mapmisc.s | 2 |
5 files changed, 24 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 4736a3a..8936235 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2010-03-19 Jie Zhang <jie@codesourcery.com> + + * config/tc-arm.c (make_mapping_symbol): Hanle the case + that two mapping symbols have the same value. + 2010-03-18 Daniel Jacobowitz <dan@codesourcery.com> * doc/c-arm.texi (.setfp): Correct example. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 557b9f9..117812d 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -2500,7 +2500,15 @@ make_mapping_symbol (enum mstate state, valueT value, fragS *frag) frag->tc_frag_data.first_map = symbolP; } if (frag->tc_frag_data.last_map != NULL) - know (S_GET_VALUE (frag->tc_frag_data.last_map) < S_GET_VALUE (symbolP)); + { + know (S_GET_VALUE (frag->tc_frag_data.last_map) <= S_GET_VALUE (symbolP)); + /* If .fill or other data filling directive generates zero sized data, + the mapping symbol for the following code will have the same value + as the one generated for the data filling directive. In this case, + we replace the old symbol with the new one at the same address. */ + if (S_GET_VALUE (frag->tc_frag_data.last_map) == S_GET_VALUE (symbolP)) + symbol_remove (frag->tc_frag_data.last_map, &symbol_rootP, &symbol_lastP); + } frag->tc_frag_data.last_map = symbolP; } diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 86d14dc..bf25c72 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2010-03-19 Jie Zhang <jie@codesourcery.com> + + * gas/arm/mapmisc.s: Add the test case for two mapping + symbols having the same value. + * gas/arm/mapmisc.d: Likewise. + 2010-03-18 Wei Guozhi <carrot@google.com> PR gas/11323 diff --git a/gas/testsuite/gas/arm/mapmisc.d b/gas/testsuite/gas/arm/mapmisc.d index 5117021..c130b65 100644 --- a/gas/testsuite/gas/arm/mapmisc.d +++ b/gas/testsuite/gas/arm/mapmisc.d @@ -46,6 +46,7 @@ SYMBOL TABLE: 0+9c l .text 00000000 \$a 0+a0 l .text 00000000 \$d 0+a4 l .text 00000000 \$a +0+a8 l .text 00000000 \$a 0+00 l d .ARM.attributes 00000000 .ARM.attributes @@ -93,3 +94,4 @@ Disassembly of section .text: 9c: e1a00000 nop ; \(mov r0, r0\) a0: 7778797a .word 0x7778797a a4: e1a00000 nop ; \(mov r0, r0\) + a8: e1a00000 nop ; \(mov r0, r0\) diff --git a/gas/testsuite/gas/arm/mapmisc.s b/gas/testsuite/gas/arm/mapmisc.s index 25d9a73..4749e8d 100644 --- a/gas/testsuite/gas/arm/mapmisc.s +++ b/gas/testsuite/gas/arm/mapmisc.s @@ -34,3 +34,5 @@ foo: nop .incbin "mapmisc.dat" nop + .fill 0, 0, 0 + nop |