Message ID | 87bncbp0mi.fsf@kepler.schwinge.homeip.net |
---|---|
State | New |
Headers | show |
On Wed, Oct 7, 2015 at 4:02 AM, Thomas Schwinge <thomas@codesourcery.com> wrote: > From a quick look at the *_TYPE_SIZE definitions in > gcc/config/rs6000/rs6000.h as well as > <http://refspecs.linuxfoundation.org/elf/elfspec_ppc.pdf>, "3-1 > Fundamental Types", and > <http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi.html#FUND-TYPE>, > I gather we're dealing with regular ilp32/lp64 here. Then, I assume the > right thing is to use the 64BIT flag from gcc/config/rs6000/sysv4.opt > (which, per gcc/config.gcc I suppose is used for the relevant > powerpc64le-linux-gnu configuration). (David?) TARGET_64BIT is the appropriate macro to test. > > I'm not sure where to place the TARGET_OFFLOAD_OPTIONS #define and the > function definition in rs6000.c. (David?) As mentioned earlier, only PPC64LE is supported. I'm not sure if it really matters if this is defined in ELF-specific portion of the file or a general place, although it never will be called by other configurations. Thanks, David
--- gcc/config/rs6000/rs6000.c +++ gcc/config/rs6000/rs6000.c @@ -1688,6 +1688,9 @@ static const struct attribute_spec rs6000_attribute_table[] = #define TARGET_LIBGCC_SHIFT_COUNT_MODE rs6000_abi_word_mode #undef TARGET_UNWIND_WORD_MODE #define TARGET_UNWIND_WORD_MODE rs6000_abi_word_mode + +#undef TARGET_OFFLOAD_OPTIONS +#define TARGET_OFFLOAD_OPTIONS rs6000_offload_options /* Processor table. */ @@ -9532,6 +9535,16 @@ rs6000_abi_word_mode (void) return TARGET_32BIT ? SImode : DImode; } +/* Implement the TARGET_OFFLOAD_OPTIONS hook. */ +static char * +rs6000_offload_options (void) +{ + if (TARGET_64BIT) + return xstrdup ("-foffload-abi=lp64"); + else + return xstrdup ("-foffload-abi=ilp32"); +} + /* On rs6000, function arguments are promoted, as are function return values. */