+2014-08-22 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * config/tc-ppc.c (md_assemble): Only set the PPC_APUINFO_VLE
+ flag if both the processor and opcode flags match.
+
2014-08-22 Maciej W. Rozycki <macro@codesourcery.com>
* config/tc-arm.c (add_to_lit_pool): Preinitialize `imm1'.
ppc_apuinfo_section_add (PPC_APUINFO_CACHELCK, 1);
if (opcode->flags & PPC_OPCODE_RFMCI)
ppc_apuinfo_section_add (PPC_APUINFO_RFMCI, 1);
- if (opcode->flags & PPC_OPCODE_VLE)
+ /* Only set the VLE flag if the instruction has been pulled via
+ the VLE instruction set. This way the flag is guaranteed to
+ be set for VLE-only instructions or for VLE-only processors,
+ however it'll remain clear for dual-mode instructions on
+ dual-mode and, more importantly, standard-mode processors. */
+ if ((ppc_cpu & opcode->flags) == PPC_OPCODE_VLE)
ppc_apuinfo_section_add (PPC_APUINFO_VLE, 1);
}
#endif
+2014-08-22 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * ld-powerpc/apuinfo-vle.rd: New test.
+ * ld-powerpc/apuinfo-vle.s: New test source.
+ * ld-powerpc/apuinfo.rd: Adjust according to GAS PPC_APUINFO_VLE
+ handling change.
+ * ld-powerpc/powerpc.exp: Run the new test.
+
2014-08-21 Tony Wang <tony.wang@arm.com>
* ld-arm/jump-reloc-veneers-cond.s: New test.
--- /dev/null
+Hex dump of section '\.PPC\.EMB\.apuinfo':
+ 0x00000000 (?:00000008|08000000) (?:00000020|20000000) (?:00000002|02000000) 41505569 .*APUi
+ 0x00000010 6e666f00 (?:00420001|01004200) (?:00430001|01004300) (?:00410001|01004100) nfo.*
+ 0x00000020 (?:01020001|01000201) (?:01040001|01000401) (?:01010001|01000101) (?:00400001|01004000) .*
+ 0x00000030 01000001 .*
--- /dev/null
+ .text
+ .global apuinfo_vle
+apuinfo_vle:
+ se_blr
#target: powerpc-eabi*
Hex dump of section '.PPC.EMB.apuinfo':
- 0x00000000 (00000008|08000000) (00000020|20000000) (00000002|02000000) 41505569 .*APUi
+ 0x00000000 (00000008|08000000) (0000001c|1c000000) (00000002|02000000) 41505569 .*APUi
0x00000010 6e666f00 (00420001|01004200) (00430001|01004300) (00410001|01004100) nfo.*
- 0x00000020 (01020001|01000201) (01010001|01000101) (00400001|01004000) (01040001|01000401) .*
- 0x00000030 01000001 .*
+ 0x00000020 (01020001|01000201) (01010001|01000101) (00400001|01004000) 01000001 .*
{{objdump -hw reloc.d}} "reloc.so"}
{"APUinfo section processing" "-melf32ppc" ""
"-a32 -me500" {apuinfo1.s apuinfo-nul.s apuinfo2.s}
- {{readelf -x2 apuinfo.rd}} "apuinfo"}
+ {{readelf -x2 apuinfo.rd}} "apuinfo"}
+ {"APUinfo VLE section processing" "-melf32ppc" ""
+ "-a32 -me500 -mvle" {apuinfo1.s apuinfo-vle.s apuinfo2.s}
+ {{readelf -x2 apuinfo-vle.rd}} "apuinfo-vle"}
{"APUinfo NULL section processing" "-melf32ppc" ""
"-a32 -me500" {apuinfo-nul1.s apuinfo-nul.s}
- {{readelf -x2 apuinfo-nul.rd}} "apuinfo"}
+ {{readelf -x2 apuinfo-nul.rd}} "apuinfo"}
{"TLS32 static exec" "-melf32ppc" "" "-a32" {tls32.s tlslib32.s}
{{objdump -dr tls32.d} {objdump -sj.got tls32.g}
{objdump -sj.tdata tls32.t}}