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//===----------------------------------------------------------------------===//
9551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#ifndef TARGET_X86_X86GNUINFO_H
10551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#define TARGET_X86_X86GNUINFO_H
11d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao#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
176f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinesclass X86_32GNUInfo : public GNUInfo
18d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao{
19d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liaopublic:
206f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  X86_32GNUInfo(const llvm::Triple& pTriple) : GNUInfo(pTriple) { }
21d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
22d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao  uint32_t machine() const { return llvm::ELF::EM_386; }
23d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
246f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint64_t defaultTextSegmentAddr() const { return 0x08048000; }
256f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
266f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  /// flags - the value of ElfXX_Ehdr::e_flags
276f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  /// FIXME
286f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint64_t flags() const { return 0x0; }
296f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
306f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines};
316f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
326f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinesclass X86_64GNUInfo : public GNUInfo
336f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines{
346f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinespublic:
356f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  X86_64GNUInfo(const llvm::Triple& pTriple) : GNUInfo(pTriple) { }
366f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
376f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint32_t machine() const { return llvm::ELF::EM_X86_64; }
386f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
396f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint64_t defaultTextSegmentAddr() const { return 0x400000; }
406f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
416f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  /// flags - the value of ElfXX_Ehdr::e_flags
426f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  /// FIXME
436f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint64_t flags() const { return 0x0; }
446f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
45d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao};
46d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
47d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao} // namespace of mcld
48d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
49d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao#endif
50d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
51