git: 4f5d095fb4af - stable/13 - linux(4): Microoptimize linux_elf.h for future use.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 09 Feb 2023 07:56:41 UTC
The branch stable/13 has been updated by dchagin:
URL: https://cgit.FreeBSD.org/src/commit/?id=4f5d095fb4afb59dca19c0fb3e5004711538d0bf
commit 4f5d095fb4afb59dca19c0fb3e5004711538d0bf
Author: Dmitry Chagin <dchagin@FreeBSD.org>
AuthorDate: 2023-02-02 14:58:06 +0000
Commit: Dmitry Chagin <dchagin@FreeBSD.org>
CommitDate: 2023-02-09 07:54:16 +0000
linux(4): Microoptimize linux_elf.h for future use.
In order to reduce code duplication move coredump support definitions
into the appropriate header and hide private definitions.
MFC after: 1 week
(cherry picked from commit 7446514533a40b376eaeb349ea33531ce9c711c2)
---
sys/amd64/linux/linux_sysvec.c | 1 +
sys/amd64/linux32/linux32_sysvec.c | 1 +
sys/arm64/linux/linux_sysvec.c | 3 +++
sys/compat/linux/linux_elf.c | 28 ++++++++++++++++++++++++----
sys/compat/linux/linux_elf.h | 30 ++++++++----------------------
sys/compat/linux/linux_emul.h | 6 ------
6 files changed, 37 insertions(+), 32 deletions(-)
diff --git a/sys/amd64/linux/linux_sysvec.c b/sys/amd64/linux/linux_sysvec.c
index 60e90c03ad95..eb45fa183f84 100644
--- a/sys/amd64/linux/linux_sysvec.c
+++ b/sys/amd64/linux/linux_sysvec.c
@@ -76,6 +76,7 @@ __FBSDID("$FreeBSD$");
#include <x86/linux/linux_x86.h>
#include <amd64/linux/linux.h>
#include <amd64/linux/linux_proto.h>
+#include <compat/linux/linux_elf.h>
#include <compat/linux/linux_emul.h>
#include <compat/linux/linux_fork.h>
#include <compat/linux/linux_ioctl.h>
diff --git a/sys/amd64/linux32/linux32_sysvec.c b/sys/amd64/linux32/linux32_sysvec.c
index dc87d1a8a531..6aa171c3f5ea 100644
--- a/sys/amd64/linux32/linux32_sysvec.c
+++ b/sys/amd64/linux32/linux32_sysvec.c
@@ -82,6 +82,7 @@ __FBSDID("$FreeBSD$");
#include <x86/linux/linux_x86.h>
#include <amd64/linux32/linux.h>
#include <amd64/linux32/linux32_proto.h>
+#include <compat/linux/linux_elf.h>
#include <compat/linux/linux_emul.h>
#include <compat/linux/linux_fork.h>
#include <compat/linux/linux_ioctl.h>
diff --git a/sys/arm64/linux/linux_sysvec.c b/sys/arm64/linux/linux_sysvec.c
index 2533092b4cfd..bc9b0de9b095 100644
--- a/sys/arm64/linux/linux_sysvec.c
+++ b/sys/arm64/linux/linux_sysvec.c
@@ -29,6 +29,8 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#define __ELF_WORD_SIZE 64
+
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/cdefs.h>
@@ -59,6 +61,7 @@ __FBSDID("$FreeBSD$");
#include <arm64/linux/linux.h>
#include <arm64/linux/linux_proto.h>
#include <compat/linux/linux_dtrace.h>
+#include <compat/linux/linux_elf.h>
#include <compat/linux/linux_emul.h>
#include <compat/linux/linux_fork.h>
#include <compat/linux/linux_ioctl.h>
diff --git a/sys/compat/linux/linux_elf.c b/sys/compat/linux/linux_elf.c
index b02b6e2cc777..e73dbdae888e 100644
--- a/sys/compat/linux/linux_elf.c
+++ b/sys/compat/linux/linux_elf.c
@@ -61,11 +61,31 @@ __FBSDID("$FreeBSD$");
#include <machine/../linux/linux.h>
#endif
#include <compat/linux/linux_elf.h>
-#include <compat/linux/linux_emul.h>
-#include <compat/linux/linux_misc.h>
-/* This adds "linux32_" and "linux64_" prefixes. */
-#define __linuxN(x) __CONCAT(__CONCAT(__CONCAT(linux,__ELF_WORD_SIZE),_),x)
+struct l_elf_siginfo {
+ l_int si_signo;
+ l_int si_code;
+ l_int si_errno;
+};
+
+typedef struct linux_pt_regset l_elf_gregset_t;
+
+struct linux_elf_prstatus {
+ struct l_elf_siginfo pr_info;
+ l_short pr_cursig;
+ l_ulong pr_sigpend;
+ l_ulong pr_sighold;
+ l_pid_t pr_pid;
+ l_pid_t pr_ppid;
+ l_pid_t pr_pgrp;
+ l_pid_t pr_sid;
+ l_timeval pr_utime;
+ l_timeval pr_stime;
+ l_timeval pr_cutime;
+ l_timeval pr_cstime;
+ l_elf_gregset_t pr_reg;
+ l_int pr_fpvalid;
+};
#define LINUX_NT_AUXV 6
diff --git a/sys/compat/linux/linux_elf.h b/sys/compat/linux/linux_elf.h
index 4bb9318e360b..18d229d8481e 100644
--- a/sys/compat/linux/linux_elf.h
+++ b/sys/compat/linux/linux_elf.h
@@ -28,29 +28,15 @@
#ifndef _COMPAT_LINUX_ELF_H_
#define _COMPAT_LINUX_ELF_H_
-struct l_elf_siginfo {
- l_int si_signo;
- l_int si_code;
- l_int si_errno;
-};
+struct note_info_list;
-typedef struct linux_pt_regset l_elf_gregset_t;
+/* Linux core notes are labeled "CORE" */
+#define LINUX_ABI_VENDOR "CORE"
-struct linux_elf_prstatus {
- struct l_elf_siginfo pr_info;
- l_short pr_cursig;
- l_ulong pr_sigpend;
- l_ulong pr_sighold;
- l_pid_t pr_pid;
- l_pid_t pr_ppid;
- l_pid_t pr_pgrp;
- l_pid_t pr_sid;
- l_timeval pr_utime;
- l_timeval pr_stime;
- l_timeval pr_cutime;
- l_timeval pr_cstime;
- l_elf_gregset_t pr_reg;
- l_int pr_fpvalid;
-};
+/* This adds "linux32_" and "linux64_" prefixes. */
+#define __linuxN(x) __CONCAT(__CONCAT(__CONCAT(linux,__ELF_WORD_SIZE),_),x)
+
+void __linuxN(prepare_notes)(struct thread *, struct note_info_list *,
+ size_t *);
#endif
diff --git a/sys/compat/linux/linux_emul.h b/sys/compat/linux/linux_emul.h
index 9b552ab9c720..fde97c01895f 100644
--- a/sys/compat/linux/linux_emul.h
+++ b/sys/compat/linux/linux_emul.h
@@ -33,10 +33,6 @@
#define _LINUX_EMUL_H_
struct image_params;
-struct note_info_list;
-
-/* Linux core notes are labeled "CORE" */
-#define LINUX_ABI_VENDOR "CORE"
/*
* modeled after similar structure in NetBSD
@@ -61,8 +57,6 @@ void linux_schedtail(struct thread *);
void linux_on_exec(struct proc *, struct image_params *);
void linux_thread_dtor(struct thread *);
int linux_common_execve(struct thread *, struct image_args *);
-void linux32_prepare_notes(struct thread *, struct note_info_list *, size_t *);
-void linux64_prepare_notes(struct thread *, struct note_info_list *, size_t *);
/* process emuldata flags */
#define LINUX_XDEPR_REQUEUEOP 0x00000001 /* uses deprecated