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