[llvm-commits] [llvm] r162136 - in /llvm/trunk/lib/Target/Mips: MipsELFWriterInfo.cpp MipsELFWriterInfo.h
Bill Wendling
wendling at apple.com
Fri Aug 17 15:46:18 PDT 2012
Hi Akira,
There are some whitespace violations here. Mentioned inline:
On Aug 17, 2012, at 2:38 PM, Akira Hatanaka <ahatanaka at mips.com> wrote:
> Author: ahatanak
> Date: Fri Aug 17 16:38:47 2012
> New Revision: 162136
>
> URL: http://llvm.org/viewvc/llvm-project?rev=162136&view=rev
> Log:
> Add MipsELFWriterInfo.{h,cpp}.
>
> Added:
> llvm/trunk/lib/Target/Mips/MipsELFWriterInfo.cpp
> llvm/trunk/lib/Target/Mips/MipsELFWriterInfo.h
>
> Added: llvm/trunk/lib/Target/Mips/MipsELFWriterInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsELFWriterInfo.cpp?rev=162136&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsELFWriterInfo.cpp (added)
> +++ llvm/trunk/lib/Target/Mips/MipsELFWriterInfo.cpp Fri Aug 17 16:38:47 2012
> @@ -0,0 +1,92 @@
> +//===-- MipsELFWriterInfo.cpp - ELF Writer Info for the Mips backend --------===//
The above line is over 80 columns.
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +MipsELFWriterInfo::MipsELFWriterInfo(bool is64Bit_, bool isLittleEndian_)
> + : TargetELFWriterInfo(is64Bit_, isLittleEndian_) {
> + EMachine = EM_MIPS;
^ Two spaces please.
> + }
^ This should not have a space before it.
> +
> +MipsELFWriterInfo::~MipsELFWriterInfo() {}
> +
> +unsigned MipsELFWriterInfo::getRelocationType(unsigned MachineRelTy) const {
> + switch(MachineRelTy) {
^^ Two spaces please.
Etc. Please reformat when you get a chance. Thanks!
-bw
> + case Mips::reloc_mips_pc16:
> + return ELF::R_MIPS_GOT16;
> + case Mips::reloc_mips_hi:
> + return ELF::R_MIPS_HI16;
> + case Mips::reloc_mips_lo:
> + return ELF::R_MIPS_LO16;
> + case Mips::reloc_mips_26:
> + return ELF::R_MIPS_26;
> + default:
> + llvm_unreachable("unknown Mips machine relocation type");
> + }
> +}
> +
> +long int MipsELFWriterInfo::getDefaultAddendForRelTy(unsigned RelTy,
> + long int Modifier) const {
> + switch(RelTy) {
> + case ELF::R_MIPS_26: return Modifier;
> + default:
> + llvm_unreachable("unknown Mips relocation type");
> + }
> +}
> +
> +unsigned MipsELFWriterInfo::getRelocationTySize(unsigned RelTy) const {
> + switch(RelTy) {
> + case ELF::R_MIPS_GOT16:
> + case ELF::R_MIPS_26:
> + return 32;
> + default:
> + llvm_unreachable("unknown Mips relocation type");
> + }
> +}
> +
> +bool MipsELFWriterInfo::isPCRelativeRel(unsigned RelTy) const {
> + switch(RelTy) {
> + case ELF::R_MIPS_GOT16:
> + return true;
> + case ELF::R_MIPS_26:
> + return false;
> + default:
> + llvm_unreachable("unknown Mips relocation type");
> + }
> +}
> +
> +unsigned MipsELFWriterInfo::getAbsoluteLabelMachineRelTy() const {
> + return Mips::reloc_mips_26;
> +}
> +
> +long int MipsELFWriterInfo::computeRelocation(unsigned SymOffset,
> + unsigned RelOffset,
> + unsigned RelTy) const {
> +
> + if (RelTy == ELF::R_MIPS_GOT16)
> + return SymOffset - (RelOffset + 4);
> +
> + llvm_unreachable("computeRelocation unknown for this relocation type");
> +}
>
> Added: llvm/trunk/lib/Target/Mips/MipsELFWriterInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsELFWriterInfo.h?rev=162136&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsELFWriterInfo.h (added)
> +++ llvm/trunk/lib/Target/Mips/MipsELFWriterInfo.h Fri Aug 17 16:38:47 2012
> @@ -0,0 +1,59 @@
> +//===-- MipsELFWriterInfo.h - ELF Writer Info for Mips ------------*- C++ -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +//
> +// This file implements ELF writer information for the Mips backend.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +#ifndef MIPS_ELF_WRITER_INFO_H
> +#define MIPS_ELF_WRITER_INFO_H
> +
> +#include "llvm/Target/TargetELFWriterInfo.h"
> +
> +namespace llvm {
> +
> + class MipsELFWriterInfo : public TargetELFWriterInfo {
> +
> + public:
> + MipsELFWriterInfo(bool is64Bit_, bool isLittleEndian_);
> + virtual ~MipsELFWriterInfo();
> +
> + /// getRelocationType - Returns the target specific ELF Relocation type.
> + /// 'MachineRelTy' contains the object code independent relocation type
> + virtual unsigned getRelocationType(unsigned MachineRelTy) const;
> +
> + /// hasRelocationAddend - True if the target uses an addend in the
> + /// ELF relocation entry.
> + virtual bool hasRelocationAddend() const { return is64Bit ? true : false; }
> +
> + /// getDefaultAddendForRelTy - Gets the default addend value for a
> + /// relocation entry based on the target ELF relocation type.
> + virtual long int getDefaultAddendForRelTy(unsigned RelTy,
> + long int Modifier = 0) const;
> +
> + /// getRelTySize - Returns the size of relocatable field in bits
> + virtual unsigned getRelocationTySize(unsigned RelTy) const;
> +
> + /// isPCRelativeRel - True if the relocation type is pc relative
> + virtual bool isPCRelativeRel(unsigned RelTy) const;
> +
> + /// getJumpTableRelocationTy - Returns the machine relocation type used
> + /// to reference a jumptable.
> + virtual unsigned getAbsoluteLabelMachineRelTy() const;
> +
> + /// computeRelocation - Some relocatable fields could be relocated
> + /// directly, avoiding the relocation symbol emission, compute the
> + /// final relocation value for this symbol.
> + virtual long int computeRelocation(unsigned SymOffset, unsigned RelOffset,
> + unsigned RelTy) const;
> + };
> +
> +} // end llvm namespace
> +
> +#endif // MIPS_ELF_WRITER_INFO_H
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list