| Index: gcc/gcc/config/arm/aout.h
|
| diff --git a/gcc/gcc/config/arm/aout.h b/gcc/gcc/config/arm/aout.h
|
| index e9104220febbedb506f27c7632218452dcd1ec1b..5abad67dd69046875639c49f2398bcbe7cab82ff 100644
|
| --- a/gcc/gcc/config/arm/aout.h
|
| +++ b/gcc/gcc/config/arm/aout.h
|
| @@ -243,7 +243,30 @@
|
| if (TARGET_ARM) \
|
| asm_fprintf (STREAM, "\tb\t%LL%d\n", VALUE); \
|
| else if (TARGET_THUMB1) \
|
| - asm_fprintf (STREAM, "\t.word\t%LL%d-%LL%d\n", VALUE, REL); \
|
| + { \
|
| + if (flag_pic || optimize_size) \
|
| + { \
|
| + switch (GET_MODE(body)) \
|
| + { \
|
| + case QImode: \
|
| + asm_fprintf (STREAM, "\t.byte\t(%LL%d-%LL%d)/2\n", \
|
| + VALUE, REL); \
|
| + break; \
|
| + case HImode: /* TBH */ \
|
| + asm_fprintf (STREAM, "\t.2byte\t(%LL%d-%LL%d)/2\n", \
|
| + VALUE, REL); \
|
| + break; \
|
| + case SImode: \
|
| + asm_fprintf (STREAM, "\t.word\t%LL%d-%LL%d\n", \
|
| + VALUE, REL); \
|
| + break; \
|
| + default: \
|
| + gcc_unreachable(); \
|
| + } \
|
| + } \
|
| + else \
|
| + asm_fprintf (STREAM, "\t.word\t%LL%d+1\n", VALUE); \
|
| + } \
|
| else /* Thumb-2 */ \
|
| { \
|
| switch (GET_MODE(body)) \
|
|
|