tech-x11 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: wip/szyszka
On Thu, 1 Jun 2023 at 10:53, RVP <rvp%sdf.org@localhost> wrote:
>
> On Wed, 31 May 2023, pin wrote:
>
> > AFK for 2 days but I've sent you the ldd output on another e-mail addressed to you only.
> >
>
> I've got the `readelf -Wd' output but not the `ldd' one. But, it doesn't
> matter now. If adding LD_PRELOAD=/usr/pkg/lib/libEGL.so fixes things, then
> it clearly isn't caused by libfreetype being loaded twice.
Here just one libfreetype is loaded, so it is a local aberration.
It seems to me that preloading libEGL.so doesn't actually fix things,
it allows - by chance, as far as I understood the comments - the
program to operate with essentially software DRI, as with firefox 112.
I don't know what has happened in between, but firefox-esr-102 still
runs accelerated webGL as before.
>
> If you want to chase that one down, you'll have to find out which libraries
> are bringing in the 2 different versions of libfreetype. This is a bit
> tedious to do by hand, and NetBSD's ldd doesn't support the `-a' which
> would make this easy. So, I've attached an awk script which simulates a
> `ldd -a'. Usage: ldd.awk /usr/pkg/bin/szyszka
>
> -RVP
>
> ---START---
> #!/usr/bin/awk -f
> #
> # ldda.awk: simulate `ldd -a' on OSes which don't provide
> # that ldd(1) option (eg. NetBSD's)
>
> function addpath1(s, i, found) {
> found = 0
> for (i = 0; i < NPATH; i++) {
> if (LIBPATH[i] == s) {
> found = 1
> break;
> }
> }
> if (!found)
> LIBPATH[NPATH++] = s
> }
>
> function addpath(dirs, a, i, n) {
> n = split(dirs, a, /:/)
> for (i = 1; i <= n; i++)
> addpath1(a[i])
> }
>
> function err(emsg) {
> print emsg > "/dev/stderr"
> exit 1
> }
>
> function findlib(name, i, j, n, cmd, found, len, libs, s) {
> NPATH = 0 # start afresh
> if ("LD_LIBRARY_PATH" in ENVIRON) # add user override
> addpath(ENVIRON["LD_LIBRARY_PATH"])
> addpath("/lib:/usr/lib") # default NetBSD lib. search path
>
> cmd = "readelf -Wd " name
> while ((cmd | getline line) > 0) {
> if (line ~ /\(?(R|RUN)PATH\)? + Library (r|run)path: /) {
> i = index(line, "[")
> if (i == 0)
> err(name ": Bad PATH line: " line)
> len = length(line)
> s = substr(line, i + 1, len - (i + 1))
> addpath(s)
> }
> if (line ~ /\(?NEEDED\)? + Shared library: /) {
> i = index(line, "[")
> if (i == 0)
> err(name ": Bad NEEDED line: " line)
> len = length(line)
> s = substr(line, i + 1, len - (i + 1))
> libs[n++] = s
> }
> }
> close(cmd)
> if (n == 0)
> return # libc, or error
>
> print name ":"
> for (i = 0; i < n; i++) {
> found = 0
> for (j = 0; j < NPATH; j++) {
> s = LIBPATH[j] "/" libs[i]
> cmd = sprintf("test -e '%s'", s)
> if (system(cmd) == 0) {
> print "\t" s
> OBJS[s] || OBJS[s] = 1
> found = 1
> break
> }
> }
> if (!found)
> print "\t" libs[i] ": not found"
> }
> for (s in OBJS) {
> if (OBJS[s]++ == 1)
> findlib(s)
> }
> }
>
> BEGIN {
> for (i = 1; i < ARGC; i++)
> findlib(ARGV[i])
> }
> ---END---
--
----
Home |
Main Index |
Thread Index |
Old Index