elfextract.h revision 3236
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
*/
#ifndef _ELFEXTRACT_H
#define _ELFEXTRACT_H
#include <sys/types.h>
#include <liblist.h>
#include <Python.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef MIN
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#endif
typedef struct dyninfo {
off_t runpath; /* offset in table of the runpath */
off_t def; /* offset in table of the vdefname */
off_t dynstr; /* string table */
liblist_t *deps; /* dependency list (also contains */
/* offsets) */
liblist_t *vers; /* version provided list (also */
/* contains offsets) */
Elf *elf; /* elf data -- must be freed */
} dyninfo_t;
typedef struct hashinfo {
unsigned char hash[20]; /* SHA1 Hash of significant segs. */
unsigned char hash256[32]; /* SHA2 Hash of significant segs. */
} hashinfo_t;
typedef struct hdrinfo {
int type; /* e_type */
int bits; /* 32/64 */
int arch; /* e_machine */
int data; /* e_ident[EI_DATA] */
int osabi; /* e_ident[EI_OSABI] */
} hdrinfo_t;
extern int iself(int fd);
extern int iself32(int fd);
extern dyninfo_t *getdynamic(int fd);
extern hashinfo_t *gethashes(int fd, int sha1, int sha256);
extern void dyninfo_free(dyninfo_t *dyn);
extern hdrinfo_t *getheaderinfo(int fd);
extern char *pkg_string_from_type(int type);
extern char *pkg_string_from_arch(int arch);
extern char *pkg_string_from_data(int data);
extern char *pkg_string_from_osabi(int osabi);
PyObject *ElfError;
#ifdef __cplusplus
}
#endif
#endif /* _ELFEXTRACT_H */