diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2009-09-24 19:51:33 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2009-09-24 19:51:33 +0000 |
commit | 84cfd9154233cc66ef7c6136843d5b8a67315292 (patch) | |
tree | ecd5acfdebdb97bd0ab4fb309dcdbb05caf44d4c /sys/arch/alpha | |
parent | 14d77f46fc629260ec2fdda007d61c5eea2d07cd (diff) |
Link alpha kernels with an ld.script to discard unwanted sections; this
allows us to no longer need to compile with -finhibit-size-directive, which
in turns allows the (future) use of !samegp relocations by as(1).
ok kettenis@
Diffstat (limited to 'sys/arch/alpha')
-rw-r--r-- | sys/arch/alpha/conf/Makefile.alpha | 8 | ||||
-rw-r--r-- | sys/arch/alpha/conf/ld.script | 49 |
2 files changed, 53 insertions, 4 deletions
diff --git a/sys/arch/alpha/conf/Makefile.alpha b/sys/arch/alpha/conf/Makefile.alpha index 87fcceee8be..67be903b2b2 100644 --- a/sys/arch/alpha/conf/Makefile.alpha +++ b/sys/arch/alpha/conf/Makefile.alpha @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile.alpha,v 1.45 2009/08/09 23:04:49 miod Exp $ +# $OpenBSD: Makefile.alpha,v 1.46 2009/09/24 19:51:32 miod Exp $ # $NetBSD: Makefile.alpha,v 1.27 1996/12/01 06:12:25 jonathan Exp $ # Makefile for OpenBSD @@ -36,15 +36,15 @@ CDIAGFLAGS?= -Werror -Wall -Wstrict-prototypes -Wmissing-prototypes \ -Wstack-larger-than-2047 -Wvariable-decl CMACHFLAGS= -mno-fp-regs -fno-builtin-printf -fno-builtin-log \ - -finhibit-size-directive -Wa,-mev56 + -Wa,-mev56 .if ${IDENT:M-DNO_PROPOLICE} CMACHFLAGS+= -fno-stack-protector .endif COPTS?= -O2 CFLAGS= ${DEBUG} ${CDIAGFLAGS} ${CMACHFLAGS} ${COPTS} ${PIPE} AFLAGS= -traditional -D_LOCORE -LINKFLAGS= -N -Ttext fffffc0000230000 -e __start -G 4 -STRIPFLAGS= -g -X -x +LINKFLAGS= -T ${ALPHA}/conf/ld.script -X -N -G 4 +STRIPFLAGS= -g -x .if ${IDENT:M-DDDB_STRUCT} DB_STRUCTINFO= db_structinfo.h diff --git a/sys/arch/alpha/conf/ld.script b/sys/arch/alpha/conf/ld.script new file mode 100644 index 00000000000..0c66515d575 --- /dev/null +++ b/sys/arch/alpha/conf/ld.script @@ -0,0 +1,49 @@ +/* $OpenBSD: ld.script,v 1.1 2009/09/24 19:51:32 miod Exp $ */ + +/* + * Copyright (c) 2009 Miodrag Vallat. + * + * 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. + * + * 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. + */ + +/* + * Linker script for an alpha static ELF binary, without any C++ code + * (ctor/dtor/eh_frame). + */ + +OUTPUT_FORMAT("elf64-alpha") +OUTPUT_ARCH(alpha) +ENTRY(__start) +SECTIONS +{ + . = 0xfffffc0000230000; + .text : { *(.text .text.* .gnu.linkonce.t.*) } + PROVIDE(etext = .); + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } + .data : { *(.data .data.* .gnu.linkonce.d.*) } + .got : { *(.got) } + .sdata : { *(.sdata .sdata.* .gnu.linkonce.s.*) } + .lit8 : { *(.lit8) } + .lita : { *(.lita) } + .sdata : { *(.sdata .sdata*) } + PROVIDE(edata = .); + .sbss : { *(.sbss .sbss.* .gnu.linkonce.sb.* .scommon) } + .bss : { *(.bss .bss.* .gnu.linkonce.b.* COMMON) } + PROVIDE(_end = .); + PROVIDE(end = .); + /DISCARD/ : + { + *(.comment) + *(.eh_frame) + } +} |