Index: lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp =================================================================== --- lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp +++ lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp @@ -302,6 +302,12 @@ if (Features & Mips::FeatureNaN2008) EFlags |= ELF::EF_MIPS_NAN2008; + // -mabicalls and -mplt are not implemented but we should act as if they were + // given. + EFlags |= ELF::EF_MIPS_CPIC; + if (Features & Mips::FeatureN64) + EFlags |= ELF::EF_MIPS_PIC; + MCA.setELFHeaderEFlags(EFlags); } Index: test/MC/Mips/elf_eflags.s =================================================================== --- test/MC/Mips/elf_eflags.s +++ test/MC/Mips/elf_eflags.s @@ -1,118 +1,118 @@ -# These *MUST* match the output of gas compiled with the same triple and +# These *MUST* match the output of 'gcc -c' compiled with the same triple and # corresponding options (-mcpu=mips32 -> -mips32 for example). # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r6 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R6 %s -# MIPSEL-MIPS64R6: Flags [ (0xA0001500) +# MIPSEL-MIPS64R6: Flags [ (0xA0001506) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r6 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R6-NAN2008 %s -# MIPSEL-MIPS64R6-NAN2008: Flags [ (0xA0001500) +# MIPSEL-MIPS64R6-NAN2008: Flags [ (0xA0001506) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2 %s -# MIPSEL-MIPS64R2: Flags [ (0x80001100) +# MIPSEL-MIPS64R2: Flags [ (0x80001106) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2-NAN2008 %s -# MIPSEL-MIPS64R2-NAN2008: Flags [ (0x80001500) +# MIPSEL-MIPS64R2-NAN2008: Flags [ (0x80001506) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64 %s -# MIPSEL-MIPS64: Flags [ (0x60001100) +# MIPSEL-MIPS64: Flags [ (0x60001106) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64-NAN2008 %s -# MIPSEL-MIPS64-NAN2008: Flags [ (0x60001500) +# MIPSEL-MIPS64-NAN2008: Flags [ (0x60001506) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r6 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R6 %s -# MIPSEL-MIPS32R6: Flags [ (0x90001400) +# MIPSEL-MIPS32R6: Flags [ (0x90001404) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r6 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R6-NAN2008 %s -# MIPSEL-MIPS32R6-NAN2008: Flags [ (0x90001400) +# MIPSEL-MIPS32R6-NAN2008: Flags [ (0x90001404) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r2 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R2 %s -# MIPSEL-MIPS32R2: Flags [ (0x70001000) +# MIPSEL-MIPS32R2: Flags [ (0x70001004) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R2-NAN2008 %s -# MIPSEL-MIPS32R2-NAN2008: Flags [ (0x70001400) +# MIPSEL-MIPS32R2-NAN2008: Flags [ (0x70001404) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32 %s -# MIPSEL-MIPS32: Flags [ (0x50001000) +# MIPSEL-MIPS32: Flags [ (0x50001004) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32-NAN2008 %s -# MIPSEL-MIPS32-NAN2008: Flags [ (0x50001400) +# MIPSEL-MIPS32-NAN2008: Flags [ (0x50001404) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=-n64,n32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N32 %s -# MIPS64EL-MIPS64R2-N32: Flags [ (0x80000020) +# MIPS64EL-MIPS64R2-N32: Flags [ (0x80000024) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=-n64,n32,+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N32-NAN2008 %s -# MIPS64EL-MIPS64R2-N32-NAN2008: Flags [ (0x80000420) +# MIPS64EL-MIPS64R2-N32-NAN2008: Flags [ (0x80000424) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 -mattr=-n64,n32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N32 %s -# MIPS64EL-MIPS64-N32: Flags [ (0x60000020) +# MIPS64EL-MIPS64-N32: Flags [ (0x60000024) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 -mattr=-n64,n32,+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N32-NAN2008 %s -# MIPS64EL-MIPS64-N32-NAN2008: Flags [ (0x60000420) +# MIPS64EL-MIPS64-N32-NAN2008: Flags [ (0x60000424) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N64 %s -# MIPS64EL-MIPS64R2-N64: Flags [ (0x80000000) +# MIPS64EL-MIPS64R2-N64: Flags [ (0x80000006) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=n64,+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N64-NAN2008 %s -# MIPS64EL-MIPS64R2-N64-NAN2008: Flags [ (0x80000400) +# MIPS64EL-MIPS64R2-N64-NAN2008: Flags [ (0x80000406) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mattr=n64 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N64 %s -# MIPS64EL-MIPS64-N64: Flags [ (0x60000000) +# MIPS64EL-MIPS64-N64: Flags [ (0x60000006) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mattr=n64,+nan2008 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N64-NAN2008 %s -# MIPS64EL-MIPS64-N64-NAN2008: Flags [ (0x60000400) +# MIPS64EL-MIPS64-N64-NAN2008: Flags [ (0x60000406) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=-n64,o32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-O32 %s -# MIPS64EL-MIPS64R2-O32: Flags [ (0x80001100) +# MIPS64EL-MIPS64R2-O32: Flags [ (0x80001104) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=-n64,o32,+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-O32-NAN2008 %s -# MIPS64EL-MIPS64R2-O32-NAN2008: Flags [ (0x80001500) +# MIPS64EL-MIPS64R2-O32-NAN2008: Flags [ (0x80001504) # RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips5 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS5 %s -# MIPS5: Flags [ (0x40000000) +# MIPS5: Flags [ (0x40000006) # RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips5 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS5-NAN2008 %s -# MIPS5-NAN2008: Flags [ (0x40000400) +# MIPS5-NAN2008: Flags [ (0x40000406) # RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips4 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS4 %s -# MIPS4: Flags [ (0x30000000) +# MIPS4: Flags [ (0x30000006) # RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips4 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS4-NAN2008 %s -# MIPS4-NAN2008: Flags [ (0x30000400) +# MIPS4-NAN2008: Flags [ (0x30000406) # RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips3 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS3 %s -# MIPS3: Flags [ (0x20000000) +# MIPS3: Flags [ (0x20000006) # RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips3 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS3-NAN2008 %s -# MIPS3-NAN2008: Flags [ (0x20000400) +# MIPS3-NAN2008: Flags [ (0x20000406) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips2 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS2 %s -# MIPSEL-MIPS2: Flags [ (0x10001000) +# MIPSEL-MIPS2: Flags [ (0x10001004) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips2 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS2-NAN2008 %s -# MIPSEL-MIPS2-NAN2008: Flags [ (0x10001400) +# MIPSEL-MIPS2-NAN2008: Flags [ (0x10001404) # RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips1 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS1 %s -# MIPS1: Flags [ (0x1000) +# MIPS1: Flags [ (0x1004) # RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips1 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS1-NAN2008 %s -# MIPS1-NAN2008: Flags [ (0x1400) +# MIPS1-NAN2008: Flags [ (0x1404) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mattr=-n64,o32 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-O32 %s -# MIPS64EL-MIPS64-O32: Flags [ (0x60001100) +# MIPS64EL-MIPS64-O32: Flags [ (0x60001104) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mattr=-n64,o32,+nan2008 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-O32-NAN2008 %s -# MIPS64EL-MIPS64-O32-NAN2008: Flags [ (0x60001500) +# MIPS64EL-MIPS64-O32-NAN2008: Flags [ (0x60001504) # Default ABI for MIPS64 is N64 as opposed to GCC/GAS (N32) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2 %s -# MIPS64EL-MIPS64R2: Flags [ (0x80000000) +# MIPS64EL-MIPS64R2: Flags [ (0x80000006) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-NAN2008 %s -# MIPS64EL-MIPS64R2-NAN2008: Flags [ (0x80000400) +# MIPS64EL-MIPS64R2-NAN2008: Flags [ (0x80000406) # Default ABI for MIPS64 is N64 as opposed to GCC/GAS (N32) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64 %s -# MIPS64EL-MIPS64: Flags [ (0x60000000) +# MIPS64EL-MIPS64: Flags [ (0x60000006) # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-NAN2008 %s -# MIPS64EL-MIPS64-NAN2008: Flags [ (0x60000400) +# MIPS64EL-MIPS64-NAN2008: Flags [ (0x60000406) Index: test/MC/Mips/elf_eflags_abicalls.s =================================================================== --- test/MC/Mips/elf_eflags_abicalls.s +++ test/MC/Mips/elf_eflags_abicalls.s @@ -1,6 +1,6 @@ # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 %s -o -| llvm-readobj -h | FileCheck %s -# This *MUST* match the output of gas compiled with the same triple. +# This *MUST* match the output of 'gcc -c' compiled with the same triple. # CHECK: Flags [ (0x50001006) .abicalls Index: test/MC/Mips/elf_eflags_micromips.s =================================================================== --- test/MC/Mips/elf_eflags_micromips.s +++ test/MC/Mips/elf_eflags_micromips.s @@ -1,7 +1,7 @@ # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 %s -o -| llvm-readobj -h | FileCheck %s -# This *MUST* match the output of gas compiled with the same triple. -# CHECK: Flags [ (0x52001000) +# This *MUST* match the output of 'gcc -c' compiled with the same triple. +# CHECK: Flags [ (0x52001004) .set micromips f: Index: test/MC/Mips/elf_eflags_mips16.s =================================================================== --- test/MC/Mips/elf_eflags_mips16.s +++ test/MC/Mips/elf_eflags_mips16.s @@ -1,7 +1,7 @@ # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 %s -o -| llvm-readobj -h | FileCheck %s -# This *MUST* match the output of gas compiled with the same triple. -# CHECK: Flags [ (0x54001000) +# This *MUST* match the output of 'gcc -c' compiled with the same triple. +# CHECK: Flags [ (0x54001004) .set mips16 f: Index: test/MC/Mips/elf_eflags_nan2008.s =================================================================== --- test/MC/Mips/elf_eflags_nan2008.s +++ test/MC/Mips/elf_eflags_nan2008.s @@ -4,8 +4,8 @@ # RUN: llvm-mc -triple mipsel-unknown-linux -mcpu=mips32 %s -o -| \ # RUN: FileCheck %s -check-prefix=CHECK-ASM -# This *MUST* match the output of gas compiled with the same triple. -# CHECK-OBJ: Flags [ (0x50001400) +# This *MUST* match the output of 'gcc -c' compiled with the same triple. +# CHECK-OBJ: Flags [ (0x50001404) # CHECK-ASM: .nan 2008 Index: test/MC/Mips/elf_eflags_nanlegacy.s =================================================================== --- test/MC/Mips/elf_eflags_nanlegacy.s +++ test/MC/Mips/elf_eflags_nanlegacy.s @@ -4,12 +4,12 @@ # RUN: llvm-mc -triple mipsel-unknown-linux -mcpu=mips32 %s -o -| \ # RUN: FileCheck %s -check-prefix=CHECK-ASM -# This *MUST* match the output of gas compiled with the same triple. -# CHECK-OBJ: Flags [ (0x50001000) +# This *MUST* match the output of 'gcc -c' compiled with the same triple. +# CHECK-OBJ: Flags [ (0x50001004) # CHECK-ASM: .nan 2008 # CHECK-ASM: .nan legacy .nan 2008 -// Let's override the previous directive! +# Let's override the previous directive! .nan legacy Index: test/MC/Mips/elf_eflags_noreorder.s =================================================================== --- test/MC/Mips/elf_eflags_noreorder.s +++ test/MC/Mips/elf_eflags_noreorder.s @@ -1,6 +1,6 @@ # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 %s -o -| llvm-readobj -h | FileCheck %s -# This *MUST* match the output of gas compiled with the same triple. -# CHECK: Flags [ (0x50001001) +# This *MUST* match the output of 'gcc -c' compiled with the same triple. +# CHECK: Flags [ (0x50001005) .set noreorder Index: test/MC/Mips/elf_eflags_pic0.s =================================================================== --- test/MC/Mips/elf_eflags_pic0.s +++ test/MC/Mips/elf_eflags_pic0.s @@ -1,6 +1,6 @@ # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 %s -o -| llvm-readobj -h | FileCheck %s -# This *MUST* match the output of gas compiled with the same triple. +# This *MUST* match the output of 'gcc -c' compiled with the same triple. # CHECK: Flags [ (0x50001004) .abicalls Index: test/MC/Mips/elf_eflags_pic2.s =================================================================== --- test/MC/Mips/elf_eflags_pic2.s +++ test/MC/Mips/elf_eflags_pic2.s @@ -1,6 +1,6 @@ # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 %s -o -| llvm-readobj -h | FileCheck %s -# This *MUST* match the output of gas compiled with the same triple. +# This *MUST* match the output of 'gcc -c' compiled with the same triple. # CHECK: Flags [ (0x50001006) .option pic2