parent
47a8846795
commit
b43912410e
|
@ -1,108 +0,0 @@
|
|||
From fc925300601098dc45241087626369843d6a2c66 Mon Sep 17 00:00:00 2001
|
||||
From: John Zimmermann <me@johnnynator.dev>
|
||||
Date: Thu, 28 Sep 2023 16:42:21 +0200
|
||||
Subject: [PATCH 1/2] elfhacks: d_un.d_ptr is relative on non glibc systems
|
||||
|
||||
elf(5) documents it this way, GLIBC diverts from this documentation
|
||||
|
||||
partial fix for #601
|
||||
---
|
||||
src/elfhacks.cpp | 22 ++++++++++++++--------
|
||||
src/real_dlsym.cpp | 1 +
|
||||
2 files changed, 15 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/elfhacks.cpp b/src/elfhacks.cpp
|
||||
index 7cfc310..810a19d 100644
|
||||
--- a/src/elfhacks.cpp
|
||||
+++ b/src/elfhacks.cpp
|
||||
@@ -29,6 +29,12 @@
|
||||
* \{
|
||||
*/
|
||||
|
||||
+#ifdef __GLIBC__
|
||||
+# define ABS_ADDR(obj, ptr) (ptr)
|
||||
+#else
|
||||
+# define ABS_ADDR(obj, ptr) ((obj->addr) + (ptr))
|
||||
+#endif
|
||||
+
|
||||
struct eh_iterate_callback_args {
|
||||
eh_iterate_obj_callback_func callback;
|
||||
void *arg;
|
||||
@@ -196,22 +202,22 @@ int eh_init_obj(eh_obj_t *obj)
|
||||
if (obj->strtab)
|
||||
return ENOTSUP;
|
||||
|
||||
- obj->strtab = (const char *) obj->dynamic[p].d_un.d_ptr;
|
||||
+ obj->strtab = (const char *) ABS_ADDR(obj, obj->dynamic[p].d_un.d_ptr);
|
||||
} else if (obj->dynamic[p].d_tag == DT_HASH) {
|
||||
if (obj->hash)
|
||||
return ENOTSUP;
|
||||
|
||||
- obj->hash = (ElfW(Word) *) obj->dynamic[p].d_un.d_ptr;
|
||||
+ obj->hash = (ElfW(Word) *) ABS_ADDR(obj, obj->dynamic[p].d_un.d_ptr);
|
||||
} else if (obj->dynamic[p].d_tag == DT_GNU_HASH) {
|
||||
if (obj->gnu_hash)
|
||||
return ENOTSUP;
|
||||
|
||||
- obj->gnu_hash = (Elf32_Word *) obj->dynamic[p].d_un.d_ptr;
|
||||
+ obj->gnu_hash = (Elf32_Word *) ABS_ADDR(obj, obj->dynamic[p].d_un.d_ptr);
|
||||
} else if (obj->dynamic[p].d_tag == DT_SYMTAB) {
|
||||
if (obj->symtab)
|
||||
return ENOTSUP;
|
||||
|
||||
- obj->symtab = (ElfW(Sym) *) obj->dynamic[p].d_un.d_ptr;
|
||||
+ obj->symtab = (ElfW(Sym) *) ABS_ADDR(obj, obj->dynamic[p].d_un.d_ptr);
|
||||
}
|
||||
p++;
|
||||
}
|
||||
@@ -449,7 +455,7 @@ int eh_find_next_dyn(eh_obj_t *obj, ElfW_Sword tag, int i, ElfW(Dyn) **next)
|
||||
|
||||
int eh_set_rela_plt(eh_obj_t *obj, int p, const char *sym, void *val)
|
||||
{
|
||||
- ElfW(Rela) *rela = (ElfW(Rela) *) obj->dynamic[p].d_un.d_ptr;
|
||||
+ ElfW(Rela) *rela = (ElfW(Rela) *) ABS_ADDR(obj, obj->dynamic[p].d_un.d_ptr);
|
||||
ElfW(Dyn) *relasize;
|
||||
unsigned int i;
|
||||
|
||||
@@ -470,7 +476,7 @@ int eh_set_rela_plt(eh_obj_t *obj, int p, const char *sym, void *val)
|
||||
|
||||
int eh_set_rel_plt(eh_obj_t *obj, int p, const char *sym, void *val)
|
||||
{
|
||||
- ElfW(Rel) *rel = (ElfW(Rel) *) obj->dynamic[p].d_un.d_ptr;
|
||||
+ ElfW(Rel) *rel = (ElfW(Rel) *) ABS_ADDR(obj, obj->dynamic[p].d_un.d_ptr);
|
||||
ElfW(Dyn) *relsize;
|
||||
unsigned int i;
|
||||
|
||||
@@ -520,7 +526,7 @@ int eh_set_rel(eh_obj_t *obj, const char *sym, void *val)
|
||||
|
||||
int eh_iterate_rela_plt(eh_obj_t *obj, int p, eh_iterate_rel_callback_func callback, void *arg)
|
||||
{
|
||||
- ElfW(Rela) *rela = (ElfW(Rela) *) obj->dynamic[p].d_un.d_ptr;
|
||||
+ ElfW(Rela) *rela = (ElfW(Rela) *) ABS_ADDR(obj, obj->dynamic[p].d_un.d_ptr);
|
||||
ElfW(Dyn) *relasize;
|
||||
eh_rel_t rel;
|
||||
eh_sym_t sym;
|
||||
@@ -550,7 +556,7 @@ int eh_iterate_rela_plt(eh_obj_t *obj, int p, eh_iterate_rel_callback_func callb
|
||||
|
||||
int eh_iterate_rel_plt(eh_obj_t *obj, int p, eh_iterate_rel_callback_func callback, void *arg)
|
||||
{
|
||||
- ElfW(Rel) *relp = (ElfW(Rel) *) obj->dynamic[p].d_un.d_ptr;
|
||||
+ ElfW(Rel) *relp = (ElfW(Rel) *) ABS_ADDR(obj, obj->dynamic[p].d_un.d_ptr);
|
||||
ElfW(Dyn) *relsize;
|
||||
eh_rel_t rel;
|
||||
eh_sym_t sym;
|
||||
diff --git a/src/real_dlsym.cpp b/src/real_dlsym.cpp
|
||||
index 173dc1b..3e5a77c 100644
|
||||
--- a/src/real_dlsym.cpp
|
||||
+++ b/src/real_dlsym.cpp
|
||||
@@ -26,6 +26,7 @@ static void get_real_functions()
|
||||
#endif
|
||||
"*libc.so*",
|
||||
"*libc.*.so*",
|
||||
+ "*ld-musl-*.so*",
|
||||
};
|
||||
|
||||
for (size_t i = 0; i < sizeof(libs) / sizeof(*libs); i++)
|
||||
--
|
||||
2.42.0
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
diff --git a/meson.build b/meson.build
|
||||
index 76a0340..c624622 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -1,6 +1,6 @@
|
||||
project('MangoHud',
|
||||
['c', 'cpp'],
|
||||
- version : 'v0.7.1',
|
||||
+ version : 'v0.7.2',
|
||||
license : 'MIT',
|
||||
meson_version: '>=0.60.0',
|
||||
default_options : ['buildtype=release', 'c_std=c99', 'cpp_std=c++14', 'warning_level=2']
|
|
@ -1,41 +0,0 @@
|
|||
From c6e7c2da873cf2ada7cac9cc8953c3afda7f4cd1 Mon Sep 17 00:00:00 2001
|
||||
From: John Zimmermann <me@johnnynator.dev>
|
||||
Date: Thu, 28 Sep 2023 13:56:04 +0200
|
||||
Subject: [PATCH 1/2] meson: fallback to project_version() without git
|
||||
|
||||
resolves #1131
|
||||
---
|
||||
src/meson.build | 12 +++++++++++-
|
||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/meson.build b/src/meson.build
|
||||
index 537ce63..0729596 100644
|
||||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -9,12 +9,22 @@ else
|
||||
ld_libdir_mangohud = get_option('prefix') + '/\$LIB/'
|
||||
endif
|
||||
|
||||
+git = find_program('git', required: false)
|
||||
+if git.found()
|
||||
+ git_describe = run_command([git, 'describe', '--tags', '--dirty=+'], check: false)
|
||||
+endif
|
||||
+if git.found() and git_describe.returncode() == 0
|
||||
+ describe_ver = git_describe.stdout().strip()
|
||||
+else
|
||||
+ describe_ver = meson.project_version()
|
||||
+endif
|
||||
+
|
||||
conf_data = configuration_data()
|
||||
|
||||
conf_data.set('ld_libdir_mangohud_abs', libdir_mangohud)
|
||||
conf_data.set('ld_libdir_mangohud', ld_libdir_mangohud)
|
||||
conf_data.set('cpu_family', host_machine.cpu_family())
|
||||
-conf_data.set('version', run_command(['git', 'describe', '--tags', '--dirty=+']).stdout().strip())
|
||||
+conf_data.set('version', describe_ver)
|
||||
|
||||
overlay_shaders = [
|
||||
'overlay.frag',
|
||||
--
|
||||
2.42.0
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
From 252f18e54d8a56ce4420c549fb48963cad3b91c0 Mon Sep 17 00:00:00 2001
|
||||
From: John Zimmermann <me@johnnynator.dev>
|
||||
Date: Thu, 28 Sep 2023 18:17:37 +0200
|
||||
Subject: [PATCH 2/2] meson: allow setting absolute path instead of 'Dynamic
|
||||
string tokens'
|
||||
|
||||
resolves #601
|
||||
---
|
||||
meson_options.txt | 1 +
|
||||
src/meson.build | 10 ++++++++--
|
||||
2 files changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/meson_options.txt b/meson_options.txt
|
||||
index 5f7d11b..0173a54 100644
|
||||
--- a/meson_options.txt
|
||||
+++ b/meson_options.txt
|
||||
@@ -12,3 +12,4 @@ option('mangoapp', type: 'boolean', value : false)
|
||||
option('mangohudctl', type: 'boolean', value : false)
|
||||
option('mangoapp_layer', type: 'boolean', value : false)
|
||||
option('tests', type: 'feature', value: 'auto', description: 'Run tests')
|
||||
+option('dynamic_string_tokens', type: 'boolean', value: true, description: 'Use dynamic string tokens in LD_PRELOAD')
|
||||
diff --git a/src/meson.build b/src/meson.build
|
||||
index 537ce63..034dce2 100644
|
||||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -1,12 +1,18 @@
|
||||
glslang = find_program('glslang', 'glslangValidator')
|
||||
|
||||
+if get_option('dynamic_string_tokens')
|
||||
+ ld_prefix = get_option('prefix') + '/\$LIB/'
|
||||
+else
|
||||
+ ld_prefix = join_paths(get_option('prefix') ,get_option('libdir')) + '/'
|
||||
+endif
|
||||
+
|
||||
# Needs prefix for configure_file()
|
||||
if get_option('append_libdir_mangohud')
|
||||
libdir_mangohud = join_paths(get_option('prefix'), get_option('libdir'), 'mangohud')
|
||||
- ld_libdir_mangohud = get_option('prefix') + '/\$LIB/mangohud/'
|
||||
+ ld_libdir_mangohud = ld_prefix + 'mangohud/'
|
||||
else
|
||||
libdir_mangohud = join_paths(get_option('prefix'), get_option('libdir'))
|
||||
- ld_libdir_mangohud = get_option('prefix') + '/\$LIB/'
|
||||
+ ld_libdir_mangohud = ld_prefix
|
||||
endif
|
||||
|
||||
conf_data = configuration_data()
|
||||
--
|
||||
2.42.0
|
||||
|
|
@ -1,18 +1,19 @@
|
|||
# Template file for 'MangoHud'
|
||||
pkgname=MangoHud
|
||||
version=0.7.0
|
||||
version=0.7.2
|
||||
revision=1
|
||||
build_style=meson
|
||||
configure_args="-Dwith_xnvctrl=disabled
|
||||
-Dwith_nvml=disabled -Duse_system_spdlog=enabled"
|
||||
hostmakedepends="python3-Mako glslang pkg-config"
|
||||
makedepends="libglvnd-devel dbus-devel vulkan-loader-devel spdlog json-c++"
|
||||
hostmakedepends="Vulkan-Headers python3-Mako glslang pkg-config"
|
||||
makedepends="libglvnd-devel dbus-devel vulkan-loader spdlog json-c++
|
||||
wayland-devel libxkbcommon-devel"
|
||||
short_desc="Vulkan and OpenGL overlay for monitoring FPS, temperatures and more"
|
||||
maintainer="John <me@johnnynator.dev>"
|
||||
license="MIT"
|
||||
homepage="https://github.com/flightlessmango/MangoHud"
|
||||
distfiles="https://github.com/flightlessmango/MangoHud/releases/download/v${version}/MangoHud-v${version}-Source-DFSG.tar.xz"
|
||||
checksum=222e15d4f3e679937f7594e2e5615aaae41b97d487eb7938b96b26eeb1fbcf35
|
||||
checksum=39d41ff564cd46b99a8514d35ff0cc1cd4ec5ab093347ca552bd7f7572a4064f
|
||||
python_version=3
|
||||
|
||||
if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
|
||||
|
|
Loading…
Reference in New Issue