Skip to content

Conversation

@smcv
Copy link
Contributor

@smcv smcv commented Apr 30, 2025

  • shim: Reuse Mesa's macros instead of open-coding

    We'll want macros.h for PUBLIC, and it defines an ARRAY_SIZE that we
    can use.

  • shim: Explicitly export forwarding functions

    This will allow us to control exports with -fvisibility=hidden.

  • shim: Explicitly export our dlsym() reimplementation

    This is intended to be hooked in the process that loaded MangoHud.

  • shim: Hide all symbols that are not explicitly public

    This avoids accidentally interposing symbols like __dlsym() and
    eh_hash_elf().

    Resolves: libMangoHud_shim.so exports extra symbols such as eh_hash_elf, __dlsym, get_proc_address #1667

  • real_dlsym: Make local variables static

    There's no need for these to be referenced outside this translation unit.

smcv added 6 commits April 30, 2025 10:48
We'll want macros.h for PUBLIC, and it defines an ARRAY_SIZE that we
can use.

Signed-off-by: Simon McVittie <smcv@collabora.com>
This will allow us to control exports with -fvisibility=hidden.

Signed-off-by: Simon McVittie <smcv@collabora.com>
This is intended to be hooked in the process that loaded MangoHud.

Signed-off-by: Simon McVittie <smcv@collabora.com>
This avoids accidentally interposing symbols like __dlsym() and
eh_hash_elf().

Resolves: flightlessmango#1667
Signed-off-by: Simon McVittie <smcv@collabora.com>
There's no need for these to be referenced outside this translation unit.

Signed-off-by: Simon McVittie <smcv@collabora.com>
In fact this has no practical effect right now, because the
intentionally-exported symbols are already decorated with `EXPORT_C_` and
listed in `mangohud.version`, while the internal-only symbols are declared
as local in `mangohud.version`. But this might prevent accidents later.

Signed-off-by: Simon McVittie <smcv@collabora.com>
@smcv
Copy link
Contributor Author

smcv commented Apr 30, 2025

Needs testing, I'll try to do that later today.

@Etaash-mathamsetty
Copy link
Contributor

Any updates on this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

libMangoHud_shim.so exports extra symbols such as eh_hash_elf, __dlsym, get_proc_address

2 participants