diff options
Diffstat (limited to 'xorg-server/hw/xfree86/doc/devel')
-rw-r--r-- | xorg-server/hw/xfree86/doc/devel/DebuggingHints | 192 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/doc/devel/Makefile.am | 1 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/doc/devel/Makefile.in | 72 |
3 files changed, 19 insertions, 246 deletions
diff --git a/xorg-server/hw/xfree86/doc/devel/DebuggingHints b/xorg-server/hw/xfree86/doc/devel/DebuggingHints deleted file mode 100644 index 300fe4813..000000000 --- a/xorg-server/hw/xfree86/doc/devel/DebuggingHints +++ /dev/null @@ -1,192 +0,0 @@ - - Xserver Debugging - ================= - -This file is intended to collect helpful hints on Xserver debugging. -I merely outline my experiences here. Somebody else might have better -methods on doing it. This person is therefore invited to share this -experience with the rest of the world by adding it here. - -Paul Flinders has made some patches to gdb to add support for loadable -modules. This version of gdb is currently available as binary for -Linux/x86 on Paul's web site: - - www.dawa.demon.co.uk/xfree-gdb - -This web-site also contains the patches to gdb 4.18 so you may port it -to other platforms. - -It loads the module symbols and supports all gdb features like -breakpointing, disassembling and single stepping. It also shows the -exact location of a signal 11. Paul has fixed the code so that all of -this is working even if using modules compiled without -g. You can -find his latest version on his web site. - -If no module aware gdb is available the following hints might help: - -1. Use remote login. This can be done thru a network connection or - simply by connecting a serial console. This enables you to watch - the Xservers output while running set breakpoints with gdb etc. - Don't even try to run the Xserver from a system console. Whenever - something happens gdb waits for input. However the Xserver has - locked the system console including the keyboard, therefore you'll - never be able to send any input to gdb. Even if your process - doesn't crash or you haven't set any breakpoints a vt switch can be - hazardous: When doing vt switching a signal is sent; unless you did - - gdb> handle SIGUSR1 nostop - - gdb waits for you to continue the program which cannot happen as - you don't have access to gdb's console. - -2. You can compile any source file with debugging symbols to obtain - more information about where an error occurred. Simply go to the - directory which holds the corresponding object file and do: - - # rm <file>.o - # xc/config/util/makeg.sh <file>.o - - After relinking the server or module gdb is able to obtain the - necessary debugging information and will show the exact line in the - source where the error ccurred. See also: - xc/config/util/makeg.man. - -3. In some cases it might be useful to have the assembler output of a - compiled source file. This can be obtained by doing: - - # make <file>.s - - or - - # xc/config/util/makeg.sh <file>.s - - Make will use exactly the same rules it uses for building *.o files. - -4. In some cases it might be useful to set breakpoints in modules. If - no module aware gdb is available you should add a call to one of - the three dummy breakpoint functions - - xf86Break1(), xf86Break2() and xf86Break3() - - to the source file and recompile the module. You now just have to - set a breakpoint onto the appropriate dummy functions. These - functions are located in the core part of the server and therefore - will be available any time. - -5. Without module support gdb is not able to print the function where - an error occurred in a module. - - If you get a line like: - - (gdb) bt - #0 0x823b4f5 in ?? () - .... - - You may obtain the function the address belongs to by calling - LoaderPrintSymbol(): - - (gdb) call LoaderPrintSymbol(0x823b4f5) - - The symbol returned might not always be the name of the function - which contains the address. In case of static functions the symbol - is not known to the loader. However LoaderPrintSymbol() will print - the nearest known function and the offset from its start. You may - easily find the exact location of the address if you do: - - # objdump --disassemble <file>.o - - <file>.o is the name of the object file containing the symbol printed. - -6. Locating static symbols in modules is simpler if the module is a - single object file instead of a library. Such a object file can - easily be build from a library: # mkdir tmp # cd tmp; ar x - module-path/<libname>.a # ld -r *.o -o module-path/<name>.o - - When calling LoaderPrintSymbol() the closes public symbol will be - printed together with the offset from the symbol's address. If a - static symbol comes before the first public symbol in a module The - following trick may help: - - create a file 1-<name>.c in tmp/ - containing: - void Dummy-<name>() {} - - Compile it: - - # gcc -c 1-<name>.c - - and do the link step above. - - This way Dummy-<name>() will be the first public function in the - module. All addresses in static function can now be printed - relatively to this address if no other public function comes before - this static one. - -7. In some situations it is quite helpful to add debugging symbols to - the binary. This can be done per object file. Simply remove the - object file and do - - # makeg - - When looking for a bug in a module these debugging infos can be - very helpful: Calling LoaderPrintSymbol() as described above will - return a function and an offset giving the exact location of the - address with respect to this function entry point. When - disassembling an object file with debugging symbols: # objdump -d - -l <file>.o one will receive a disassembled output containing line - number information. Thus one can locate the exact line of code - where the error occurred. - -8. To quickly trace the value of a variable declared in a module three - dummy variables have been added to the core part: - - CARD32 xf86DummyVar1; - CARD32 xf86DummyVar2; - CARD32 xf86DummyVar3; - - The variable can be assigned to one of them. One can then use gdb - to return the value of this variable: - - gdb> p /x xf86DummyVar1 - -9. Sometimes it might be useful to check how the preprocessor replaced - symbols. One can obtain a preprocessed version of the source file - by doing: - - make <filename>.i - - This will generate a preprocessed source in <filename>.i. - -10. xfree() can catch if one tries to free a memory range twice. You - will get the message: - - Xalloc error: range already freed in Xrealloc() :-( - - To find the location from which xfree() was called one can - breakpoint on XfreeTrap(). The backtrace should show the origin of the - call this call. - -11. To access mapped physical memory the following functions might be - useful. - - These may be used to access physical memory that was mapped using - the flags VIDMEM_FRAMEBUFFER or VIDMEM_MMIO32: - - CARD8 xf86PeekFb8(CARD8 *p); - CARD16 xf86PeekFb16(CARD16 *p); - CARD32 xf86PeekFb32(CARD32 *p); - void xf86PokeFb8(CARD8 *p, CARD8 v); - void xf86PokeFb16(CARD16 *p, CARD16 v); - void xf86PokeFb32(CARD16 *p, CARD32 v); - - Physical memory which was mapped by setting VIDMEM_MMIO should be - accessed using the following. Here the base address to which the - memory is mapped and the offset are required separately. - - CARD8 xf86PeekMmio8(pointer Base, unsigned long Offset); - CARD16 xf86PeekMmio16(pointer Base, unsigned long Offset); - CARD32 xf86PeekMmio32(pointer Base, unsigned long Offset); - void xf86PokeMmio8(pointer Base, unsigned long Offset, CARD8 v); - void xf86PokeMmio16(pointer Base, unsigned long Offset, CARD16 v); - void xf86PokeMmio32(pointer Base, unsigned long Offset, CARD32 v); - diff --git a/xorg-server/hw/xfree86/doc/devel/Makefile.am b/xorg-server/hw/xfree86/doc/devel/Makefile.am index 6ca350c38..eb8b1cb29 100644 --- a/xorg-server/hw/xfree86/doc/devel/Makefile.am +++ b/xorg-server/hw/xfree86/doc/devel/Makefile.am @@ -2,7 +2,6 @@ # not installed on the system for end-users EXTRA_DIST = \ - DebuggingHints \ Domain.note \ RAC.Notes \ Registry \ diff --git a/xorg-server/hw/xfree86/doc/devel/Makefile.in b/xorg-server/hw/xfree86/doc/devel/Makefile.in index 7c169aff3..d5d45e4a9 100644 --- a/xorg-server/hw/xfree86/doc/devel/Makefile.in +++ b/xorg-server/hw/xfree86/doc/devel/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. +# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -45,7 +45,6 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/do-not-use-config.h \ $(top_builddir)/include/xorg-server.h \ $(top_builddir)/include/dix-config.h \ - $(top_builddir)/include/xgl-config.h \ $(top_builddir)/include/xorg-config.h \ $(top_builddir)/include/xkb-config.h \ $(top_builddir)/include/xwin-config.h \ @@ -59,8 +58,9 @@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ -APPDEFAULTDIR = @APPDEFAULTDIR@ APPLE_APPLICATIONS_DIR = @APPLE_APPLICATIONS_DIR@ +APPLE_APPLICATION_ID = @APPLE_APPLICATION_ID@ +APPLE_APPLICATION_NAME = @APPLE_APPLICATION_NAME@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ @@ -81,10 +81,6 @@ CFLAGS = @CFLAGS@ COMPILEDDEFAULTFONTPATH = @COMPILEDDEFAULTFONTPATH@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DARWIN_LIBS = @DARWIN_LIBS@ DBUS_CFLAGS = @DBUS_CFLAGS@ @@ -106,6 +102,7 @@ DMXXIEXAMPLES_DEP_CFLAGS = @DMXXIEXAMPLES_DEP_CFLAGS@ DMXXIEXAMPLES_DEP_LIBS = @DMXXIEXAMPLES_DEP_LIBS@ DMXXMUEXAMPLES_DEP_CFLAGS = @DMXXMUEXAMPLES_DEP_CFLAGS@ DMXXMUEXAMPLES_DEP_LIBS = @DMXXMUEXAMPLES_DEP_LIBS@ +DOLT_BASH = @DOLT_BASH@ DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@ DRI2PROTO_LIBS = @DRI2PROTO_LIBS@ DRIPROTO_CFLAGS = @DRIPROTO_CFLAGS@ @@ -115,18 +112,15 @@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DRI_DRIVER_PATH = @DRI_DRIVER_PATH@ DSYMUTIL = @DSYMUTIL@ DTRACE = @DTRACE@ -ECHO = @ECHO@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ -FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ -FREETYPE_LIBS = @FREETYPE_LIBS@ GLX_ARCH_DEFINES = @GLX_ARCH_DEFINES@ GLX_DEFINES = @GLX_DEFINES@ GL_CFLAGS = @GL_CFLAGS@ @@ -145,7 +139,7 @@ KDRIVE_LIBS = @KDRIVE_LIBS@ KDRIVE_LOCAL_LIBS = @KDRIVE_LOCAL_LIBS@ KDRIVE_PURE_INCS = @KDRIVE_PURE_INCS@ KDRIVE_PURE_LIBS = @KDRIVE_PURE_LIBS@ -LAUNCHD = @LAUNCHD@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LD_EXPORT_SYMBOLS_FLAG = @LD_EXPORT_SYMBOLS_FLAG@ LEX = @LEX@ @@ -159,7 +153,10 @@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINUXDOC = @LINUXDOC@ +LIPO = @LIPO@ LN_S = @LN_S@ +LTCOMPILE = @LTCOMPILE@ +LTCXXCOMPILE = @LTCXXCOMPILE@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -171,8 +168,7 @@ MESA_SOURCE = @MESA_SOURCE@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ -MKFONTDIR = @MKFONTDIR@ -MKFONTSCALE = @MKFONTSCALE@ +NM = @NM@ NMEDIT = @NMEDIT@ OBJC = @OBJC@ OBJCCLD = @OBJCCLD@ @@ -181,8 +177,8 @@ OBJCFLAGS = @OBJCFLAGS@ OBJCLINK = @OBJCLINK@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ -OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ -OPENSSL_LIBS = @OPENSSL_LIBS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ @@ -215,7 +211,6 @@ VENDOR_NAME = @VENDOR_NAME@ VENDOR_NAME_SHORT = @VENDOR_NAME_SHORT@ VENDOR_RELEASE = @VENDOR_RELEASE@ VERSION = @VERSION@ -X11APP_ARCHS = @X11APP_ARCHS@ X11EXAMPLES_DEP_CFLAGS = @X11EXAMPLES_DEP_CFLAGS@ X11EXAMPLES_DEP_LIBS = @X11EXAMPLES_DEP_LIBS@ XDMCP_CFLAGS = @XDMCP_CFLAGS@ @@ -225,27 +220,12 @@ XDMXCONFIG_DEP_LIBS = @XDMXCONFIG_DEP_LIBS@ XDMX_CFLAGS = @XDMX_CFLAGS@ XDMX_LIBS = @XDMX_LIBS@ XDMX_SYS_LIBS = @XDMX_SYS_LIBS@ -XEGLMODULES_CFLAGS = @XEGLMODULES_CFLAGS@ -XEGL_LIBS = @XEGL_LIBS@ -XEGL_SYS_LIBS = @XEGL_SYS_LIBS@ XEPHYR_CFLAGS = @XEPHYR_CFLAGS@ -XEPHYR_DRI_LIBS = @XEPHYR_DRI_LIBS@ XEPHYR_INCS = @XEPHYR_INCS@ XEPHYR_LIBS = @XEPHYR_LIBS@ XF86CONFIGFILE = @XF86CONFIGFILE@ -XF86MISC_CFLAGS = @XF86MISC_CFLAGS@ -XF86MISC_LIBS = @XF86MISC_LIBS@ XF86VIDMODE_CFLAGS = @XF86VIDMODE_CFLAGS@ XF86VIDMODE_LIBS = @XF86VIDMODE_LIBS@ -XGLMODULES_CFLAGS = @XGLMODULES_CFLAGS@ -XGLMODULES_LIBS = @XGLMODULES_LIBS@ -XGLXMODULES_CFLAGS = @XGLXMODULES_CFLAGS@ -XGLXMODULES_LIBS = @XGLXMODULES_LIBS@ -XGLX_LIBS = @XGLX_LIBS@ -XGLX_SYS_LIBS = @XGLX_SYS_LIBS@ -XGL_LIBS = @XGL_LIBS@ -XGL_MODULE_PATH = @XGL_MODULE_PATH@ -XGL_SYS_LIBS = @XGL_SYS_LIBS@ XKB_BASE_DIRECTORY = @XKB_BASE_DIRECTORY@ XKB_BIN_DIRECTORY = @XKB_BIN_DIRECTORY@ XKB_COMPILED_DIR = @XKB_COMPILED_DIR@ @@ -256,10 +236,6 @@ XNESTMODULES_CFLAGS = @XNESTMODULES_CFLAGS@ XNESTMODULES_LIBS = @XNESTMODULES_LIBS@ XNEST_LIBS = @XNEST_LIBS@ XNEST_SYS_LIBS = @XNEST_SYS_LIBS@ -XORGCFG_DEP_CFLAGS = @XORGCFG_DEP_CFLAGS@ -XORGCFG_DEP_LIBS = @XORGCFG_DEP_LIBS@ -XORGCONFIG_DEP_CFLAGS = @XORGCONFIG_DEP_CFLAGS@ -XORGCONFIG_DEP_LIBS = @XORGCONFIG_DEP_LIBS@ XORG_CFLAGS = @XORG_CFLAGS@ XORG_INCS = @XORG_INCS@ XORG_LIBS = @XORG_LIBS@ @@ -268,13 +244,8 @@ XORG_MODULES_LIBS = @XORG_MODULES_LIBS@ XORG_OS = @XORG_OS@ XORG_OS_SUBDIR = @XORG_OS_SUBDIR@ XORG_SYS_LIBS = @XORG_SYS_LIBS@ -XPRINTMODULES_CFLAGS = @XPRINTMODULES_CFLAGS@ -XPRINTMODULES_LIBS = @XPRINTMODULES_LIBS@ -XPRINTPROTO_CFLAGS = @XPRINTPROTO_CFLAGS@ -XPRINTPROTO_LIBS = @XPRINTPROTO_LIBS@ -XPRINT_CFLAGS = @XPRINT_CFLAGS@ -XPRINT_LIBS = @XPRINT_LIBS@ -XPRINT_SYS_LIBS = @XPRINT_SYS_LIBS@ +XPBPROXY_CFLAGS = @XPBPROXY_CFLAGS@ +XPBPROXY_LIBS = @XPBPROXY_LIBS@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSDL_INCS = @XSDL_INCS@ @@ -307,8 +278,7 @@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -328,7 +298,6 @@ driverdir = @driverdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ extdir = @extdir@ -ft_config = @ft_config@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ @@ -338,12 +307,12 @@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ -launchagentsdir = @launchagentsdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ logdir = @logdir@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ @@ -361,10 +330,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -xglmoduledir = @xglmoduledir@ -xpconfigdir = @xpconfigdir@ EXTRA_DIST = \ - DebuggingHints \ Domain.note \ RAC.Notes \ Registry \ @@ -378,8 +344,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ |