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
11#include "mcld/Script/Operand.h"
12#include "mcld/Target/TargetLDBackend.h"
13
14namespace mcld {
15//===----------------------------------------------------------------------===//
16// NullaryOp
17//===----------------------------------------------------------------------===//
18template <>
19IntOperand* NullaryOp<Operator::SIZEOF_HEADERS>::eval(
20    const Module& pModule,
21    const TargetLDBackend& pBackend) {
22  IntOperand* res = result();
23  res->setValue(pBackend.sectionStartOffset());
24  return res;
25}
26
27template <>
28IntOperand* NullaryOp<Operator::MAXPAGESIZE>::eval(
29    const Module& pModule,
30    const TargetLDBackend& pBackend) {
31  IntOperand* res = result();
32  res->setValue(pBackend.abiPageSize());
33  return res;
34}
35
36template <>
37IntOperand* NullaryOp<Operator::COMMONPAGESIZE>::eval(
38    const Module& pModule,
39    const TargetLDBackend& pBackend) {
40  IntOperand* res = result();
41  res->setValue(pBackend.commonPageSize());
42  return res;
43}
44
45}  // namespace mcld
46