1//===- NullaryOp.cpp ------------------------------------------------------===//
2//
3//                     The MCLinker Project
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9#include <mcld/Script/NullaryOp.h>
10#include <mcld/Script/Operand.h>
11#include <mcld/Target/TargetLDBackend.h>
12
13using namespace mcld;
14//===----------------------------------------------------------------------===//
15// NullaryOp
16//===----------------------------------------------------------------------===//
17template<>
18IntOperand*
19NullaryOp<Operator::SIZEOF_HEADERS>::eval(const Module& pModule,
20                                          const TargetLDBackend& pBackend)
21{
22  IntOperand* res = result();
23  res->setValue(pBackend.sectionStartOffset());
24  return res;
25}
26
27template<>
28IntOperand*
29NullaryOp<Operator::MAXPAGESIZE>::eval(const Module& pModule,
30                                       const TargetLDBackend& pBackend)
31{
32  IntOperand* res = result();
33  res->setValue(pBackend.abiPageSize());
34  return res;
35}
36
37template<>
38IntOperand*
39NullaryOp<Operator::COMMONPAGESIZE>::eval(const Module& pModule,
40                                          const TargetLDBackend& pBackend)
41{
42  IntOperand* res = result();
43  res->setValue(pBackend.commonPageSize());
44  return res;
45}
46