diff options
Diffstat (limited to 'cddl/contrib/opensolaris/cmd/sgs/include/sgs.h')
-rw-r--r-- | cddl/contrib/opensolaris/cmd/sgs/include/sgs.h | 296 |
1 files changed, 0 insertions, 296 deletions
diff --git a/cddl/contrib/opensolaris/cmd/sgs/include/sgs.h b/cddl/contrib/opensolaris/cmd/sgs/include/sgs.h deleted file mode 100644 index adfe5be36c65..000000000000 --- a/cddl/contrib/opensolaris/cmd/sgs/include/sgs.h +++ /dev/null @@ -1,296 +0,0 @@ -/* - * 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) 1988 AT&T - * All Rights Reserved - * - * - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - * - * Global include file for all sgs. - */ - -#ifndef _SGS_H -#define _SGS_H - -#pragma ident "%Z%%M% %I% %E% SMI" - -#ifdef __cplusplus -extern "C" { -#endif - -/* <assert.h> keys off of NDEBUG */ -#ifdef DEBUG -#undef NDEBUG -#else -#define NDEBUG -#endif - -#ifndef _ASM -#include <sys/types.h> -#ifdef illumos -#include <sys/machelf.h> -#else -#include <elf.h> -#endif -#include <stdlib.h> -#include <libelf.h> -#include <assert.h> -#include <alist.h> -#endif /* _ASM */ - -/* - * Software identification. - */ -#define SGS "" -#define SGU_PKG "Software Generation Utilities" -#define SGU_REL "(SGU) Solaris-ELF (4.0)" - - -#ifndef _ASM - -/* - * link_ver_string[] contains a version string for use by the link-editor - * and all other linker components. It is found in libconv, and is - * generated by sgs/libconv/common/bld_vernote.ksh. That script produces - * libconv/{plat}/vernote.s, which is in turn assembled/linked into - * libconv. - */ -extern const char link_ver_string[]; -/* - * Macro to round to next double word boundary. - */ -#define S_DROUND(x) (((x) + sizeof (double) - 1) & ~(sizeof (double) - 1)) - -/* - * General align and round macros. - */ -#define S_ALIGN(x, a) ((x) & ~(((a) ? (a) : 1) - 1)) -#define S_ROUND(x, a) ((x) + (((a) ? (a) : 1) - 1) & ~(((a) ? (a) : 1) - 1)) - -/* - * Bit manipulation macros; generic bit mask and is `v' in the range - * supportable in `n' bits? - */ -#define S_MASK(n) ((1 << (n)) -1) -#define S_INRANGE(v, n) (((-(1 << (n)) - 1) < (v)) && ((v) < (1 << (n)))) - - -/* - * Yet another definition of the OFFSETOF macro, used with the AVL routines. - */ -#define SGSOFFSETOF(s, m) ((size_t)(&(((s *)0)->m))) - -/* - * When casting between integer and pointer types, gcc will complain - * if the integer type used is not large enough to hold the pointer - * value without loss. Although a dubious practice in general, this - * is sometimes done by design. In those cases, the general solution - * is to introduce an intermediate cast to widen the integer value. The - * CAST_PTRINT macro does this, and its use documents the fact that - * the programmer is doing that sort of cast. - */ -#ifdef __GNUC__ -#define CAST_PTRINT(cast, value) ((cast)(uintptr_t)value) -#else -#define CAST_PTRINT(cast, value) ((cast)value) -#endif - -/* - * General typedefs. - */ -typedef enum { - FALSE = 0, - TRUE = 1 -} Boolean; - -/* - * Types of errors (used by eprintf()), together with a generic error return - * value. - */ -typedef enum { - ERR_NONE, - ERR_WARNING, - ERR_FATAL, - ERR_ELF, - ERR_NUM /* Must be last */ -} Error; - -#if defined(_LP64) && !defined(_ELF64) -#define S_ERROR (~(uint_t)0) -#else -#define S_ERROR (~(uintptr_t)0) -#endif - -/* - * LIST_TRAVERSE() is used as the only "argument" of a "for" loop to - * traverse a linked list. The node pointer `node' is set to each node in - * turn and the corresponding data pointer is copied to `data'. The macro - * is used as in - * for (LIST_TRAVERSE(List *list, Listnode *node, void *data)) { - * process(data); - * } - */ -#define LIST_TRAVERSE(L, N, D) \ - (void) (((N) = (L)->head) != NULL && ((D) = (N)->data) != NULL); \ - (N) != NULL; \ - (void) (((N) = (N)->next) != NULL && ((D) = (N)->data) != NULL) - -typedef struct listnode Listnode; -typedef struct list List; - -struct listnode { /* a node on a linked list */ - void *data; /* the data item */ - Listnode *next; /* the next element */ -}; - -struct list { /* a linked list */ - Listnode *head; /* the first element */ - Listnode *tail; /* the last element */ -}; - - -#ifdef _SYSCALL32 -typedef struct listnode32 Listnode32; -typedef struct list32 List32; - -struct listnode32 { /* a node on a linked list */ - Elf32_Addr data; /* the data item */ - Elf32_Addr next; /* the next element */ -}; - -struct list32 { /* a linked list */ - Elf32_Addr head; /* the first element */ - Elf32_Addr tail; /* the last element */ -}; -#endif /* _SYSCALL32 */ - - -/* - * Structure to maintain rejected files elf information. Files that are not - * applicable to the present link-edit are rejected and a search for an - * appropriate file may be resumed. The first rejected files information is - * retained so that a better error diagnostic can be given should an appropriate - * file not be located. - */ -typedef struct { - ushort_t rej_type; /* SGS_REJ_ value */ - ushort_t rej_flag; /* additional information */ - uint_t rej_info; /* numeric and string information */ - const char *rej_str; /* associated with error */ - const char *rej_name; /* object name - expanded library */ - /* name and archive members */ -} Rej_desc; - -#define SGS_REJ_NONE 0 -#define SGS_REJ_MACH 1 /* wrong ELF machine type */ -#define SGS_REJ_CLASS 2 /* wrong ELF class (32-bit/64-bit) */ -#define SGS_REJ_DATA 3 /* wrong ELF data format (MSG/LSB) */ -#define SGS_REJ_TYPE 4 /* bad ELF type */ -#define SGS_REJ_BADFLAG 5 /* bad ELF flags value */ -#define SGS_REJ_MISFLAG 6 /* mismatched ELF flags value */ -#define SGS_REJ_VERSION 7 /* mismatched ELF/lib version */ -#define SGS_REJ_HAL 8 /* HAL R1 extensions required */ -#define SGS_REJ_US3 9 /* Sun UltraSPARC III extensions */ - /* required */ -#define SGS_REJ_STR 10 /* generic error - info is a string */ -#define SGS_REJ_UNKFILE 11 /* unknown file type */ -#define SGS_REJ_HWCAP_1 12 /* hardware capabilities mismatch */ - -/* - * For those source files used both inside and outside of the - * libld source base (tools/common/string_table.c) we can - * automatically switch between the allocation models - * based off of the 'cc -DUSE_LIBLD_MALLOC' flag. - */ -#ifdef USE_LIBLD_MALLOC -#define calloc(x, a) libld_malloc(((size_t)x) * ((size_t)a)) -#define free libld_free -#define malloc libld_malloc -#define realloc libld_realloc - -#define libld_calloc(x, a) libld_malloc(((size_t)x) * ((size_t)a)) -extern void libld_free(void *); -extern void *libld_malloc(size_t); -extern void *libld_realloc(void *, size_t); -#endif - - -/* - * Data structures (defined in libld.h). - */ -typedef struct ent_desc Ent_desc; -typedef struct group_desc Group_desc; -typedef struct ifl_desc Ifl_desc; -typedef struct is_desc Is_desc; -typedef struct isa_desc Isa_desc; -typedef struct isa_opt Isa_opt; -typedef struct mv_desc Mv_desc; -typedef struct ofl_desc Ofl_desc; -typedef struct os_desc Os_desc; -typedef struct rel_cache Rel_cache; -typedef struct sdf_desc Sdf_desc; -typedef struct sdv_desc Sdv_desc; -typedef struct sg_desc Sg_desc; -typedef struct sort_desc Sort_desc; -typedef struct sec_order Sec_order; -typedef struct sym_desc Sym_desc; -typedef struct sym_aux Sym_aux; -typedef struct sym_avlnode Sym_avlnode; -typedef struct uts_desc Uts_desc; -typedef struct ver_desc Ver_desc; -typedef struct ver_index Ver_index; -typedef struct audit_desc Audit_desc; -typedef struct audit_info Audit_info; -typedef struct audit_list Audit_list; - -/* - * Data structures defined in machrel.h. - */ -typedef struct rel_desc Rel_desc; - -/* - * Data structures defined in rtld.h. - */ -typedef struct lm_list Lm_list; -#ifdef _SYSCALL32 -typedef struct lm_list32 Lm_list32; -#endif /* _SYSCALL32 */ - -/* - * For the various utilities that include sgs.h - */ -extern int assfail(const char *, const char *, int); -extern void eprintf(Lm_list *, Error, const char *, ...); -extern char *sgs_demangle(char *); -extern uint_t sgs_str_hash(const char *); -extern uint_t findprime(uint_t); - -#endif /* _ASM */ - -#ifdef __cplusplus -} -#endif - - -#endif /* _SGS_H */ |