forked from void-linux/void-packages
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
e66f615
commit 6aeeef5
Showing
5 changed files
with
206 additions
and
32 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
108 changes: 108 additions & 0 deletions
108
srcpkgs/MangoHud/patches/0001-elfhacks-d_un.d_ptr-is-relative-on-non-glibc-systems.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
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 | ||
|
41 changes: 41 additions & 0 deletions
41
srcpkgs/MangoHud/patches/0001-meson-fallback-to-project_version-without-git.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
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 | ||
|
49 changes: 49 additions & 0 deletions
49
srcpkgs/MangoHud/patches/0002-meson-allow-setting-absolute-path-instead-of-Dynamic.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters