Skip to content
  1. Jun 28, 2012
    • Jack Carter's avatar
      The ELF relocation record format is different for N64 · 8ad0c272
      Jack Carter authored
      which many Mips 64 ABIs use than for O64 which many 
      if not all other target ABIs use.
      
      Most architectures have the following 64 bit relocation record format:
      
        typedef struct
        {
          Elf64_Addr   r_offset; /* Address of reference */
          Elf64_Xword  r_info;   /* Symbol index and type of relocation */
        } Elf64_Rel;
      
        typedef struct
        {
          Elf64_Addr    r_offset;
          Elf64_Xword   r_info;
          Elf64_Sxword  r_addend;
        } Elf64_Rela;
      
      Whereas N64 has the following format:
      
        typedef struct
        {
          Elf64_Addr    r_offset;/* Address of reference */
          Elf64_Word  r_sym;     /* Symbol index */
          Elf64_Byte  r_ssym;    /* Special symbol */
          Elf64_Byte  r_type3;   /* Relocation type */
          Elf64_Byte  r_type2;   /* Relocation type */
          Elf64_Byte  r_type;    /* Relocation type */
        } Elf64_Rel;
      
        typedef struct
        {
          Elf64_Addr    r_offset;/* Address of reference */
          Elf64_Word  r_sym;     /* Symbol index */
          Elf64_Byte  r_ssym;    /* Special symbol */
          Elf64_Byte  r_type3;   /* Relocation type */
          Elf64_Byte  r_type2;   /* Relocation type */
          Elf64_Byte  r_type;    /* Relocation type */
          Elf64_Sxword  r_addend;
        } Elf64_Rela;
      
      The structure is the same size, but the r_info data element 
      is now 5 separate elements. Besides the content aspects, 
      endian byte reordering will be different for the area with 
      each element being endianized separately.
      
      I treat this as generic and continue to pass r_type as 
      an integer masking and unmasking the byte sized N64 
      values for N64 mode. I've implemented this and it causes no 
      affect on other current targets.
      
      This passes make check.
      
      Jack
      
      llvm-svn: 159299
      8ad0c272
  2. Jun 27, 2012
  3. Jun 24, 2012
  4. Jun 21, 2012
    • Akira Hatanaka's avatar
      1. fix null program output after some other changes · 765c3123
      Akira Hatanaka authored
      2. re-enable null.ll test
      3. fix some minor style violations
      
      Patch by Reed Kotler.
      
      llvm-svn: 158935
      765c3123
    • Jack Carter's avatar
      The inline asm operand modifier 'c' is suppose · b2fd5f66
      Jack Carter authored
      to be generic across architectures. It has the
      following description in the gnu sources:
      
          Substitute immediate value without immediate syntax
      
      Several Architectures such as x86 have local implementations
      of operand modifier 'c' which go beyond the above description
      slightly. To make use of the generic modifiers without overriding
      local implementation one can make a call to the base class method
      for AsmPrinter::PrintAsmOperand() in the locally derived method's 
      "default" case in the switch statement. That way if it is already
      defined locally the generic version will never get called.
      
      This change is needed when test/CodeGen/generic/asm-large-immediate.ll
      failed on a native Mips board. The test was assuming a generic
      implementation was in place.
      
      Affected files:
      
          lib/Target/Mips/MipsAsmPrinter.cpp:
              Changed the default case to call the base method.
          lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
              Added 'c' to the switch cases.
          test/CodeGen/Mips/asm-large-immediate.ll
              Mips compiled version of the generic one
      
      Contributer: Jack Carter
      llvm-svn: 158925
      b2fd5f66
  5. Jun 20, 2012
  6. Jun 19, 2012
  7. Jun 16, 2012
  8. Jun 14, 2012
  9. Jun 13, 2012
  10. Jun 09, 2012
  11. Jun 04, 2012
  12. Jun 02, 2012
Loading