Subject: bug#22975: 25.0.92; CANNOT_DUMP build can't start in tty mode

From: Eli Zaretskii <[email-masked]>
Date: Sat, 12 Mar 2016 12:01:00 +0200

> Date: Fri, 11 Mar 2016 23:06:25 +0200
> From: Eli Zaretskii <[email-masked]>
> Cc: [email-masked], [email-masked]
> 
> > From: Andreas Schwab <[email-masked]>
> > Cc: Ken Raeburn <[email-masked]>,  [email-masked]
> > Date: Fri, 11 Mar 2016 21:51:04 +0100
> > 
> > Eli Zaretskii <[email-masked]> writes:
> > 
> > > OK, I see.  So now it's crystal clear that bidi-display-reordering
> > > should be bound to nil until loadup finishes, otherwise we are
> > > playing with fire.
> > >
> > > Is there a way to know that the build CANNOT_DUMP from Lisp?
> > 
> > Would it be wrong to do this always?
> 
> I didn't mean to say it wasn't; the above 2 questions are 2 separate
> issues.

It turns out we already had protection for this: xdisp.c was looking
at the value of purify-flag to decide when it is safe to perform bidi
reordering.  That protection was added to fix bug#9963.

However, a change in Dec 2013 made purify-flag be nil on systems that
CANNOT_DUMP when they process loadup.el, so that protection was lost
on those systems.

I've now added a special variable for this purpose, and changed the
display engine to use it instead of purify-flag.  Ken, could you
please see if the latest emacs-25 branch resolves the original problem
you reported?  If Emacs succeeds to start in tty mode after these
changes, please type "C-h H" and see if the Arabic and Hebrew
greetings are displayed correctly reordered (moving cursor with C-f
across those parts should move right-to-left when point is inside
those words).

Thanks.