mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-02 10:47:11 +08:00
Fix failure on powerpc 32-bit only targets
Targets that lack ppc64 support were failing the new prefix-reloc test. This patch adds some test infrastructure to deal with that, and changes the powerpc gas usage info so that "-a64" is omitted when unsupported. I've been meaning to break up the usage message for a long time; While doing so causes translators some work now, it should make it easier next time a new powerpc option is added. * config/tc-ppc.c (is_ppc64_target): New function. (md_show_usage): Split up usage message. Don't show -a64 when unsupported. testsuite/gas/ppc/ppc.exp (supports_ppc64): New. (prefix-reloc): Only run for ppc64.
This commit is contained in:
@ -1,3 +1,11 @@
|
||||
2019-05-27 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* config/tc-ppc.c (is_ppc64_target): New function.
|
||||
(md_show_usage): Split up usage message. Don't show -a64 when
|
||||
unsupported.
|
||||
testsuite/gas/ppc/ppc.exp (supports_ppc64): New.
|
||||
(prefix-reloc): Only run for ppc64.
|
||||
|
||||
2019-05-24 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
* config/tc-aarch64.c (aarch64_elf_copy_symbol_attributes): Define.
|
||||
|
@ -1320,76 +1320,146 @@ md_parse_option (int c, const char *arg)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
is_ppc64_target (const bfd_target *targ, void *data ATTRIBUTE_UNUSED)
|
||||
{
|
||||
switch (targ->flavour)
|
||||
{
|
||||
#ifdef OBJ_ELF
|
||||
case bfd_target_elf_flavour:
|
||||
return strncmp (targ->name, "elf64-powerpc", 13) == 0;
|
||||
#endif
|
||||
#ifdef OBJ_XCOFF
|
||||
case bfd_target_xcoff_flavour:
|
||||
return (strcmp (targ->name, "aixcoff64-rs6000") == 0
|
||||
|| strcmp (targ->name, "aix5coff64-rs6000") == 0);
|
||||
#endif
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
md_show_usage (FILE *stream)
|
||||
{
|
||||
fprintf (stream, _("\
|
||||
PowerPC options:\n\
|
||||
-a32 generate ELF32/XCOFF32\n\
|
||||
-a64 generate ELF64/XCOFF64\n\
|
||||
-u ignored\n\
|
||||
-mpwrx, -mpwr2 generate code for POWER/2 (RIOS2)\n\
|
||||
-mpwr generate code for POWER (RIOS1)\n\
|
||||
-m601 generate code for PowerPC 601\n\
|
||||
PowerPC options:\n"));
|
||||
fprintf (stream, _("\
|
||||
-a32 generate ELF32/XCOFF32\n"));
|
||||
if (bfd_iterate_over_targets (is_ppc64_target, NULL))
|
||||
fprintf (stream, _("\
|
||||
-a64 generate ELF64/XCOFF64\n"));
|
||||
fprintf (stream, _("\
|
||||
-u ignored\n"));
|
||||
fprintf (stream, _("\
|
||||
-mpwrx, -mpwr2 generate code for POWER/2 (RIOS2)\n"));
|
||||
fprintf (stream, _("\
|
||||
-mpwr generate code for POWER (RIOS1)\n"));
|
||||
fprintf (stream, _("\
|
||||
-m601 generate code for PowerPC 601\n"));
|
||||
fprintf (stream, _("\
|
||||
-mppc, -mppc32, -m603, -m604\n\
|
||||
generate code for PowerPC 603/604\n\
|
||||
-m403 generate code for PowerPC 403\n\
|
||||
-m405 generate code for PowerPC 405\n\
|
||||
-m440 generate code for PowerPC 440\n\
|
||||
-m464 generate code for PowerPC 464\n\
|
||||
-m476 generate code for PowerPC 476\n\
|
||||
generate code for PowerPC 603/604\n"));
|
||||
fprintf (stream, _("\
|
||||
-m403 generate code for PowerPC 403\n"));
|
||||
fprintf (stream, _("\
|
||||
-m405 generate code for PowerPC 405\n"));
|
||||
fprintf (stream, _("\
|
||||
-m440 generate code for PowerPC 440\n"));
|
||||
fprintf (stream, _("\
|
||||
-m464 generate code for PowerPC 464\n"));
|
||||
fprintf (stream, _("\
|
||||
-m476 generate code for PowerPC 476\n"));
|
||||
fprintf (stream, _("\
|
||||
-m7400, -m7410, -m7450, -m7455\n\
|
||||
generate code for PowerPC 7400/7410/7450/7455\n\
|
||||
generate code for PowerPC 7400/7410/7450/7455\n"));
|
||||
fprintf (stream, _("\
|
||||
-m750cl, -mgekko, -mbroadway\n\
|
||||
generate code for PowerPC 750cl/Gekko/Broadway\n\
|
||||
generate code for PowerPC 750cl/Gekko/Broadway\n"));
|
||||
fprintf (stream, _("\
|
||||
-m821, -m850, -m860 generate code for PowerPC 821/850/860\n"));
|
||||
fprintf (stream, _("\
|
||||
-mppc64, -m620 generate code for PowerPC 620/625/630\n\
|
||||
-mppc64bridge generate code for PowerPC 64, including bridge insns\n\
|
||||
-mbooke generate code for 32-bit PowerPC BookE\n\
|
||||
-ma2 generate code for A2 architecture\n\
|
||||
-mpower4, -mpwr4 generate code for Power4 architecture\n\
|
||||
-mppc64, -m620 generate code for PowerPC 620/625/630\n"));
|
||||
fprintf (stream, _("\
|
||||
-mppc64bridge generate code for PowerPC 64, including bridge insns\n"));
|
||||
fprintf (stream, _("\
|
||||
-mbooke generate code for 32-bit PowerPC BookE\n"));
|
||||
fprintf (stream, _("\
|
||||
-ma2 generate code for A2 architecture\n"));
|
||||
fprintf (stream, _("\
|
||||
-mpower4, -mpwr4 generate code for Power4 architecture\n"));
|
||||
fprintf (stream, _("\
|
||||
-mpower5, -mpwr5, -mpwr5x\n\
|
||||
generate code for Power5 architecture\n\
|
||||
-mpower6, -mpwr6 generate code for Power6 architecture\n\
|
||||
-mpower7, -mpwr7 generate code for Power7 architecture\n\
|
||||
-mpower8, -mpwr8 generate code for Power8 architecture\n\
|
||||
-mpower9, -mpwr9 generate code for Power9 architecture\n\
|
||||
-mcell generate code for Cell Broadband Engine architecture\n\
|
||||
-mcom generate code for Power/PowerPC common instructions\n\
|
||||
generate code for Power5 architecture\n"));
|
||||
fprintf (stream, _("\
|
||||
-mpower6, -mpwr6 generate code for Power6 architecture\n"));
|
||||
fprintf (stream, _("\
|
||||
-mpower7, -mpwr7 generate code for Power7 architecture\n"));
|
||||
fprintf (stream, _("\
|
||||
-mpower8, -mpwr8 generate code for Power8 architecture\n"));
|
||||
fprintf (stream, _("\
|
||||
-mpower9, -mpwr9 generate code for Power9 architecture\n"));
|
||||
fprintf (stream, _("\
|
||||
-mcell generate code for Cell Broadband Engine architecture\n"));
|
||||
fprintf (stream, _("\
|
||||
-mcom generate code for Power/PowerPC common instructions\n"));
|
||||
fprintf (stream, _("\
|
||||
-many generate code for any architecture (PWR/PWRX/PPC)\n"));
|
||||
fprintf (stream, _("\
|
||||
-maltivec generate code for AltiVec\n\
|
||||
-mvsx generate code for Vector-Scalar (VSX) instructions\n\
|
||||
-me300 generate code for PowerPC e300 family\n\
|
||||
-me500, -me500x2 generate code for Motorola e500 core complex\n\
|
||||
-me500mc, generate code for Freescale e500mc core complex\n\
|
||||
-me500mc64, generate code for Freescale e500mc64 core complex\n\
|
||||
-me5500, generate code for Freescale e5500 core complex\n\
|
||||
-me6500, generate code for Freescale e6500 core complex\n\
|
||||
-mspe generate code for Motorola SPE instructions\n\
|
||||
-mspe2 generate code for Freescale SPE2 instructions\n\
|
||||
-mvle generate code for Freescale VLE instructions\n\
|
||||
-mtitan generate code for AppliedMicro Titan core complex\n\
|
||||
-mregnames Allow symbolic names for registers\n\
|
||||
-maltivec generate code for AltiVec\n"));
|
||||
fprintf (stream, _("\
|
||||
-mvsx generate code for Vector-Scalar (VSX) instructions\n"));
|
||||
fprintf (stream, _("\
|
||||
-me300 generate code for PowerPC e300 family\n"));
|
||||
fprintf (stream, _("\
|
||||
-me500, -me500x2 generate code for Motorola e500 core complex\n"));
|
||||
fprintf (stream, _("\
|
||||
-me500mc, generate code for Freescale e500mc core complex\n"));
|
||||
fprintf (stream, _("\
|
||||
-me500mc64, generate code for Freescale e500mc64 core complex\n"));
|
||||
fprintf (stream, _("\
|
||||
-me5500, generate code for Freescale e5500 core complex\n"));
|
||||
fprintf (stream, _("\
|
||||
-me6500, generate code for Freescale e6500 core complex\n"));
|
||||
fprintf (stream, _("\
|
||||
-mspe generate code for Motorola SPE instructions\n"));
|
||||
fprintf (stream, _("\
|
||||
-mspe2 generate code for Freescale SPE2 instructions\n"));
|
||||
fprintf (stream, _("\
|
||||
-mvle generate code for Freescale VLE instructions\n"));
|
||||
fprintf (stream, _("\
|
||||
-mtitan generate code for AppliedMicro Titan core complex\n"));
|
||||
fprintf (stream, _("\
|
||||
-mregnames Allow symbolic names for registers\n"));
|
||||
fprintf (stream, _("\
|
||||
-mno-regnames Do not allow symbolic names for registers\n"));
|
||||
#ifdef OBJ_ELF
|
||||
fprintf (stream, _("\
|
||||
-mrelocatable support for GCC's -mrelocatble option\n\
|
||||
-mrelocatable-lib support for GCC's -mrelocatble-lib option\n\
|
||||
-memb set PPC_EMB bit in ELF flags\n\
|
||||
-mrelocatable support for GCC's -mrelocatble option\n"));
|
||||
fprintf (stream, _("\
|
||||
-mrelocatable-lib support for GCC's -mrelocatble-lib option\n"));
|
||||
fprintf (stream, _("\
|
||||
-memb set PPC_EMB bit in ELF flags\n"));
|
||||
fprintf (stream, _("\
|
||||
-mlittle, -mlittle-endian, -le\n\
|
||||
generate code for a little endian machine\n\
|
||||
generate code for a little endian machine\n"));
|
||||
fprintf (stream, _("\
|
||||
-mbig, -mbig-endian, -be\n\
|
||||
generate code for a big endian machine\n\
|
||||
-msolaris generate code for Solaris\n\
|
||||
-mno-solaris do not generate code for Solaris\n\
|
||||
-K PIC set EF_PPC_RELOCATABLE_LIB in ELF flags\n\
|
||||
-V print assembler version number\n\
|
||||
generate code for a big endian machine\n"));
|
||||
fprintf (stream, _("\
|
||||
-msolaris generate code for Solaris\n"));
|
||||
fprintf (stream, _("\
|
||||
-mno-solaris do not generate code for Solaris\n"));
|
||||
fprintf (stream, _("\
|
||||
-K PIC set EF_PPC_RELOCATABLE_LIB in ELF flags\n"));
|
||||
fprintf (stream, _("\
|
||||
-V print assembler version number\n"));
|
||||
fprintf (stream, _("\
|
||||
-Qy, -Qn ignored\n"));
|
||||
#endif
|
||||
fprintf (stream, _("\
|
||||
-nops=count when aligning, more than COUNT nops uses a branch\n\
|
||||
-nops=count when aligning, more than COUNT nops uses a branch\n"));
|
||||
fprintf (stream, _("\
|
||||
-ppc476-workaround warn if emitting data to code sections\n"));
|
||||
}
|
||||
|
||||
|
@ -22,6 +22,15 @@ if { ![istarget "powerpc*-*-*"] && ![istarget "rs6000-*-*"] } then {
|
||||
return
|
||||
}
|
||||
|
||||
proc supports_ppc64 { } {
|
||||
global AS
|
||||
if { [catch "exec $AS -a64 < /dev/null"] } then {
|
||||
return 0
|
||||
} else {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
||||
run_dump_test "bcyerr"
|
||||
run_dump_test "bcy"
|
||||
run_dump_test "bcaterr"
|
||||
@ -116,4 +125,6 @@ run_dump_test "htm"
|
||||
run_dump_test "titan"
|
||||
run_dump_test "prefix-align"
|
||||
run_dump_test "prefix-pcrel"
|
||||
run_dump_test "prefix-reloc"
|
||||
if { [supports_ppc64] } then {
|
||||
run_dump_test "prefix-reloc"
|
||||
}
|
||||
|
Reference in New Issue
Block a user