bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: `print' does not print


From: Ralf Fassel
Subject: Re: `print' does not print
Date: Mon, 25 Mar 2002 14:47:41 +0100

* Eli Zaretskii
| Assuming for a moment that the problem is caused by some disruption
| of memory allocation for the standard handles, one thing to try is
| to use setvbuf to allocate a buffer for stdout, somewhere near the
| beginning of `main'.  Does that help?

The code snipped I tried is:

     if (initialized) {
          if (setvbuf (stdout, stdout_buffer, _IOLBF, BUFSIZ)) {
                  write(2, "setvbuf failed\n", 15);
                  exit(1);
          }
          write (2,"setbuf ok\n",10);
     }

where `stdout_buffer' was a global char[BUFSIZ] in emacs.c (malloc'ing
it didn't make any difference).

Didn't help
- at the start of main in emacs.c, #737 just before calling `sort_args()'
- at the end of main before calling `Frecursive_edit()'
- in `printchar', where I had to trick a bit to invoke it only once at
  first invocation (reset a static init-var in main to 0, since that
  init-var was already initialized in the dumped emacs)
- any variation of
    _IOFBF  causes input/output to be fully buffered.
     _IOLBF  causes output to be line buffered; the buffer will be flushed
             when a newline is written, the buffer is full, or input is
             requested.
     _IONBF  causes input/output to be completely unbuffered.
  for the buffering.

It also tried to use unbuffered I/O via setbuf() with a NULL pointer,
didn't help either.

It also did not help to freopen() stdout to some file at the same
places.

=========================================================

I then had a look what had actually changed in unexelf.c, and with the
following diff applied to unexelf.c I can make it work again
(i.e. disabling the SGI-specials introduced for the .got section):

*** unexelf.c.21.2      Mon Jan 28 17:33:22 2002
--- unexelf.c   Mon Mar 25 14:40:55 2002
***************
*** 1033,1038 ****
--- 1033,1039 ----
                      ".lit4")
          || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
                      ".lit8")
+ #if 0
  #if __sgi
          /* According to David Kaelbling <drk@bobo.hudson.sgi.com>,
             the SGI-specific section below is required to avoid core
***************
*** 1042,1047 ****
--- 1043,1049 ----
          || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
                      ".got")
  #endif
+ #endif
          || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
                      ".sdata1")
          || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
***************
*** 1220,1228 ****
--- 1222,1232 ----
                        ".lit4")
            || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
                        ".lit8")
+ #if 0
  #if __sgi
            || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
                        ".got")
+ #endif
  #endif
            || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
                        ".sdata1")

I did configure emacs as

# ./configure  --prefix=/software/emacs/21.2
# -exec-prefix=/software/emacs/21.2/IRIX-6 --with-pop
# --with-x-toolkit=athena

R'



reply via email to

[Prev in Thread] Current Thread [Next in Thread]