diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2006-05-07 15:38:06 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2006-05-07 15:38:06 +0000 |
commit | c2443119bd87909ec0db823db233230a6599167c (patch) | |
tree | c44aabb6f40c2d293885f32abf5e194d3998e5f6 /sys | |
parent | e7dde5a9556d8f0a8b6db09742710382a028ad4e (diff) |
Long due update from a.out to ELF (slightly different) relocation defines,
from sparc64 with love. Spotted by drahn@
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/sparc/include/reloc.h | 116 |
1 files changed, 22 insertions, 94 deletions
diff --git a/sys/arch/sparc/include/reloc.h b/sys/arch/sparc/include/reloc.h index c9152936d8b..9d79ca0a8ef 100644 --- a/sys/arch/sparc/include/reloc.h +++ b/sys/arch/sparc/include/reloc.h @@ -1,100 +1,28 @@ -/* $OpenBSD: reloc.h,v 1.3 2003/06/02 23:27:54 millert Exp $ */ -/* $NetBSD: reloc.h,v 1.2 1994/11/20 20:53:30 deraadt Exp $ */ - -/* - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This software was developed by the Computer Systems Engineering group - * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and - * contributed to Berkeley. - * - * All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Lawrence Berkeley Laboratory. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. +/* $OpenBSD: reloc.h,v 1.4 2006/05/07 15:38:05 miod Exp $ */ +/* + * Copyright (c) 2001 Artur Grabowski <art@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)reloc.h 8.1 (Berkeley) 6/11/93 + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* - * SPARC relocations. The linker has, unfortunately, a large number - * of link types. We do not do dynamic linking (yet?) but we define - * the dynamic link types. - */ -enum reloc_type { - /* architecturally-required types */ - RELOC_8, /* 8-bit absolute */ - RELOC_16, /* 16-bit absolute */ - RELOC_32, /* 32-bit absolute */ - RELOC_DISP8, /* 8-bit pc-relative */ - RELOC_DISP16, /* 16-bit pc-relative */ - RELOC_DISP32, /* 32-bit pc-relative */ - RELOC_WDISP30, /* 30-bit pc-relative signed word */ - RELOC_WDISP22, /* 22-bit pc-relative signed word */ - RELOC_HI22, /* 22-bit `%hi' (ie, sethi %hi(X),%l0) */ - RELOC_22, /* 22-bit non-%hi (i.e., sethi X,%l0) */ - RELOC_13, /* 13-bit absolute */ - RELOC_LO10, /* 10-bit `%lo' */ +#ifndef _MACH_RELOC_H_ +#define _MACH_RELOC_H_ - /* gnu ld understands some of these, but I do not */ - RELOC_SFA_BASE, /* ? */ - RELOC_SFA_OFF13, /* ? */ - RELOC_BASE10, /* ? */ - RELOC_BASE13, /* ? */ - RELOC_BASE22, /* ? */ +#define RELOC_NONE 0 - /* gnu ld does not use these but Sun linker does */ - /* we define them anyway (note that they are included - in the freely-available gas sources!) */ - RELOC_PC10, /* ? */ - RELOC_PC22, /* ? */ - RELOC_JMP_TBL, /* ? */ - RELOC_SEGOFF16, /* ? */ - RELOC_GLOB_DAT, /* ? */ - RELOC_JMP_SLOT, /* ? */ - RELOC_RELATIVE, /* ? */ -}; +#define RELOC_COPY 19 +#define RELOC_GLOB_DAT 20 +#define RELOC_JMP_SLOT 21 +#define RELOC_RELATIVE 22 -/* - * SPARC relocation info. - * - * Symbol-relative relocation is done by: - * 1. locating the appropriate symbol - * 2. if defined, adding (value + r_addend), subtracting pc if pc-rel, - * and then shifting down 2 or 10 or 13 if necessary. - * The resulting value is then to be stuffed into the appropriate bits - * in the object (the low 22, or the high 30, or ..., etc). - */ -struct reloc_info_sparc { - u_long r_address; /* relocation addr (offset in segment) */ - u_int r_index:24, /* segment (r_extern==0) or symbol index */ - r_extern:1, /* if set, r_index is symbol index */ - :2; /* unused */ - enum reloc_type r_type:5; /* relocation type, from above */ - long r_addend; /* value to add to symbol value */ -}; +#endif /* _MACH_RELOC_H_ */ |