From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gerald Pfeifer To: egcs@egcs.cygnus.com Cc: egcs-patches@egcs.cygnus.com Subject: Re: egcs and Linux kernels Date: Wed, 31 Mar 1999 23:46:00 -0000 Message-ID: References: <199903101527.KAA15375@blastula.phys.columbia.edu> X-SW-Source: 1999-03n/msg00402.html Message-ID: <19990331234600.V1jrUyWSiIOeOTX941QC82ZPjgJ5DMVKbAc0ZMQIS3g@z> On Wed, 10 Mar 1999, Zack Weinberg wrote: > My understanding, which should be confirmed by someone else, such as > Bernd Schmidt: Thanks! Based on Zack's, Jeff's and Joe's remarks I have installed the following change to our FAQ. Please review the modified entry carefully and let me know about any further changes/fixes you'd like to see. Thanks! Gerald Index: faq.html =================================================================== RCS file: /egcs/carton/cvsfiles/wwwdocs/htdocs/faq.html,v retrieving revision 1.111 diff -c -3 -p -r1.111 faq.html *** faq.html 1999/03/10 12:14:16 1.111 --- faq.html 1999/03/10 20:23:57 *************** comp.std.c++ FAQ. *** 55,61 ****
  • Problems with Invalid `asm' statements
  • Bootstrap comparison failures on HPs
  • Bootstrap loops rebuilding cc1 over and over !
  • Problems building Linux kernels
  • EGCS with Windows
  • EGCS with OS/2
  • How do I compile X11 headers with g++ --- 55,61 ----
  • Problems with Invalid `asm' statements
  • Bootstrap comparison failures on HPs
  • Bootstrap loops rebuilding cc1 over and over !
  • Building Linux kernels
  • EGCS with Windows
  • EGCS with OS/2
  • How do I compile X11 headers with g++ *************** make program; however, you may have succ *** 594,626 **** you do not have GNU make available.
    !

    Problems building Linux kernels

    !

    If you have tried to build a 2.0.xx kernel for Intel machines with ! EGCS, then you are on your own. The 2.0.xx kernels are to be built only ! with gcc-2.7.2. They use certain asm constructs which are incorrect, but ! (by accident) happen to work with gcc-2.7.2. If you insist on building ! 2.0.xx kernels with egcs, you may be interested in this ! patch which ! fixes some of the asm problems. You will also want to change asm constructs ! to avoid clobbering their input operands. ! !

    If you installed a recent binutils/gas snapshot on your GNU/Linux system, ! you may not be able to build the kernel because objdump does not understand ! the "-k" switch. The solution for this problem is to remove /usr/bin/encaps. ! !

    The reason you must remove /usr/bin/encaps is because it is an obsolete ! program that was part of older binutils distributions; the Linux kernel's ! Makefile looks for this program to decide if you have an old or a new ! binutils. Problems occur if you installed a new binutils but haven't ! removed encaps, because the Makefile thinks you have the old one. So zap ! it; trust us, you won't miss it. !

    You may get errors with the X driver of the form

      _X11TransSocketUNIXConnect: Can't connect: errno = 111
      
    !

    It's a kernel bug. The function sys_iopl in arch/i386/kernel/ioport.c does an illegal hack which used to work but is now broken since GCC optimizes more aggressively . The newer 2.1.x kernels already have a fix which should also work in 2.0.32. --- 594,627 ---- you do not have GNU make available.


    !

    Building Linux kernels

    !

    Linux 2.2.x kernels work with any version of egcs. !

    If you try to build a 2.0.x kernel for Intel machines with egcs, ! then you are on your own. The 2.0.x kernels are to be built only with ! gcc 2.7.2. They use certain asm constructs which are ! incorrect, but (by accident) happen to work with gcc 2.7.2. If you ! insist on building 2.0.x kernels with egcs, you may be interested in ! this patch ! which fixes some of the asm problems. You will also want to change ! asm constructs to avoid clobbering their input ! operands. ! !

    If you installed a recent binutils/gas snapshot on your GNU/Linux ! system, you may not be able to build the kernel because objdump does ! not understand the "-k" switch. The solution for this problem is to ! remove /usr/bin/encaps. (This is an obsolete program that was part of ! older binutils distributions; the Linux kernel's Makefile looks for ! this program to decide if you have an old or a new binutils. Problems ! occur if you installed a new binutils but haven't removed encaps, ! because the Makefile thinks you have the old one.) ! !

    Finally, you may get errors with the X driver of the form

      _X11TransSocketUNIXConnect: Can't connect: errno = 111
      
    !

    This is a kernel bug. The function sys_iopl in arch/i386/kernel/ioport.c does an illegal hack which used to work but is now broken since GCC optimizes more aggressively . The newer 2.1.x kernels already have a fix which should also work in 2.0.32.