diff options
author | Richard Sandiford <richard@codesourcery.com> | 2007-07-04 13:01:33 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2007-07-04 13:01:33 +0000 |
commit | f0025c1ff517c6e041dfdf3b9d1afbd6bf8a9ff1 (patch) | |
tree | 6a2113dc552ef9ac00d4f41f482003467af4fc1c /gcc/config | |
parent | 7d8c27ffa274c9dcaecc29421e3dbec08077be72 (diff) | |
download | gcc-f0025c1ff517c6e041dfdf3b9d1afbd6bf8a9ff1.zip gcc-f0025c1ff517c6e041dfdf3b9d1afbd6bf8a9ff1.tar.gz gcc-f0025c1ff517c6e041dfdf3b9d1afbd6bf8a9ff1.tar.bz2 |
vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax unless compiling RTP PIC.
gcc/
* config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
unless compiling RTP PIC.
gcc/testsuite/
* gcc.dg/sh-relax.c: Skip for VxWorks if non-PIC.
* gcc.dg/sh-relax-vxworks.c: New test.
From-SVN: r126317
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/sh/vxworks.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/gcc/config/sh/vxworks.h b/gcc/config/sh/vxworks.h index 63f2bbf..82b32f1 100644 --- a/gcc/config/sh/vxworks.h +++ b/gcc/config/sh/vxworks.h @@ -30,7 +30,20 @@ Boston, MA 02110-1301, USA. */ while (0) #undef SUBTARGET_OVERRIDE_OPTIONS -#define SUBTARGET_OVERRIDE_OPTIONS VXWORKS_OVERRIDE_OPTIONS +#define SUBTARGET_OVERRIDE_OPTIONS \ + do \ + { \ + VXWORKS_OVERRIDE_OPTIONS; \ + /* The kernel loader cannot handle the relaxation \ + relocations, so it cannot load kernel modules \ + (which are ET_REL) or RTP executables (which are \ + linked with --emit-relocs). No relaxation relocations \ + appear in shared libraries, so relaxation is OK \ + for RTP PIC. */ \ + if (TARGET_RELAX && !(TARGET_VXWORKS_RTP && flag_pic)) \ + error ("-mrelax is only supported for RTP PIC"); \ + } \ + while (0) #undef SUBTARGET_CPP_SPEC #define SUBTARGET_CPP_SPEC VXWORKS_ADDITIONAL_CPP_SPEC |