When the linux kernel sets the NX bit vm86 segfaults when it tries to execute
code in memory that is not marked EXEC. Such code gets called whenever
we return from a VBIOS call to signal the calling program that the call
is actually finished and that we are not trapping for other reasons (like
IO accesses).
Use mprotect(2) to set these memory ranges PROT_EXEC.
(cherry picked from commit a9e20306fb)
Conflicts:
hw/xfree86/common/xf86Init.c
hw/xfree86/int10/pci.c
hw/xfree86/scanpci/xf86PciData.h
hw/xfree86/scanpci/xf86PciStdIds.h
hw/xfree86/scanpci/xf86PciStr.h
hw/xfree86/scanpci/xf86ScanPci.h
hw/xfree86/utils/pcitweak/pcitweak.c
hw/xfree86/utils/scanpci/scanpci.c
Re-removed most of the conflicting files.
Get rid of almost all uses of these definitions. They're still defined for
delinquent out-of-tree drivers, and also for the Mesa build. As well as
for miinitext.c. But largely gone.
xf86ExtendedInitInt10 to xf86int10GetBiosLocationType and
xf86int10GetBiosSegment.
These changes were tested on MGA hardware on x86-64 with various
combinations of InitPrimary and BiosLocation.
Add XSERV_t, TRANS_SERVER, TRANS_REOPEN to quash warnings.
Add #include <dix-config.h> or <xorg-config.h>, as appropriate, to all
source files in the xserver/xorg tree, predicated on defines of
HAVE_{DIX,XORG}_CONFIG_H. Change all Xfont includes to
<X11/fonts/foo.h>.
build fixes for AMD64.
Made shm* functions in the libc_wrapper more standard conformant by setting
errno correctly.
Use xf86ExendedInitInt10() in VBEExtendedInit() to be able to pass flags.