Page MenuHomeFreeBSD

D45468.id139500.diff
No OneTemporary

D45468.id139500.diff

diff --git a/sys/arm64/linux/linux_support.S b/sys/arm64/linux/linux_support.S
--- a/sys/arm64/linux/linux_support.S
+++ b/sys/arm64/linux/linux_support.S
@@ -26,6 +26,8 @@
* SUCH DAMAGE.
*/
+#include <sys/elf_common.h>
+
#include <machine/asm.h>
#include <machine/param.h>
#include <machine/vmparam.h>
@@ -172,3 +174,5 @@
str w4, [x2]
ret
END(futex_xorl)
+
+GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
diff --git a/sys/compat/linux/linux_vdso_inc.S b/sys/compat/linux/linux_vdso_inc.S
new file mode 100644
--- /dev/null
+++ b/sys/compat/linux/linux_vdso_inc.S
@@ -0,0 +1,39 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (C) 2020 Arm Ltd
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+
+ .section .rodata
+ .globl _binary_linux_vdso_so_o_start
+_binary_linux_vdso_so_o_start:
+ .incbin "linux_vdso.so.o"
+ .globl _binary_linux_vdso_so_o_end
+_binary_linux_vdso_so_o_end:
+
+#if defined(__aarch64__)
+#include <sys/elf_common.h>
+#include <machine/asm.h>
+GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
+#endif
diff --git a/sys/modules/linux64/Makefile b/sys/modules/linux64/Makefile
--- a/sys/modules/linux64/Makefile
+++ b/sys/modules/linux64/Makefile
@@ -35,7 +35,8 @@
bus_if.h \
device_if.h \
vnode_if.h \
- linux_support.S
+ linux_support.S \
+ linux_vdso_inc.S
.if ${MACHINE_CPUARCH} == "amd64"
SRCS+= linux_dummy_x86.c
.endif
@@ -47,7 +48,6 @@
CLEANFILES= linux_assym.h linux_genassym.o linux_locore.o \
genassym.o linux_vdso_gtod.o linux_vdso.so.o
-OBJS= linux_vdso.so
linux_assym.h: linux_genassym.o
sh ${SYSDIR}/kern/genassym.sh linux_genassym.o > ${.TARGET}
@@ -83,18 +83,7 @@
-T${SRCTOP}/sys/${MACHINE}/linux/linux_vdso.lds.s \
-o ${.TARGET} ${.ALLSRC:M*.o}
-.if ${MACHINE_CPUARCH} == "aarch64"
-OBJCOPY_TARGET=--output-target elf64-littleaarch64 --binary-architecture aarch64
-.elif ${MACHINE_CPUARCH} == "amd64"
-OBJCOPY_TARGET=--output-target elf64-x86-64 --binary-architecture i386:x86-64
-.else
-.error ${MACHINE_CPUARCH} not yet supported by linux64
-.endif
-
-linux_vdso.so: linux_vdso.so.o
- ${OBJCOPY} --input-target binary ${OBJCOPY_TARGET} \
- linux_vdso.so.o ${.TARGET}
- ${STRIPBIN} -N _binary_linux_vdso_so_o_size ${.TARGET}
+linux_vdso_inc.o: linux_vdso.so.o
linux_support.o: linux_support.S assym.inc linux_assym.h
${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \

File Metadata

Mime Type
text/plain
Expires
Fri, Dec 13, 4:48 PM (20 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15358937
Default Alt Text
D45468.id139500.diff (3 KB)

Event Timeline