[llvm] r175569 - ELF symbol table field st_other support,

Jack Carter jcarter at mips.com
Tue Feb 19 14:29:00 PST 2013


Author: jacksprat
Date: Tue Feb 19 16:29:00 2013
New Revision: 175569

URL: http://llvm.org/viewvc/llvm-project?rev=175569&view=rev
Log:
ELF symbol table field st_other support, 
excluding visibility bits.

Mips (o32 abi) specific e_header setting.

EF_MIPS_ABI_O32 needs to be set in the 
ELF header flags for o32 abi output.

Contributer: Reed Kotler

Modified:
    llvm/trunk/include/llvm/Support/ELF.h
    llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
    llvm/trunk/test/MC/Mips/elf_eflags.ll

Modified: llvm/trunk/include/llvm/Support/ELF.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/ELF.h?rev=175569&r1=175568&r2=175569&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/ELF.h (original)
+++ llvm/trunk/include/llvm/Support/ELF.h Tue Feb 19 16:29:00 2013
@@ -738,6 +738,7 @@ enum {
   EF_MIPS_NOREORDER = 0x00000001, // Don't reorder instructions
   EF_MIPS_PIC       = 0x00000002, // Position independent code
   EF_MIPS_CPIC      = 0x00000004, // Call object with Position independent code
+  EF_MIPS_ABI_O32   = 0x00001000, // This file follows the first MIPS 32 bit ABI
 
   //ARCH_ASE
   EF_MIPS_MICROMIPS = 0x02000000, // microMIPS

Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp?rev=175569&r1=175568&r2=175569&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp Tue Feb 19 16:29:00 2013
@@ -54,6 +54,10 @@ namespace llvm {
     if (Subtarget.inMicroMipsMode())
       EFlags |= ELF::EF_MIPS_MICROMIPS;
 
+    // ABI
+    if (Subtarget.isABI_O32())
+      EFlags |= ELF::EF_MIPS_ABI_O32;
+
     // Relocation Model
     Reloc::Model RM = Subtarget.getRelocationModel();
     if (RM == Reloc::PIC_ || RM == Reloc::Default)

Modified: llvm/trunk/test/MC/Mips/elf_eflags.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/elf_eflags.ll?rev=175569&r1=175568&r2=175569&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/elf_eflags.ll (original)
+++ llvm/trunk/test/MC/Mips/elf_eflags.ll Tue Feb 19 16:29:00 2013
@@ -28,22 +28,22 @@
 ; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+mips16 -relocation-model=pic %s -o - | elf-dump --dump-section-data  | FileCheck -check-prefix=CHECK-LE32R2-MIPS16 %s
  
 ; 32(R1) bit with NO_REORDER and static
-; CHECK-BE32: ('e_flags', 0x50000001)
+; CHECK-BE32: ('e_flags', 0x50001001)
 ;
 ; 32(R1) bit with NO_REORDER and PIC
-; CHECK-BE32_PIC: ('e_flags', 0x50000003)
+; CHECK-BE32_PIC: ('e_flags', 0x50001003)
 ;
 ; 32R2 bit with NO_REORDER and static
-; CHECK-BE32R2: ('e_flags', 0x70000001)
+; CHECK-BE32R2: ('e_flags', 0x70001001)
 ;
 ; 32R2 bit with NO_REORDER and PIC
-; CHECK-BE32R2_PIC: ('e_flags', 0x70000003)
+; CHECK-BE32R2_PIC: ('e_flags', 0x70001003)
 ;
 ; 32R2 bit MICROMIPS with NO_REORDER and static
-; CHECK-BE32R2-MICROMIPS: ('e_flags', 0x72000001)
+; CHECK-BE32R2-MICROMIPS: ('e_flags', 0x72001001)
 ;
 ; 32R2 bit MICROMIPS with NO_REORDER and PIC
-;CHECK-BE32R2-MICROMIPS_PIC:  ('e_flags', 0x72000003)
+;CHECK-BE32R2-MICROMIPS_PIC:  ('e_flags', 0x72001003)
 ;
 ; 64(R1) bit with NO_REORDER and static
 ; CHECK-BE64: ('e_flags', 0x60000001)
@@ -58,7 +58,7 @@
 ; CHECK-BE64R2_PIC: ('e_flags', 0x80000003)
 ;
 ; 32R2 bit MIPS16 with PIC
-; CHECK-LE32R2-MIPS16: ('e_flags', 0x74000002)
+; CHECK-LE32R2-MIPS16: ('e_flags', 0x74001002)
  
 define i32 @main() nounwind {
 entry:





More information about the llvm-commits mailing list