--- old/src/jdk.aot/share/classes/jdk.tools.jaotc.jnilibelf/src/jdk/tools/jaotc/jnilibelf/JNIELFRelocation.java 2017-02-08 13:40:11.069276447 -0500 +++ /dev/null 2016-12-30 14:52:30.584485998 -0500 @@ -1,148 +0,0 @@ -/* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package jdk.tools.jaotc.jnilibelf; - -/** - * Class that abstracts ELF relocations. - * - */ -public interface JNIELFRelocation { - int R_UNDEF = -1; - - /** - * x86-specific relocation types. - * - */ - public interface I386 { - /* i386 relocs. */ - - int R_386_NONE = 0; /* No reloc */ - int R_386_32 = 1; /* Direct 32 bit */ - int R_386_PC32 = 2; /* PC relative 32 bit */ - int R_386_GOT32 = 3; /* 32 bit GOT entry */ - int R_386_PLT32 = 4; /* 32 bit PLT address */ - int R_386_COPY = 5; /* Copy symbol at runtime */ - int R_386_GLOB_DAT = 6; /* Create GOT entry */ - int R_386_JMP_SLOT = 7; /* Create PLT entry */ - int R_386_RELATIVE = 8; /* Adjust by program base */ - int R_386_GOTOFF = 9; /* 32 bit offset to GOT */ - int R_386_GOTPC = 10; /* 32 bit PC relative offset to GOT */ - int R_386_32PLT = 11; - int R_386_TLS_TPOFF = 14; /* Offset in static TLS block */ - int R_386_TLS_IE = 15; /* Address of GOT entry for static TLS block offset */ - int R_386_TLS_GOTIE = 16; /* GOT entry for static TLS block offset */ - int R_386_TLS_LE = 17; /* Offset relative to static TLS block */ - int R_386_TLS_GD = 18; /* Direct 32 bit for GNU version of general dynamic thread local data */ - int R_386_TLS_LDM = 19; /* - * Direct 32 bit for GNU version of local dynamic thread local data - * in LE code - */ - int R_386_16 = 20; - int R_386_PC16 = 21; - int R_386_8 = 22; - int R_386_PC8 = 23; - int R_386_TLS_GD_32 = 24; /* Direct 32 bit for general dynamic thread local data */ - int R_386_TLS_GD_PUSH = 25; /* Tag for pushl in GD TLS code */ - int R_386_TLS_GD_CALL = 26; /* Relocation for call to __tls_get_addr() */ - int R_386_TLS_GD_POP = 27; /* Tag for popl in GD TLS code */ - int R_386_TLS_LDM_32 = 28; /* Direct 32 bit for local dynamic thread local data in LE code */ - int R_386_TLS_LDM_PUSH = 29; /* Tag for pushl in LDM TLS code */ - int R_386_TLS_LDM_CALL = 30; /* Relocation for call to __tls_get_addr() in LDM code */ - int R_386_TLS_LDM_POP = 31; /* Tag for popl in LDM TLS code */ - int R_386_TLS_LDO_32 = 32; /* Offset relative to TLS block */ - int R_386_TLS_IE_32 = 33; /* GOT entry for negated static TLS block offset */ - int R_386_TLS_LE_32 = 34; /* Negated offset relative to static TLS block */ - int R_386_TLS_DTPMOD32 = 35; /* ID of module containing symbol */ - int R_386_TLS_DTPOFF32 = 36; /* Offset in TLS block */ - int R_386_TLS_TPOFF32 = 37; /* Negated offset in static TLS block */ - int R_386_SIZE32 = 38; /* 32-bit symbol size */ - int R_386_TLS_GOTDESC = 39; /* GOT offset for TLS descriptor. */ - int R_386_TLS_DESC_CALL = 40; /* Marker of call through TLS descriptor for relaxation. */ - int R_386_TLS_DESC = 41; /* - * TLS descriptor containing pointer to code and to argument, - * returning the TLS offset for the symbol. - */ - int R_386_IRELATIVE = 42; /* Adjust indirectly by program base */ - /* Keep this the last entry. */ - int R_386_NUM = 43; - } - - /** - * x86_64-specific relocation types. - */ - public interface X86_64 { - /* AMD x86-64 relocations. */ - int R_X86_64_NONE = 0; /* No reloc */ - int R_X86_64_64 = 1; /* Direct 64 bit */ - int R_X86_64_PC32 = 2; /* PC relative 32 bit signed */ - int R_X86_64_GOT32 = 3; /* 32 bit GOT entry */ - int R_X86_64_PLT32 = 4; /* 32 bit PLT address */ - int R_X86_64_COPY = 5; /* Copy symbol at runtime */ - int R_X86_64_GLOB_DAT = 6; /* Create GOT entry */ - int R_X86_64_JUMP_SLOT = 7; /* Create PLT entry */ - int R_X86_64_RELATIVE = 8; /* Adjust by program base */ - int R_X86_64_GOTPCREL = 9; /* 32 bit signed PC relative offset to GOT */ - int R_X86_64_32 = 10; /* Direct 32 bit zero extended */ - int R_X86_64_32S = 11; /* Direct 32 bit sign extended */ - int R_X86_64_16 = 12; /* Direct 16 bit zero extended */ - int R_X86_64_PC16 = 13; /* 16 bit sign extended pc relative */ - int R_X86_64_8 = 14; /* Direct 8 bit sign extended */ - int R_X86_64_PC8 = 15; /* 8 bit sign extended pc relative */ - int R_X86_64_DTPMOD64 = 16; /* ID of module containing symbol */ - int R_X86_64_DTPOFF64 = 17; /* Offset in module's TLS block */ - int R_X86_64_TPOFF64 = 18; /* Offset in initial TLS block */ - int R_X86_64_TLSGD = 19; /* - * 32 bit signed PC relative offset to two GOT entries for GD - * symbol - */ - int R_X86_64_TLSLD = 20; /* - * 32 bit signed PC relative offset to two GOT entries for LD - * symbol - */ - int R_X86_64_DTPOFF32 = 21; /* Offset in TLS block */ - int R_X86_64_GOTTPOFF = 22; /* - * 32 bit signed PC relative offset to GOT entry for IE symbol - */ - int R_X86_64_TPOFF32 = 23; /* Offset in initial TLS block */ - int R_X86_64_PC64 = 24; /* PC relative 64 bit */ - int R_X86_64_GOTOFF64 = 25; /* 64 bit offset to GOT */ - int R_X86_64_GOTPC32 = 26; /* 32 bit signed pc relative offset to GOT */ - int R_X86_64_GOT64 = 27; /* 64-bit GOT entry offset */ - int R_X86_64_GOTPCREL64 = 28; /* 64-bit PC relative offset to GOT entry */ - int R_X86_64_GOTPC64 = 29; /* 64-bit PC relative offset to GOT */ - int R_X86_64_GOTPLT64 = 30; /* like GOT64, says PLT entry needed */ - int R_X86_64_PLTOFF64 = 31; /* 64-bit GOT relative offset to PLT entry */ - int R_X86_64_SIZE32 = 32; /* Size of symbol plus 32-bit addend */ - int R_X86_64_SIZE64 = 33; /* Size of symbol plus 64-bit addend */ - int R_X86_64_GOTPC32_TLSDESC = 34; /* GOT offset for TLS descriptor. */ - int R_X86_64_TLSDESC_CALL = 35; /* - * Marker for call through TLS descriptor. - */ - int R_X86_64_TLSDESC = 36; /* TLS descriptor. */ - int R_X86_64_IRELATIVE = 37; /* Adjust indirectly by program base */ - int R_X86_64_RELATIVE64 = 38; /* 64-bit adjust by program base */ - - int R_X86_64_NUM = 39; - } -}