summaryrefslogtreecommitdiff
path: root/sys/arch/alpha/conf
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2009-09-24 19:51:33 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2009-09-24 19:51:33 +0000
commit84cfd9154233cc66ef7c6136843d5b8a67315292 (patch)
treeecd5acfdebdb97bd0ab4fb309dcdbb05caf44d4c /sys/arch/alpha/conf
parent14d77f46fc629260ec2fdda007d61c5eea2d07cd (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/conf')
-rw-r--r--sys/arch/alpha/conf/Makefile.alpha8
-rw-r--r--sys/arch/alpha/conf/ld.script49
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)
+ }
+}