!479 fix LD_HUGEPAGE_LIB env does not take effect
From: @lvying6 Reviewed-by: @liqingqing_1229 Signed-off-by: @liqingqing_1229
This commit is contained in:
commit
8d7433e01b
@ -1,8 +1,8 @@
|
|||||||
From 28a9a4123b8a7494c0b5e70fd943fa7aa4f64fe8 Mon Sep 17 00:00:00 2001
|
From 0e86566343057fc021a6d82fe2b6be8651e51b3e Mon Sep 17 00:00:00 2001
|
||||||
From: Lv Ying <lvying6@huawei.com>
|
From: Lv Ying <lvying6@huawei.com>
|
||||||
Date: Mon, 7 Mar 2022 03:28:33 +0000
|
Date: Mon, 7 Mar 2022 03:28:33 +0000
|
||||||
Subject: [PATCH 1/3] elf: dynamic linker load shared object use hugepage as
|
Subject: [PATCH] elf: dynamic linker load shared object use hugepage as much
|
||||||
much as possible
|
as possible
|
||||||
|
|
||||||
This patch provides environment variables HUGEPAGE_PROBE and LD_HUGEPAGE_LIB
|
This patch provides environment variables HUGEPAGE_PROBE and LD_HUGEPAGE_LIB
|
||||||
to enable load shared object use hugepage.
|
to enable load shared object use hugepage.
|
||||||
@ -31,9 +31,9 @@ as much as possible. This means:
|
|||||||
elf/dl-map-segments-hugepage.h | 593 +++++++++++++++++++++++++++++++++
|
elf/dl-map-segments-hugepage.h | 593 +++++++++++++++++++++++++++++++++
|
||||||
elf/elf.h | 2 +
|
elf/elf.h | 2 +
|
||||||
elf/hugepageedit.c | 169 ++++++++++
|
elf/hugepageedit.c | 169 ++++++++++
|
||||||
elf/rtld.c | 64 ++++
|
elf/rtld.c | 63 ++++
|
||||||
sysdeps/generic/ldsodefs.h | 6 +-
|
sysdeps/generic/ldsodefs.h | 6 +-
|
||||||
12 files changed, 939 insertions(+), 1 deletion(-)
|
12 files changed, 938 insertions(+), 1 deletion(-)
|
||||||
create mode 100644 elf/dl-map-segments-hugepage.h
|
create mode 100644 elf/dl-map-segments-hugepage.h
|
||||||
create mode 100644 elf/hugepageedit.c
|
create mode 100644 elf/hugepageedit.c
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ index af47cd51..27a48338 100644
|
|||||||
# can write them unchanged into config.make. Everything else uses
|
# can write them unchanged into config.make. Everything else uses
|
||||||
# $machine, $vendor, and $os, and changes them whenever convenient.
|
# $machine, $vendor, and $os, and changes them whenever convenient.
|
||||||
diff --git a/elf/Makefile b/elf/Makefile
|
diff --git a/elf/Makefile b/elf/Makefile
|
||||||
index 48bb4703..1574574d 100644
|
index 6fd515ba..32aba7ac 100644
|
||||||
--- a/elf/Makefile
|
--- a/elf/Makefile
|
||||||
+++ b/elf/Makefile
|
+++ b/elf/Makefile
|
||||||
@@ -207,6 +207,14 @@ others-extras = $(ldconfig-modules)
|
@@ -207,6 +207,14 @@ others-extras = $(ldconfig-modules)
|
||||||
@ -1055,10 +1055,10 @@ index 00000000..14a91a4b
|
|||||||
+ return exit_status;
|
+ return exit_status;
|
||||||
+}
|
+}
|
||||||
diff --git a/elf/rtld.c b/elf/rtld.c
|
diff --git a/elf/rtld.c b/elf/rtld.c
|
||||||
index 8268849a..491ef6b1 100644
|
index a8ae8b31..242b47e3 100644
|
||||||
--- a/elf/rtld.c
|
--- a/elf/rtld.c
|
||||||
+++ b/elf/rtld.c
|
+++ b/elf/rtld.c
|
||||||
@@ -2502,6 +2502,40 @@ dl_main (const ElfW(Phdr) *phdr,
|
@@ -2543,6 +2543,40 @@ dl_main (const ElfW(Phdr) *phdr,
|
||||||
/* Once we return, _dl_sysdep_start will invoke
|
/* Once we return, _dl_sysdep_start will invoke
|
||||||
the DT_INIT functions and then *USER_ENTRY. */
|
the DT_INIT functions and then *USER_ENTRY. */
|
||||||
}
|
}
|
||||||
@ -1099,7 +1099,7 @@ index 8268849a..491ef6b1 100644
|
|||||||
|
|
||||||
/* This is a little helper function for resolving symbols while
|
/* This is a little helper function for resolving symbols while
|
||||||
tracing the binary. */
|
tracing the binary. */
|
||||||
@@ -2637,6 +2671,9 @@ process_envvars (struct dl_main_state *state)
|
@@ -2678,6 +2712,9 @@ process_envvars (struct dl_main_state *state)
|
||||||
char **runp = _environ;
|
char **runp = _environ;
|
||||||
char *envline;
|
char *envline;
|
||||||
char *debug_output = NULL;
|
char *debug_output = NULL;
|
||||||
@ -1109,10 +1109,11 @@ index 8268849a..491ef6b1 100644
|
|||||||
|
|
||||||
/* This is the default place for profiling data file. */
|
/* This is the default place for profiling data file. */
|
||||||
GLRO(dl_profile_output)
|
GLRO(dl_profile_output)
|
||||||
@@ -2751,6 +2788,16 @@ process_envvars (struct dl_main_state *state)
|
@@ -2790,6 +2827,15 @@ process_envvars (struct dl_main_state *state)
|
||||||
|
if (!__libc_enable_secure
|
||||||
|
&& memcmp (envline, "DYNAMIC_WEAK", 12) == 0)
|
||||||
GLRO(dl_dynamic_weak) = 1;
|
GLRO(dl_dynamic_weak) = 1;
|
||||||
break;
|
+
|
||||||
|
|
||||||
+#ifdef HUGEPAGE_SHARED_LIB
|
+#ifdef HUGEPAGE_SHARED_LIB
|
||||||
+ if (memcmp (envline, "HUGEPAGE_LIB", 12) == 0 && envline[13] != '\0')
|
+ if (memcmp (envline, "HUGEPAGE_LIB", 12) == 0 && envline[13] != '\0')
|
||||||
+ {
|
+ {
|
||||||
@ -1121,12 +1122,10 @@ index 8268849a..491ef6b1 100644
|
|||||||
+ }
|
+ }
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+ break;
|
break;
|
||||||
+
|
|
||||||
case 13:
|
case 13:
|
||||||
/* We might have some extra environment variable with length 13
|
@@ -2812,6 +2858,13 @@ process_envvars (struct dl_main_state *state)
|
||||||
to handle. */
|
|
||||||
@@ -2771,6 +2818,13 @@ process_envvars (struct dl_main_state *state)
|
|
||||||
&& memcmp (envline, "PROFILE_OUTPUT", 14) == 0
|
&& memcmp (envline, "PROFILE_OUTPUT", 14) == 0
|
||||||
&& envline[15] != '\0')
|
&& envline[15] != '\0')
|
||||||
GLRO(dl_profile_output) = &envline[15];
|
GLRO(dl_profile_output) = &envline[15];
|
||||||
@ -1140,7 +1139,7 @@ index 8268849a..491ef6b1 100644
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 16:
|
case 16:
|
||||||
@@ -2800,6 +2854,16 @@ process_envvars (struct dl_main_state *state)
|
@@ -2841,6 +2894,16 @@ process_envvars (struct dl_main_state *state)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1158,7 +1157,7 @@ index 8268849a..491ef6b1 100644
|
|||||||
variables. */
|
variables. */
|
||||||
if (__builtin_expect (__libc_enable_secure, 0))
|
if (__builtin_expect (__libc_enable_secure, 0))
|
||||||
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
|
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
|
||||||
index fcbbf697..03cab4c4 100644
|
index a1d70ce7..3328fd9b 100644
|
||||||
--- a/sysdeps/generic/ldsodefs.h
|
--- a/sysdeps/generic/ldsodefs.h
|
||||||
+++ b/sysdeps/generic/ldsodefs.h
|
+++ b/sysdeps/generic/ldsodefs.h
|
||||||
@@ -549,7 +549,11 @@ struct rtld_global_ro
|
@@ -549,7 +549,11 @@ struct rtld_global_ro
|
||||||
@ -1175,5 +1174,5 @@ index fcbbf697..03cab4c4 100644
|
|||||||
EXTERN unsigned int _dl_osversion;
|
EXTERN unsigned int _dl_osversion;
|
||||||
/* Platform name. */
|
/* Platform name. */
|
||||||
--
|
--
|
||||||
2.31.1
|
2.33.0
|
||||||
|
|
||||||
|
|||||||
@ -66,7 +66,7 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
Name: glibc
|
Name: glibc
|
||||||
Version: 2.34
|
Version: 2.34
|
||||||
Release: 93
|
Release: 94
|
||||||
Summary: The GNU libc libraries
|
Summary: The GNU libc libraries
|
||||||
License: %{all_license}
|
License: %{all_license}
|
||||||
URL: http://www.gnu.org/software/glibc/
|
URL: http://www.gnu.org/software/glibc/
|
||||||
@ -1414,6 +1414,9 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Aug 11 2022 Lv Ying <lvying6@huawei.com> - 2.34-94
|
||||||
|
- fix LD_HUGEPAGE_LIB env does not take effect
|
||||||
|
|
||||||
* Mon Aug 1 2022 xujing <xujing125@huawei.com> - 2.34-93
|
* Mon Aug 1 2022 xujing <xujing125@huawei.com> - 2.34-93
|
||||||
- sync patches from upstream community
|
- sync patches from upstream community
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user