1 /* Configuration of lookup functions. PowerPC version. 2 Copyright (C) 2022 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #define DL_FIXUP_VALUE_TYPE ElfW(Addr) 20 #define DL_FIXUP_MAKE_VALUE(map, addr) (addr) 21 #define DL_FIXUP_VALUE_CODE_ADDR(value) (value) 22 #define DL_FIXUP_VALUE_ADDR(value) (value) 23 #define DL_FIXUP_ADDR_VALUE(addr) (addr) 24 #if __WORDSIZE == 64 && _CALL_ELF == 1 25 /* We need to correctly set the audit modules value for bind-now. */ 26 # define DL_FIXUP_BINDNOW_ADDR_VALUE(addr) \ 27 (((Elf64_FuncDesc *)(addr))->fd_func) 28 # define DL_FIXUP_BINDNOW_RELOC(value, new_value, st_value) \ 29 ({ \ 30 Elf64_FuncDesc *opd = (Elf64_FuncDesc *) (value); \ 31 opd->fd_func = (st_value); \ 32 if ((new_value) != (uintptr_t) (st_value)) \ 33 opd->fd_toc = ((Elf64_FuncDesc *)(new_value))->fd_toc; \ 34 }) 35 #else 36 # define DL_FIXUP_BINDNOW_ADDR_VALUE(addr) (addr) 37 # define DL_FIXUP_BINDNOW_RELOC(value, new_value, st_value) \ 38 (*value) = st_value; 39 #endif 40