26package org.jau.sys.elf;
28import org.jau.io.Buffers;
29import org.jau.io.StructAccessor;
30import org.jau.sys.MachineDataInfo;
36 private final int mdIdx;
39 private static final int[] Shdr_size =
new int[] { 40 , 40 , 40 , 40 , 40 , 40 , 64 , 64 };
40 private static final int[] sh_name_offset =
new int[] { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 };
42 private static final int[] sh_type_offset =
new int[] { 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 };
44 private static final int[] sh_flags_offset =
new int[] { 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 };
46 private static final int[] sh_addr_offset =
new int[] { 12 , 12 , 12 , 12 , 12 , 12 , 16 , 16 };
48 private static final int[] sh_offset_offset =
new int[] { 16 , 16 , 16 , 16 , 16 , 16 , 24 , 24 };
50 private static final int[] sh_size_offset =
new int[] { 20 , 20 , 20 , 20 , 20 , 20 , 32 , 32 };
52 private static final int[] sh_link_offset =
new int[] { 24 , 24 , 24 , 24 , 24 , 24 , 40 , 40 };
54 private static final int[] sh_info_offset =
new int[] { 28 , 28 , 28 , 28 , 28 , 28 , 44 , 44 };
56 private static final int[] sh_addralign_offset =
new int[] { 32 , 32 , 32 , 32 , 32 , 32 , 48 , 48 };
58 private static final int[] sh_entsize_offset =
new int[] { 36 , 36 , 36 , 36 , 36 , 36 , 56 , 56 };
62 return accessor.getBuffer();
67 accessor.setIntAt(sh_name_offset[mdIdx], val);
73 return accessor.getIntAt(sh_name_offset[mdIdx]);
78 accessor.setIntAt(sh_type_offset[mdIdx], val);
84 return accessor.getIntAt(sh_type_offset[mdIdx]);
89 accessor.setLongAt(sh_flags_offset[mdIdx], val, md.longSizeInBytes());
95 return accessor.getLongAt(sh_flags_offset[mdIdx], md.longSizeInBytes());
100 accessor.setLongAt(sh_addr_offset[mdIdx], val, md.longSizeInBytes());
106 return accessor.getLongAt(sh_addr_offset[mdIdx], md.longSizeInBytes());
111 accessor.setLongAt(sh_offset_offset[mdIdx], val, md.longSizeInBytes());
117 return accessor.getLongAt(sh_offset_offset[mdIdx], md.longSizeInBytes());
122 accessor.setLongAt(sh_size_offset[mdIdx], val, md.longSizeInBytes());
128 return accessor.getLongAt(sh_size_offset[mdIdx], md.longSizeInBytes());
133 accessor.setIntAt(sh_link_offset[mdIdx], val);
139 return accessor.getIntAt(sh_link_offset[mdIdx]);
144 accessor.setIntAt(sh_info_offset[mdIdx], val);
150 return accessor.getIntAt(sh_info_offset[mdIdx]);
155 accessor.setLongAt(sh_addralign_offset[mdIdx], val, md.longSizeInBytes());
161 return accessor.getLongAt(sh_addralign_offset[mdIdx], md.longSizeInBytes());
166 accessor.setLongAt(sh_entsize_offset[mdIdx], val, md.longSizeInBytes());
172 return accessor.getLongAt(sh_entsize_offset[mdIdx], md.longSizeInBytes());
176 public static int size(
final int mdIdx) {
177 return Shdr_size[mdIdx];
180 public static Shdr
create(
final int mdIdx) {
184 public static Shdr
create(
final int mdIdx,
final java.nio.ByteBuffer buf) {
185 return new Shdr(mdIdx, buf);
188 Shdr(
final int mdIdx,
final java.nio.ByteBuffer buf) {
Utility methods allowing easy java.nio.Buffer manipulations.
static ByteBuffer newDirectByteBuffer(final int size)
Allocates a new direct ByteBuffer with the specified number of elements.
Machine data description for alignment and size onle, see com.jogamp.gluegen.
int getSh_name()
Getter for native field: CType['uint32_t', size [fixed true, lnx64 4], [int]].
static int size(final int mdIdx)
long getSh_addr()
Getter for native field: CType['ElfN_Addr' (typedef), size [fixed false, lnx64 8],...
Shdr setSh_info(final int val)
Setter for native field: CType['uint32_t', size [fixed true, lnx64 4], [int]].
Shdr setSh_name(final int val)
Setter for native field: CType['uint32_t', size [fixed true, lnx64 4], [int]].
long getSh_flags()
Getter for native field: CType['ElfN_size' (typedef), size [fixed false, lnx64 8],...
Shdr setSh_addralign(final long val)
Setter for native field: CType['ElfN_size' (typedef), size [fixed false, lnx64 8],...
Shdr setSh_entsize(final long val)
Setter for native field: CType['ElfN_size' (typedef), size [fixed false, lnx64 8],...
long getSh_entsize()
Getter for native field: CType['ElfN_size' (typedef), size [fixed false, lnx64 8],...
Shdr setSh_flags(final long val)
Setter for native field: CType['ElfN_size' (typedef), size [fixed false, lnx64 8],...
Shdr setSh_addr(final long val)
Setter for native field: CType['ElfN_Addr' (typedef), size [fixed false, lnx64 8],...
Shdr setSh_link(final int val)
Setter for native field: CType['uint32_t', size [fixed true, lnx64 4], [int]].
int getSh_info()
Getter for native field: CType['uint32_t', size [fixed true, lnx64 4], [int]].
Shdr setSh_size(final long val)
Setter for native field: CType['ElfN_size' (typedef), size [fixed false, lnx64 8],...
int getSh_link()
Getter for native field: CType['uint32_t', size [fixed true, lnx64 4], [int]].
java.nio.ByteBuffer getBuffer()
Shdr setSh_offset(final long val)
Setter for native field: CType['ElfN_Off' (typedef), size [fixed false, lnx64 8], [int]].
static Shdr create(final int mdIdx)
long getSh_size()
Getter for native field: CType['ElfN_size' (typedef), size [fixed false, lnx64 8],...
long getSh_addralign()
Getter for native field: CType['ElfN_size' (typedef), size [fixed false, lnx64 8],...
int getSh_type()
Getter for native field: CType['uint32_t', size [fixed true, lnx64 4], [int]].
static Shdr create(final int mdIdx, final java.nio.ByteBuffer buf)
long getSh_offset()
Getter for native field: CType['ElfN_Off' (typedef), size [fixed false, lnx64 8], [int]].
Shdr setSh_type(final int val)
Setter for native field: CType['uint32_t', size [fixed true, lnx64 4], [int]].
Static enumeration of MachineDataInfo instances used for high performance data size and alignment loo...