1d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//===- MipsGNUInfo.h ------------------------------------------------------===//
2d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//
3d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//                     The MCLinker Project
4d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//
5d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao// This file is distributed under the University of Illinois Open Source
6d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao// License. See LICENSE.TXT for details.
7d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//
8d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//===----------------------------------------------------------------------===//
937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#ifndef TARGET_MIPS_MIPSGNUINFO_H_
1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define TARGET_MIPS_MIPSGNUINFO_H_
1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Target/GNUInfo.h"
12d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
1337b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include <llvm/Support/ELF.h>
14d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liaonamespace mcld {
15d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
1637b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass MipsGNUInfo : public GNUInfo {
1737b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
1837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  explicit MipsGNUInfo(const llvm::Triple& pTriple);
1987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
2087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  void setABIVersion(uint8_t ver);
21b0d0eb206527b43c771933602e147bbd7b471082Stephen Hines  void setElfFlags(uint64_t flags);
2287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
2387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  // GNUInfo
2487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  uint32_t machine() const;
2587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  uint8_t ABIVersion() const;
2687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  uint64_t defaultTextSegmentAddr() const;
2787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  uint64_t flags() const;
2887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  const char* entry() const;
2987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  const char* dyld() const;
3087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  uint64_t abiPageSize() const;
3187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
3237b74a387bb3993387029859c2d9d051c41c724eStephen Hines private:
3387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  uint8_t m_ABIVersion;
34b0d0eb206527b43c771933602e147bbd7b471082Stephen Hines  uint64_t m_ElfFlags;
35d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao};
36d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
3737b74a387bb3993387029859c2d9d051c41c724eStephen Hines}  // namespace mcld
38d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
3937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif  // TARGET_MIPS_MIPSGNUINFO_H_
40