VirtualBox

Ignore:
Timestamp:
May 25, 2020 7:38:25 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
138196
Message:

bugref:9637. Relax function pointer checks for XRRGetMonitors and XRRFreeMonitor.

Location:
trunk/src/VBox/Additions/x11/VBoxClient
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/x11/VBoxClient/Makefile.kmk

    r83234 r84479  
    2626#
    2727PROGRAMS += VBoxClient
     28PROGRAMS += VBoxWaylandClient
    2829
    2930VBoxClient_TEMPLATE = NewVBoxGuestR3Exe
     
    4041VBoxClient_INCS += ../x11include/randrproto-1.6.0
    4142VBoxClient_SOURCES = \
    42         main.cpp \
    43         display-svga.cpp \
    44         display-svga-x11.cpp \
    45         seamless.cpp \
    46         seamless-x11.cpp \
    47         hostversion.cpp
     43        main.cpp \
     44        display-svga.cpp \
     45        display-svga-x11.cpp \
     46        seamless.cpp \
     47        seamless-x11.cpp \
     48        hostversion.cpp
     49
     50VBoxWaylandClient_SOURCES = \
     51        display-wayland.cpp
    4852
    4953VBoxClient_SOURCES.linux = \
    50         chk_stubs.c
     54        chk_stubs.c
    5155VBoxClient_LIBPATH = \
    52         $(VBOX_LIBPATH32_X11)
     56        $(VBOX_LIBPATH32_X11)
    5357VBoxClient_LIBS.freebsd = \
    54         iconv
     58        iconv
    5559VBoxClient_LIBS.linux = \
    56         dl
     60        dl
    5761VBoxClient_LIBS.netbsd = \
    58         crypt
     62        crypt
    5963VBoxClient_LIBS.solaris = \
    60         dl
     64        dl
    6165VBoxClient_LIBS = \
    62         X11 Xt Xext Xmu
     66        X11 Xt Xext Xmu
    6367ifdef VBOX_WITH_DISTRO_XRAND_XINERAMA
    6468 VBoxClient_DEFS += WITH_DISTRO_XRAND_XINERAMA
     
    6872# XXX: -L comes from the template, but not rpath
    6973VBoxClient_LDFLAGS.netbsd = \
    70         -Wl,-rpath /usr/X11R7/lib
     74        -Wl,-rpath /usr/X11R7/lib
    7175
    7276ifdef VBOX_WITH_DRAG_AND_DROP
     
    7478 VBoxClient_DEFS += VBOX_DND_WITH_XTEST
    7579 VBoxClient_LIBS += \
    76         Xtst
     80        Xtst
    7781 endif
    7882endif
     
    8387ifeq ($(KBUILD_TARGET),linux)
    8488VBoxClient_LDFLAGS.amd64 += \
    85         -Wl,--wrap=memcpy
     89        -Wl,--wrap=memcpy
    8690endif
    8791
     
    9296ifdef VBOX_WITH_DRAG_AND_DROP
    9397VBoxClient_DEFS += \
    94         VBOX_WITH_DRAG_AND_DROP \
    95         $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,)
     98        VBOX_WITH_DRAG_AND_DROP \
     99        $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,)
    96100VBoxClient_SOURCES += \
    97         draganddrop.cpp
     101        draganddrop.cpp
    98102VBoxClient_LIBS     += \
    99         $(VBOX_LIB_VBGL_R3) \
    100         $(PATH_STAGE_LIB)/additions/VBoxDnDGuestR3Lib$(VBOX_SUFF_LIB)
     103        $(VBOX_LIB_VBGL_R3) \
     104        $(PATH_STAGE_LIB)/additions/VBoxDnDGuestR3Lib$(VBOX_SUFF_LIB)
    101105endif
    102106
    103107ifdef VBOX_WITH_SHARED_CLIPBOARD
    104108 VBoxClient_DEFS += \
    105         VBOX_WITH_SHARED_CLIPBOARD \
    106         $(if $(VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS),VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS,)
     109        VBOX_WITH_SHARED_CLIPBOARD \
     110        $(if $(VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS),VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS,)
    107111 VBoxClient_SOURCES += \
    108         $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-common.cpp \
    109         $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-x11.cpp \
    110         clipboard.cpp
     112        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-common.cpp \
     113        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-x11.cpp \
     114        clipboard.cpp
    111115 ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
    112116  VBoxClient_DEFS    += VBOX_WITH_SHARED_CLIPBOARD_GUEST
    113117  VBoxClient_SOURCES += \
    114         $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp \
    115         $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/ClipboardPath.cpp
     118        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp \
     119        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/ClipboardPath.cpp
    116120  ifdef VBOX_WITH_SHARED_CLIPBOARD_FUSE
    117121   VBoxClient_DEFS    += VBOX_WITH_SHARED_CLIPBOARD_FUSE
    118122   # @todo Make this dynamic loading more generic.
    119123   VBoxClient_SOURCES += \
    120         $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount/fuse.cpp \
    121         clipboard-fuse.cpp
     124        $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount/fuse.cpp \
     125        clipboard-fuse.cpp
    122126   # @todo Ditto.
    123127   VBoxClient_INCS    += \
    124         $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount
     128        $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount
    125129  endif
    126130 endif
     
    146150$$(tstSeamlessX11-auto_0_OUTDIR)/tstSeamlessX11-auto.run: \
    147151       $$(tstSeamlessX11-auto_1_STAGE_TARGET)
    148         export VBOX_LOG_DEST=nofile; $(tstSeamlessX11-auto_1_STAGE_TARGET) quiet
    149         $(QUIET)$(APPEND) -t "$@" "done"
     152        export VBOX_LOG_DEST=nofile; $(tstSeamlessX11-auto_1_STAGE_TARGET) quiet
     153        $(QUIET)$(APPEND) -t "$@" "done"
    150154
    151155  #
  • trunk/src/VBox/Additions/x11/VBoxClient/display-svga-x11.cpp

    r84369 r84479  
    191191static int determineOutputCount();
    192192
    193 #define checkFunctionPtr(pFunction)                                     \
     193#define checkFunctionPtrReturn(pFunction)                               \
    194194    do{                                                                 \
    195195        if (!pFunction)                                                 \
     
    199199            x11Context.pRandLibraryHandle = NULL;                       \
    200200            return VERR_NOT_FOUND;                                      \
     201        }                                                               \
     202    }while(0)
     203
     204#define checkFunctionPtr(pFunction)                                     \
     205    do{                                                                 \
     206        if (!pFunction)                                                 \
     207        {                                                               \
     208            VBClLogFatalError("Could not find symbol address\n");       \
    201209        }                                                               \
    202210    }while(0)
     
    733741
    734742    *(void **)(&x11Context.pXRRSelectInput) = dlsym(x11Context.pRandLibraryHandle, "XRRSelectInput");
    735     checkFunctionPtr(x11Context.pXRRSelectInput);
     743    checkFunctionPtrReturn(x11Context.pXRRSelectInput);
    736744
    737745    *(void **)(&x11Context.pXRRQueryExtension) = dlsym(x11Context.pRandLibraryHandle, "XRRQueryExtension");
    738     checkFunctionPtr(x11Context.pXRRQueryExtension);
     746    checkFunctionPtrReturn(x11Context.pXRRQueryExtension);
    739747
    740748    *(void **)(&x11Context.pXRRQueryVersion) = dlsym(x11Context.pRandLibraryHandle, "XRRQueryVersion");
    741     checkFunctionPtr(x11Context.pXRRQueryVersion);
    742 
     749    checkFunctionPtrReturn(x11Context.pXRRQueryVersion);
     750
     751    /* Don't bail out when XRRGetMonitors XRRFreeMonitors are missing as in Oracle Solaris 10. It is not crucial esp. for single monitor. */
    743752    *(void **)(&x11Context.pXRRGetMonitors) = dlsym(x11Context.pRandLibraryHandle, "XRRGetMonitors");
    744753    checkFunctionPtr(x11Context.pXRRGetMonitors);
    745754
    746     *(void **)(&x11Context.pXRRGetScreenResources) = dlsym(x11Context.pRandLibraryHandle, "XRRGetScreenResources");
    747     checkFunctionPtr(x11Context.pXRRGetScreenResources);
    748 
    749     *(void **)(&x11Context.pXRRSetCrtcConfig) = dlsym(x11Context.pRandLibraryHandle, "XRRSetCrtcConfig");
    750     checkFunctionPtr(x11Context.pXRRSetCrtcConfig);
    751 
    752755    *(void **)(&x11Context.pXRRFreeMonitors) = dlsym(x11Context.pRandLibraryHandle, "XRRFreeMonitors");
    753756    checkFunctionPtr(x11Context.pXRRFreeMonitors);
    754757
     758    *(void **)(&x11Context.pXRRGetScreenResources) = dlsym(x11Context.pRandLibraryHandle, "XRRGetScreenResources");
     759    checkFunctionPtrReturn(x11Context.pXRRGetScreenResources);
     760
     761    *(void **)(&x11Context.pXRRSetCrtcConfig) = dlsym(x11Context.pRandLibraryHandle, "XRRSetCrtcConfig");
     762    checkFunctionPtrReturn(x11Context.pXRRSetCrtcConfig);
     763
    755764    *(void **)(&x11Context.pXRRFreeScreenResources) = dlsym(x11Context.pRandLibraryHandle, "XRRFreeScreenResources");
    756     checkFunctionPtr(x11Context.pXRRFreeMonitors);
     765    checkFunctionPtrReturn(x11Context.pXRRFreeScreenResources);
    757766
    758767    *(void **)(&x11Context.pXRRFreeModeInfo) = dlsym(x11Context.pRandLibraryHandle, "XRRFreeModeInfo");
    759     checkFunctionPtr(x11Context.pXRRFreeModeInfo);
     768    checkFunctionPtrReturn(x11Context.pXRRFreeModeInfo);
    760769
    761770    *(void **)(&x11Context.pXRRFreeOutputInfo) = dlsym(x11Context.pRandLibraryHandle, "XRRFreeOutputInfo");
    762     checkFunctionPtr(x11Context.pXRRFreeOutputInfo);
     771    checkFunctionPtrReturn(x11Context.pXRRFreeOutputInfo);
    763772
    764773    *(void **)(&x11Context.pXRRSetScreenSize) = dlsym(x11Context.pRandLibraryHandle, "XRRSetScreenSize");
    765     checkFunctionPtr(x11Context.pXRRSetScreenSize);
     774    checkFunctionPtrReturn(x11Context.pXRRSetScreenSize);
    766775
    767776    *(void **)(&x11Context.pXRRUpdateConfiguration) = dlsym(x11Context.pRandLibraryHandle, "XRRUpdateConfiguration");
    768     checkFunctionPtr(x11Context.pXRRUpdateConfiguration);
     777    checkFunctionPtrReturn(x11Context.pXRRUpdateConfiguration);
    769778
    770779    *(void **)(&x11Context.pXRRAllocModeInfo) = dlsym(x11Context.pRandLibraryHandle, "XRRAllocModeInfo");
    771     checkFunctionPtr(x11Context.pXRRAllocModeInfo);
     780    checkFunctionPtrReturn(x11Context.pXRRAllocModeInfo);
    772781
    773782    *(void **)(&x11Context.pXRRCreateMode) = dlsym(x11Context.pRandLibraryHandle, "XRRCreateMode");
    774     checkFunctionPtr(x11Context.pXRRCreateMode);
     783    checkFunctionPtrReturn(x11Context.pXRRCreateMode);
    775784
    776785    *(void **)(&x11Context.pXRRGetOutputInfo) = dlsym(x11Context.pRandLibraryHandle, "XRRGetOutputInfo");
    777     checkFunctionPtr(x11Context.pXRRGetOutputInfo);
     786    checkFunctionPtrReturn(x11Context.pXRRGetOutputInfo);
    778787
    779788    *(void **)(&x11Context.pXRRGetCrtcInfo) = dlsym(x11Context.pRandLibraryHandle, "XRRGetCrtcInfo");
    780     checkFunctionPtr(x11Context.pXRRGetCrtcInfo);
     789    checkFunctionPtrReturn(x11Context.pXRRGetCrtcInfo);
    781790
    782791    *(void **)(&x11Context.pXRRAddOutputMode) = dlsym(x11Context.pRandLibraryHandle, "XRRAddOutputMode");
    783     checkFunctionPtr(x11Context.pXRRAddOutputMode);
     792    checkFunctionPtrReturn(x11Context.pXRRAddOutputMode);
    784793
    785794    return VINF_SUCCESS;
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette