1. 01 Nov, 2019 12 commits
  2. 19 Oct, 2019 1 commit
  3. 10 Oct, 2019 5 commits
    • Ulrich Sibiller's avatar
      nxagent/Imakefile: remove ../../exports/lib · b55c66e8
      Ulrich Sibiller authored
      nxagent links system libraries that link against libX11. Unfortunately,
      nxagent (and libXcompshad) require a modified libX11 version,
      nicknamed libNX_X11, for proper functioning. Fortunately, this one can
      act as a drop-in replacement for the system libX11. So we’ll hack our
      way out: add a DT_NEEDED entry for libX11 by linking against the
      system library when building nxagent and link the other system
      libraries later and set DT_RUNPATH to a special directory containing
      symlinks from libNX_X11 to libX11.
      
      This tricks the loader into pulling in the "fake" libX11 version
      without checking its SONAME and thus satisfying the DT_NEEDED entry
      early on - specifically also for the system libraries.
      
      Ex.:
      readelf -a /usr/bin/nxagent | grep NEEDED
       0x0000000000000001 (NEEDED)             Shared library: [libX11.so.6]
      ...
       0x0000000000000001 (NEEDED)             Shared library: [libNX_X11.so.6]
      ...
      
      If, however, you run the build a second time, it will find the newly
      created libX11 links in ../../exports/lib (used as an additional
      library search path) instead of the system libX11. The results in a
      binary looking like this:
      
       0x0000000000000001 (NEEDED)             Shared library: [libNX_X11.so.6]
      ...
      
      With such a setup, the whole magic falls apart and system libraries
      will suddenly pull in the actual system libX11 file.
      
      We initially believed a compiler call such as:
      
      ${CC} [--unrelated-options ...] [-Lunrelated_library_path ...] -lX11 [more
             options like -l and -L] -L../../exports/lib -lother_libraries
      
      to do "the right thing" and link against the system libX11 (or, at
      worst, a libX11 found in the library directory search list preceding the
      link call) and use ../../exports/lib only for later linking operations,
      since the order of options matters.
      
      However, this turned out to be blatantly wrong: while the order of -L
      arguments does matter for building the search path, the whole search
      path including elements from *ALL* -L arguments (and the system paths)
      will always be used when linking libraries.
      
      Hence, (counter-intuitively to us) both these calls will be equivalent:
      
      ${CC} [--unrelated-options ...] -la -Loverride_liba -lb
            [-Lunrelated_library_path ...] -lc
      
      ${CC} [--unrelated-options ...] -Loverride_liba [-Lunrelated_library_path
             ...] -la -lb -lc
      
      By removing LDPRELIBS from NXAGENTSYSLIBS, ../../exports/lib is no
      longer used during building/linking and the binaries are built
      reproducibly. We never intended to use this directory at link time
      anyway.
      b55c66e8
    • Mihai Moldovan's avatar
    • Ulrich Sibiller's avatar
      Screen.c: cleanup code a bit · 646e3ce2
      Ulrich Sibiller authored
      646e3ce2
    • Ulrich Sibiller's avatar
      Screen.c: fix a memleak · 8482abd3
      Ulrich Sibiller authored
      Remove some code that is no longer needed because the code requiring
      it has been removed some time ago (commit
      643e13bf). Fixes a small memleak that
      turned up after switching to fullscreen once.
      8482abd3
    • Mihai Moldovan's avatar
      Merge branch 'uli42-pr/fix_segfault' into 3.6.x · 994305ff
      Mihai Moldovan authored
      Attributes GH PR #848: https://github.com/ArcticaProject/nx-libs/pull/848
      
      Fixes: ArcticaProject/nx-libs#847
      994305ff
  4. 03 Oct, 2019 1 commit
    • Ulrich Sibiller's avatar
      Fix segfault in argument parsing · dc7a78b4
      Ulrich Sibiller authored
      Using arguments that need a parameter without providing one would lead
      a segfault due to calling strcmp() will NULL. Triggered by running
      "nxagent -ac :1 -options nx/nx,fullscreen" or similar,
      
      Fixes ArcticaProject/nx-libs#847
      dc7a78b4
  5. 29 Sep, 2019 21 commits