StubLayout.h revision e2cdbc6710aa43475f17e73aba143ceb786e968c
1e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao/*
2e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * Copyright 2011, The Android Open Source Project
3e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao *
4e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * Licensed under the Apache License, Version 2.0 (the "License");
5e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * you may not use this file except in compliance with the License.
6e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * You may obtain a copy of the License at
7e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao *
8e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao *     http://www.apache.org/licenses/LICENSE-2.0
9e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao *
10e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * Unless required by applicable law or agreed to in writing, software
11e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * distributed under the License is distributed on an "AS IS" BASIS,
12e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * See the License for the specific language governing permissions and
14e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * limitations under the License.
15e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao */
16e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao
17a3e9806ff102d256d38bd930d537c206adc8bb6cLogan Chien#ifndef STUB_LAYOUT_H
1845587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien#define STUB_LAYOUT_H
1945587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien
2045587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien#include <stdlib.h>
2145587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien
2245587de75f78eb78b400e733d47b6e7d702b55b4Logan Chienclass StubLayout {
2345587de75f78eb78b400e733d47b6e7d702b55b4Logan Chienprivate:
2445587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien  unsigned char *table;
252061b057e0922ac33b9314c1ccaa50eb7286b847Logan Chien  size_t count;
2645587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien
2745587de75f78eb78b400e733d47b6e7d702b55b4Logan Chienpublic:
2845587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien  StubLayout();
2945587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien
302061b057e0922ac33b9314c1ccaa50eb7286b847Logan Chien  void initStubTable(unsigned char *table, size_t count);
3145587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien  void *allocateStub(void *addr = 0);
322061b057e0922ac33b9314c1ccaa50eb7286b847Logan Chien
332061b057e0922ac33b9314c1ccaa50eb7286b847Logan Chien  size_t calcStubTableSize(size_t count) const;
3445587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien
3545587de75f78eb78b400e733d47b6e7d702b55b4Logan Chienprivate:
3645587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien  void setStubAddress(void *stub, void *addr);
3745587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien
3845587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien};
3945587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien
4045587de75f78eb78b400e733d47b6e7d702b55b4Logan Chien#endif // STUB_LAYOUT_H
41