| /* |
| * Copyright (c) 2001, 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 sun.jvm.hotspot.debugger.posix.elf; |
| |
| public interface ELFSectionHeader { |
| /** Undefined section header index. */ |
| public static final int NDX_UNDEFINED = 0; |
| /** Lower bound section header index. */ |
| public static final int NDX_LORESERVE = 0xff00; |
| /** Lower bound section header index reserved for processor specific |
| * semantics. */ |
| public static final int NDX_LOPROC = 0xff00; |
| /** Upper bound section header index reserved for processor specific |
| * semantics. */ |
| public static final int NDX_HIPROC = 0xff1f; |
| /** Absolute values for the corresponding reference. Symbols defined |
| * relative to section number NDX_ABS have absolute values and are not |
| * affected by relocation. */ |
| public static final int NDX_ABS = 0xfff1; |
| /** Symbols defined relative to this section are common symbols, such |
| * as FORTRAN, COMMON or unallocated C external variables. */ |
| public static final int NDX_COMMON = 0xfff2; |
| /** Upper bound section header index. */ |
| public static final int NDX_HIRESERVE = 0xffff; |
| |
| /** Section is inactive. */ |
| public static final int TYPE_NULL = 0; |
| /** Section holds information defined by the program. */ |
| public static final int TYPE_PROGBITS = 1; |
| /** Section holds symbol table information for link editing. It may also |
| * be used to store symbols for dynamic linking. */ |
| public static final int TYPE_SYMTBL = 2; |
| /** Section holds string table information. */ |
| public static final int TYPE_STRTBL = 3; |
| /** Section holds relocation entries with explicit addends. */ |
| public static final int TYPE_RELO_EXPLICIT = 4; |
| /** Section holds symbol hash table. */ |
| public static final int TYPE_HASH = 5; |
| /** Section holds information for dynamic linking. */ |
| public static final int TYPE_DYNAMIC = 6; |
| /** Section holds information that marks the file. */ |
| public static final int TYPE_NOTE = 7; |
| /** Section occupies no space but resembles TYPE_PROGBITS. */ |
| public static final int TYPE_NOBITS = 8; |
| /** Section holds relocation entries without explicit addends. */ |
| public static final int TYPE_RELO = 9; |
| /** Section is reserved but has unspecified semantics. */ |
| public static final int TYPE_SHLIB = 10; |
| /** Section holds a minimum set of dynamic linking symbols. */ |
| public static final int TYPE_DYNSYM = 11; |
| /** Lower bound section type that contains processor specific semantics. */ |
| public static final int TYPE_LOPROC = 0x70000000; |
| /** Upper bound section type that contains processor specific semantics. */ |
| public static final int TYPE_HIPROC = 0x7fffffff; |
| /** Lower bound of the range of indexes reserved for application |
| * programs. */ |
| public static final int TYPE_LOUSER = 0x80000000; |
| /** Upper bound of the range of indexes reserved for application |
| * programs. */ |
| public static final int TYPE_HIUSER = 0xffffffff; |
| |
| /** Flag informing that this section contains data that should be writable |
| * during process execution. */ |
| public static final int FLAG_WRITE = 0x1; |
| /** Flag informing that section occupies memory during process |
| * execution. */ |
| public static final int FLAG_ALLOC = 0x2; |
| /** Flag informaing that section contains executable machine |
| * instructions. */ |
| public static final int FLAG_EXEC_INSTR = 0x4; |
| /** Flag informing that all the bits in the mask are reserved for processor |
| * specific semantics. */ |
| public static final int FLAG_MASK = 0xf0000000; |
| |
| /** Section header name identifying the section as a string table. */ |
| public static final String STRING_TABLE_NAME = ".strtab"; |
| /** Section header name identifying the section as a dynamic string |
| * table. */ |
| public static final String DYNAMIC_STRING_TABLE_NAME = ".dynstr"; |
| /** Returns the type of section header. */ |
| public int getType(); |
| /** Returns the number of symbols in this section or 0 if none. */ |
| public int getNumberOfSymbols(); |
| /** Returns the symbol at the specified index. The ELF symbol at index 0 |
| * is the undefined symbol. */ |
| public ELFSymbol getELFSymbol(int index); |
| /** Returns the string table for this section or null if one does not |
| * exist. */ |
| public ELFStringTable getStringTable(); |
| /** Returns the hash table for this section or null if one does not |
| * exist. NOTE: currently the ELFHashTable does not work and this method |
| * will always return null. */ |
| public ELFHashTable getHashTable(); |
| public int getLink(); |
| /** Returns the name of the section or null if the section has no name. */ |
| public String getName(); |
| /** Returns the offset in bytes to the beginning of the section. */ |
| public int getOffset(); |
| } |