OLD | NEW |
1 /* tc-arm.c -- Assemble for the ARM | 1 /* tc-arm.c -- Assemble for the ARM |
2 Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, | 2 Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, |
3 2004, 2005, 2006, 2007, 2008, 2009 | 3 2004, 2005, 2006, 2007, 2008, 2009 |
4 Free Software Foundation, Inc. | 4 Free Software Foundation, Inc. |
5 Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) | 5 Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) |
6 Modified by David Taylor (dtaylor@armltd.co.uk) | 6 Modified by David Taylor (dtaylor@armltd.co.uk) |
7 Cirrus coprocessor mods by Aldy Hernandez (aldyh@redhat.com) | 7 Cirrus coprocessor mods by Aldy Hernandez (aldyh@redhat.com) |
8 Cirrus coprocessor fixes by Petko Manolov (petkan@nucleusys.com) | 8 Cirrus coprocessor fixes by Petko Manolov (petkan@nucleusys.com) |
9 Cirrus coprocessor fixes by Vladimir Ivanov (vladitx@nucleusys.com) | 9 Cirrus coprocessor fixes by Vladimir Ivanov (vladitx@nucleusys.com) |
10 | 10 |
(...skipping 2468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2479 /* Save the mapping symbols for future reference. Also check that | 2479 /* Save the mapping symbols for future reference. Also check that |
2480 we do not place two mapping symbols at the same offset within a | 2480 we do not place two mapping symbols at the same offset within a |
2481 frag. We'll handle overlap between frags in | 2481 frag. We'll handle overlap between frags in |
2482 check_mapping_symbols. */ | 2482 check_mapping_symbols. */ |
2483 if (value == 0) | 2483 if (value == 0) |
2484 { | 2484 { |
2485 know (frag->tc_frag_data.first_map == NULL); | 2485 know (frag->tc_frag_data.first_map == NULL); |
2486 frag->tc_frag_data.first_map = symbolP; | 2486 frag->tc_frag_data.first_map = symbolP; |
2487 } | 2487 } |
2488 if (frag->tc_frag_data.last_map != NULL) | 2488 if (frag->tc_frag_data.last_map != NULL) |
2489 know (S_GET_VALUE (frag->tc_frag_data.last_map) < S_GET_VALUE (symbolP)); | 2489 { |
| 2490 know (S_GET_VALUE (frag->tc_frag_data.last_map) < S_GET_VALUE (symbolP)); |
| 2491 } |
2490 frag->tc_frag_data.last_map = symbolP; | 2492 frag->tc_frag_data.last_map = symbolP; |
2491 } | 2493 } |
2492 | 2494 |
2493 /* We must sometimes convert a region marked as code to data during | 2495 /* We must sometimes convert a region marked as code to data during |
2494 code alignment, if an odd number of bytes have to be padded. The | 2496 code alignment, if an odd number of bytes have to be padded. The |
2495 code mapping symbol is pushed to an aligned address. */ | 2497 code mapping symbol is pushed to an aligned address. */ |
2496 | 2498 |
2497 static void | 2499 static void |
2498 insert_data_mapping_symbol (enum mstate state, | 2500 insert_data_mapping_symbol (enum mstate state, |
2499 valueT value, fragS *frag, offsetT bytes) | 2501 valueT value, fragS *frag, offsetT bytes) |
(...skipping 16529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
19029 /* PC relative addressing on the Thumb is slightly odd as the | 19031 /* PC relative addressing on the Thumb is slightly odd as the |
19030 bottom two bits of the PC are forced to zero for the | 19032 bottom two bits of the PC are forced to zero for the |
19031 calculation. This happens *after* application of the | 19033 calculation. This happens *after* application of the |
19032 pipeline offset. However, Thumb adrl already adjusts for | 19034 pipeline offset. However, Thumb adrl already adjusts for |
19033 this, so we need not do it again. */ | 19035 this, so we need not do it again. */ |
19034 case BFD_RELOC_ARM_THUMB_ADD: | 19036 case BFD_RELOC_ARM_THUMB_ADD: |
19035 return base & ~3; | 19037 return base & ~3; |
19036 | 19038 |
19037 case BFD_RELOC_ARM_THUMB_OFFSET: | 19039 case BFD_RELOC_ARM_THUMB_OFFSET: |
19038 case BFD_RELOC_ARM_T32_OFFSET_IMM: | 19040 case BFD_RELOC_ARM_T32_OFFSET_IMM: |
error: old chunk mismatch |
None
OLD | NEW |