Subject: bug#13818: 24.3.50; Bootstrap failed on Cygwin due to revno: 111870

From: Ken Brown <[email-masked]>
Date: Tue, 26 Feb 2013 18:13:31 -0500

On 2/26/2013 12:35 PM, Paul Eggert wrote:
> On 02/26/13 04:42, Ken Brown wrote:
>> On 2/26/2013 2:23 AM, Katsumi Yamaoka wrote:
>>> In GNU Emacs 24.3.50.1 (i686-pc-cygwin, X toolkit, Xaw3d scroll bars)
>>>    of 2013-02-26 on localhost
>>> Bzr revision: 111880 [email-masked]
>>> Windowing system distributor `The Cygwin/X Project', version 11.0.11302000
>>> Configured using:
>>>    `configure --verbose --with-x-toolkit=lucid --without-imagemagick
>>>    --without-dbus --without-gconf --without-gsettings'
>>>
>>> When dumping temacs it stops by the following error:
>>>
>>> vm-limit.o: In function `memory_warnings':
>>> src/vm-limit.c:239: undefined reference to `_data_start'

I see that Katsumi just answered, but here are the answers on my system.

> Can you please give the full shell command that
> generated that line?  I assume it's something like
> "gcc ... -o temacs ..." but would like the details.

gcc -std=gnu99 -Demacs  -I. -I/home/kbrown/src/emacs/test/src  -I../lib 
-I/home/kbrown/src/emacs/test/src/../lib    -D_REENTRANT 
-I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/pango-1.0 
-I/usr/include/gio-unix-2.0/ -I/usr/include/cairo 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 
-I/usr/lib/glib-2.0/include -I/usr/include/harfbuzz 
-I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng15 
   -DGDK_DISABLE_DEPRECATION_WARNINGS -I/usr/include/freetype2 
-D_REENTRANT -I/usr/include/librsvg-2.0 -I/usr/include/glib-2.0 
-I/usr/lib/glib-2.0/include -I/usr/include/gdk-pixbuf-2.0 
-I/usr/include/cairo -I/usr/include/libpng15 -I/usr/include/pixman-1 
-I/usr/include/freetype2   -fopenmp -I/usr/include/ImageMagick 
-I/usr/include/libxml2   -I/usr/include/dbus-1.0 
-I/usr/lib/dbus-1.0/include    -D_REENTRANT -I/usr/include/glib-2.0 
-I/usr/lib/glib-2.0/include   -D_REENTRANT -I/usr/include/gconf/2 
-I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include 
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include 
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include 
-I/usr/include/freetype2       -MMD -MF deps/.d -MP 
-I/usr/include/p11-kit-1      -g3 -O2    \
   -o temacs vm-limit.o dispnew.o frame.o scroll.o xdisp.o menu.o 
xmenu.o window.o  charset.o coding.o category.o ccl.o character.o 
chartab.o bidi.o  cm.o term.o terminal.o xfaces.o xterm.o xfns.o 
xselect.o xrdb.o xsmfns.o xsettings.o xgselect.o gtkutil.o 
emacsgtkfixed.o dbusbind.o  emacs.o keyboard.o macros.o keymap.o 
sysdep.o  buffer.o filelock.o insdel.o marker.o  minibuf.o fileio.o 
dired.o  cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o 
  alloc.o data.o doc.o editfns.o callint.o  eval.o floatfns.o fns.o 
font.o print.o lread.o  syntax.o unexcw.o bytecode.o  process.o gnutls.o 
callproc.o  region-cache.o sound.o atimer.o  doprnt.o intervals.o 
textprop.o composite.o xml.o inotify.o  profiler.o     sheap.o cygw32.o 
xfont.o ftfont.o xftfont.o ftxfont.o   fontset.o fringe.o image.o 
terminfo.o  gmalloc.o   lastfile.o   ../lib/libgnu.a      -ltiff -ljpeg 
-lpng -lz -lm -lgif -lXpm  -lgtk-3 -latk-bridge-2.0 -lgdk-3 -latk-1.0 
-lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage 
-lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lgio-2.0 -lXfixes 
-lpangoft2-1.0 -lharfbuzz -lpango-1.0 -lcairo -lpixman-1 -lfontconfig 
-lexpat -lfreetype -lbz2 -lxcb-shm -lxcb-render -lXrender -lXext -lX11 
-lxcb -lXau -lXdmcp -lpng15 -lm -lz -lgmodule-2.0 -lgobject-2.0 -lffi 
-lglib-2.0 -lintl -liconv -lpcre   -lSM -lICE -lX11 -lXrender -lXft 
-lXrender -lfontconfig -lexpat -lfreetype -lz -lbz2 -lX11 -lxcb -lXau 
-lXdmcp     -lrsvg-2 -lgio-2.0 -lgdk_pixbuf-2.0 -lcairo -lgmodule-2.0 
-lgobject-2.0 -lffi -lpixman-1 -lfontconfig -lexpat -lfreetype -lbz2 
-lpng15 -lm -lz -lxcb-shm -lxcb-render -lXrender -lXext -lglib-2.0 
-lintl -liconv -lpcre -lX11 -lxcb -lXau -lXdmcp   -lMagickWand 
-lMagickCore       -ldbus-1 -lpthread -lrt      -lxml2 -lz -liconv -lm 
      -lncurses  -lgio-2.0 -lz -lgmodule-2.0 -lgobject-2.0 -lffi 
-lglib-2.0 -lintl -liconv -lpcre   -lgconf-2 -ldbus-1 -lpthread -lrt 
-lgio-2.0 -lz -lgmodule-2.0 -lgobject-2.0 -lffi -lglib-2.0 -lintl 
-liconv -lpcre   -lgobject-2.0 -lffi -lglib-2.0 -lintl -liconv -lpcre 
   -lfreetype -lz -lbz2   -lfontconfig -lexpat -lfreetype -lz -lbz2 
   -L/usr/bin -lgnutls -lnettle -lhogweed -lgmp -ltasn1 -lp11-kit -lz 
-lpthread

>> data_start used to be defined in pre-crt0.c on Cygwin,
>> but this file was removed.
>
> data_start is now supposed to be defined in vm-limit.c,
> on hosts where the linker does not define it for you.

The problem seems to be that HAVE_DATA_START is defined to 1, but 
DATA_START is not defined.  See below.

> Is there some significance to the leading underscore
> in that diagnostic?  (Is "_" automatically prepended
> to external symbols on Cygwin?)

I think it's automatically prepended.

> What does config.log say, after it says
> "checking for data_start"?

configure:10083: checking for data_start
configure:10099: gcc -std=gnu99 -o conftest.exe -g3 -O2     conftest.c  >&5
configure:10099: $? = 0
configure:10107: result: yes

> What is the value of HAVE_DATA_START in src/config.h?

1

> Also, please examine the output of "gcc -E ... vm-limit.c",
> where "..." contains the same flags as used for compiling
> vm-limit.c, to see how data_start was declared and defined
> in the preprocessor output.

It's declared as

   extern char data_start[];

but never defined.  Apparently DATA_START is not defined.  How is that 
supposed to happen?

Ken