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