1*5225e6b1SAndroid Build Coastguard Worker /* 2*5225e6b1SAndroid Build Coastguard Worker * Copyright (C) 2023 The Android Open Source Project 3*5225e6b1SAndroid Build Coastguard Worker * 4*5225e6b1SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*5225e6b1SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*5225e6b1SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*5225e6b1SAndroid Build Coastguard Worker * 8*5225e6b1SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*5225e6b1SAndroid Build Coastguard Worker * 10*5225e6b1SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*5225e6b1SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*5225e6b1SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*5225e6b1SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*5225e6b1SAndroid Build Coastguard Worker * limitations under the License. 15*5225e6b1SAndroid Build Coastguard Worker */ 16*5225e6b1SAndroid Build Coastguard Worker 17*5225e6b1SAndroid Build Coastguard Worker #pragma once 18*5225e6b1SAndroid Build Coastguard Worker 19*5225e6b1SAndroid Build Coastguard Worker // Check .dynamic section in an ELF and apply necessary relocation. 20*5225e6b1SAndroid Build Coastguard Worker // 21*5225e6b1SAndroid Build Coastguard Worker // The API assumes that program_base and dynamic section address are properly aligned. 22*5225e6b1SAndroid Build Coastguard Worker // For 64bit applications, alignment should be at least multiple of 8bytes. 23*5225e6b1SAndroid Build Coastguard Worker // 24*5225e6b1SAndroid Build Coastguard Worker // @program_base: Absolute address the program loaded to. 25*5225e6b1SAndroid Build Coastguard Worker // @dynamic_section: Absolute address of the dynamic section 26*5225e6b1SAndroid Build Coastguard Worker // 27*5225e6b1SAndroid Build Coastguard Worker // Return true on success. 28*5225e6b1SAndroid Build Coastguard Worker extern "C" bool ApplyRelocation(uintptr_t program_base, uintptr_t dynamic_section); 29