1d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//===- X86GNUInfo.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_X86_X86GNUINFO_H_
1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define TARGET_X86_X86GNUINFO_H_
1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Target/GNUInfo.h"
12d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
13d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao#include <llvm/Support/ELF.h>
14d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
15d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liaonamespace mcld {
16d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
1737b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass X86_32GNUInfo : public GNUInfo {
1837b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
1937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  explicit X86_32GNUInfo(const llvm::Triple& pTriple) : GNUInfo(pTriple) {}
20d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
21d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao  uint32_t machine() const { return llvm::ELF::EM_386; }
22d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
236f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint64_t defaultTextSegmentAddr() const { return 0x08048000; }
246f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
256f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  /// flags - the value of ElfXX_Ehdr::e_flags
266f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  /// FIXME
276f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint64_t flags() const { return 0x0; }
286f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines};
296f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
3037b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass X86_64GNUInfo : public GNUInfo {
3137b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
3237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  explicit X86_64GNUInfo(const llvm::Triple& pTriple) : GNUInfo(pTriple) {}
336f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
346f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint32_t machine() const { return llvm::ELF::EM_X86_64; }
356f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
366f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint64_t defaultTextSegmentAddr() const { return 0x400000; }
376f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
386f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  /// flags - the value of ElfXX_Ehdr::e_flags
396f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  /// FIXME
406f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint64_t flags() const { return 0x0; }
41d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao};
42d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
4337b74a387bb3993387029859c2d9d051c41c724eStephen Hines}  // namespace mcld
44d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
4537b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif  // TARGET_X86_X86GNUINFO_H_
46