qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] qemu-i386 does not start on x86_64 or i686
@ 2007-10-18 21:46 Ronan Keryell
  2007-10-20  6:18 ` Rob Landley
  2007-10-22 13:44 ` Thayne Harbaugh
  0 siblings, 2 replies; 6+ messages in thread
From: Ronan Keryell @ 2007-10-18 21:46 UTC (permalink / raw)
  To: qemu-devel

Anybody kind enough to have a look at :
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=446868

I've asked some other people and they hit the same issue.
It's not clear to me where the bug is since it happens very early in the
starting process...

Thank you,
-- 
  Ronan KERYELL                 |\/  Tel:    (+33|0) 2.29.00.14.15
  Département Informatique      |/)  Fax:    (+33|0) 2.29.00.12.82
  ENST Bretagne, CS 83818       K    GSM:    (+33|0) 6.13.14.37.66
  F-29238 PLOUZANÉ CEDEX 3      |\   E-mail: rk@enstb.org
  FRANCE                        | \  http://enstb.org/~keryell
                                     sip:keryell@ekiga.net

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] qemu-i386 does not start on x86_64 or i686
  2007-10-18 21:46 [Qemu-devel] qemu-i386 does not start on x86_64 or i686 Ronan Keryell
@ 2007-10-20  6:18 ` Rob Landley
  2007-10-22 13:44 ` Thayne Harbaugh
  1 sibling, 0 replies; 6+ messages in thread
From: Rob Landley @ 2007-10-20  6:18 UTC (permalink / raw)
  To: qemu-devel; +Cc: Ronan Keryell

On Thursday 18 October 2007 4:46:50 pm Ronan Keryell wrote:
> Anybody kind enough to have a look at :
> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=446868
>
> I've asked some other people and they hit the same issue.
> It's not clear to me where the bug is since it happens very early in the
> starting process...
>
> Thank you,

There have been several earlier threads on this.  Here's one I started back in 
June: http://lists.gnu.org/archive/html/qemu-devel/2007-06/msg00303.html

It was still broken, last I checked.  I'd try to do a git bisect, but 0.9.0 
was still broken and if you go back too far it can't find "gcc-3.4" and barfs 
because the gcc everything else in the world builds with is 4.x.  (What broke 
it was moving the system to glibc 2.5, I.E. upgrading Ubuntu to 7.04.  Old 
versions of qemu don't run against that either.)

It only affects user mode, not system mode, and only the i386 target, so I 
just delete that executable after the install so nothing tries to use it.

Rob
-- 
"One of my most productive days was throwing away 1000 lines of code."
  - Ken Thompson.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] qemu-i386 does not start on x86_64 or i686
  2007-10-18 21:46 [Qemu-devel] qemu-i386 does not start on x86_64 or i686 Ronan Keryell
  2007-10-20  6:18 ` Rob Landley
@ 2007-10-22 13:44 ` Thayne Harbaugh
  2007-10-26  0:52   ` Rob Landley
  1 sibling, 1 reply; 6+ messages in thread
From: Thayne Harbaugh @ 2007-10-22 13:44 UTC (permalink / raw)
  To: qemu-devel


On Thu, 2007-10-18 at 23:46 +0200, Ronan Keryell wrote:
> Anybody kind enough to have a look at :
> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=446868
> 
> I've asked some other people and they hit the same issue.
> It's not clear to me where the bug is since it happens very early in the
> starting process...


I've been using this patch:

Index: qemu/linux-user/main.c
===================================================================
--- qemu.orig/linux-user/main.c	2007-10-15 13:52:13.000000000 -0600
+++ qemu/linux-user/main.c	2007-10-15 13:52:13.000000000 -0600
@@ -44,7 +44,7 @@
 
 /* for recent libc, we add these dummy symbols which are not declared
    when generating a linked object (bug in ld ?) */
-#if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(CONFIG_STATIC)
+#if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 3) && !defined(CONFIG_STATIC)
 long __preinit_array_start[0];
 long __preinit_array_end[0];
 long __init_array_start[0];

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] qemu-i386 does not start on x86_64 or i686
  2007-10-22 13:44 ` Thayne Harbaugh
@ 2007-10-26  0:52   ` Rob Landley
  2007-10-26  1:19     ` Thayne Harbaugh
  0 siblings, 1 reply; 6+ messages in thread
From: Rob Landley @ 2007-10-26  0:52 UTC (permalink / raw)
  To: qemu-devel, thayne

On Monday 22 October 2007 8:44:59 am Thayne Harbaugh wrote:
> On Thu, 2007-10-18 at 23:46 +0200, Ronan Keryell wrote:
> > Anybody kind enough to have a look at :
> > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=446868
> >
> > I've asked some other people and they hit the same issue.
> > It's not clear to me where the bug is since it happens very early in the
> > starting process...
>
> I've been using this patch:
>
> Index: qemu/linux-user/main.c
> ===================================================================
> --- qemu.orig/linux-user/main.c	2007-10-15 13:52:13.000000000 -0600
> +++ qemu/linux-user/main.c	2007-10-15 13:52:13.000000000 -0600
> @@ -44,7 +44,7 @@
>
>  /* for recent libc, we add these dummy symbols which are not declared
>     when generating a linked object (bug in ld ?) */
> -#if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) &&
> !defined(CONFIG_STATIC) +#if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 3) &&
> !defined(CONFIG_STATIC) long __preinit_array_start[0];
>  long __preinit_array_end[0];
>  long __init_array_start[0];

When I tried it, it went:

gcc-3.4 -Wall -O2 -g -fno-strict-aliasing -I. -I.. -I/home/landley/qemu/git/target-i386 -I/home/landley/qemu/git -I/home/landley/qemu/git/linux-user -I/home/landley/qemu/git/linux-user/i386 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/home/landley/qemu/git/fpu -DHAS_AUDIO -DHAS_AUDIO_CHOICE -I/home/landley/qemu/git/slirp    -c -o 
main.o /home/landley/qemu/git/linux-user/main.c
gcc-3.4 -g  -Wl,-shared   -o qemu-i386 main.o syscall.o mmap.o signal.o path.o 
osdep.o thunk.o elfload.o linuxload.o vm86.o libqemu.a gdbstub.o   -lm -lrt
/usr/lib/libc_nonshared.a(elf-init.oS): In function `__libc_csu_init':
(.text+0x2b): undefined reference to `__init_array_end'
/usr/lib/libc_nonshared.a(elf-init.oS): In function `__libc_csu_init':
(.text+0x34): undefined reference to `__init_array_start'
/usr/bin/ld: qemu-i386: hidden symbol `__init_array_end' isn't defined
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status
make[1]: *** [qemu-i386] Error 1
make[1]: Leaving directory `/home/landley/qemu/git/i386-linux-user'
make: *** [subdir-i386-linux-user] Error 2

Have you tried it with current cvs on Ubuntu 7.04?  (qemu-i386 has never 
worked for me built on that.)

Rob
-- 
"One of my most productive days was throwing away 1000 lines of code."
  - Ken Thompson.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] qemu-i386 does not start on x86_64 or i686
  2007-10-26  0:52   ` Rob Landley
@ 2007-10-26  1:19     ` Thayne Harbaugh
  2007-10-26 19:15       ` Rob Landley
  0 siblings, 1 reply; 6+ messages in thread
From: Thayne Harbaugh @ 2007-10-26  1:19 UTC (permalink / raw)
  To: Rob Landley; +Cc: qemu-devel


On Thu, 2007-10-25 at 19:52 -0500, Rob Landley wrote:
> On Monday 22 October 2007 8:44:59 am Thayne Harbaugh wrote:
> > On Thu, 2007-10-18 at 23:46 +0200, Ronan Keryell wrote:
> > > Anybody kind enough to have a look at :
> > > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=446868
> > >
> > > I've asked some other people and they hit the same issue.
> > > It's not clear to me where the bug is since it happens very early in the
> > > starting process...
> >
> > I've been using this patch:
> >
> > Index: qemu/linux-user/main.c
> > ===================================================================
> > --- qemu.orig/linux-user/main.c	2007-10-15 13:52:13.000000000 -0600
> > +++ qemu/linux-user/main.c	2007-10-15 13:52:13.000000000 -0600
> > @@ -44,7 +44,7 @@
> >
> >  /* for recent libc, we add these dummy symbols which are not declared
> >     when generating a linked object (bug in ld ?) */
> > -#if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) &&
> > !defined(CONFIG_STATIC) +#if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 3) &&
> > !defined(CONFIG_STATIC) long __preinit_array_start[0];
> >  long __preinit_array_end[0];
> >  long __init_array_start[0];
> 
> When I tried it, it went:
> 
> gcc-3.4 -Wall -O2 -g -fno-strict-aliasing -I. -I.. -I/home/landley/qemu/git/target-i386 -I/home/landley/qemu/git -I/home/landley/qemu/git/linux-user -I/home/landley/qemu/git/linux-user/i386 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/home/landley/qemu/git/fpu -DHAS_AUDIO -DHAS_AUDIO_CHOICE -I/home/landley/qemu/git/slirp    -c -o 
> main.o /home/landley/qemu/git/linux-user/main.c
> gcc-3.4 -g  -Wl,-shared   -o qemu-i386 main.o syscall.o mmap.o signal.o path.o 
> osdep.o thunk.o elfload.o linuxload.o vm86.o libqemu.a gdbstub.o   -lm -lrt
> /usr/lib/libc_nonshared.a(elf-init.oS): In function `__libc_csu_init':
> (.text+0x2b): undefined reference to `__init_array_end'
> /usr/lib/libc_nonshared.a(elf-init.oS): In function `__libc_csu_init':
> (.text+0x34): undefined reference to `__init_array_start'
> /usr/bin/ld: qemu-i386: hidden symbol `__init_array_end' isn't defined
> /usr/bin/ld: final link failed: Nonrepresentable section on output
> collect2: ld returned 1 exit status
> make[1]: *** [qemu-i386] Error 1
> make[1]: Leaving directory `/home/landley/qemu/git/i386-linux-user'
> make: *** [subdir-i386-linux-user] Error 2

Ick.  There's some funky magic going on in qemu/x86_64.ld and the above
patch is a hack-around.  The segfault is caused by preinit_array
function pointers (which are NULL) being dereferenced.  This is a great
opportunity for you to put your super-sleuth skills to work and figure
out the details and fix it. 8^)

> Have you tried it with current cvs on Ubuntu 7.04?  (qemu-i386 has never 
> worked for me built on that.)

Sorry - I'm doing work on Debian Lenny.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] qemu-i386 does not start on x86_64 or i686
  2007-10-26  1:19     ` Thayne Harbaugh
@ 2007-10-26 19:15       ` Rob Landley
  0 siblings, 0 replies; 6+ messages in thread
From: Rob Landley @ 2007-10-26 19:15 UTC (permalink / raw)
  To: thayne; +Cc: qemu-devel

On Thursday 25 October 2007 8:19:55 pm Thayne Harbaugh wrote:
> Ick.  There's some funky magic going on in qemu/x86_64.ld and the above
> patch is a hack-around.  The segfault is caused by preinit_array
> function pointers (which are NULL) being dereferenced.  This is a great
> opportunity for you to put your super-sleuth skills to work and figure
> out the details and fix it. 8^)

I did.  "rm /usr/local/bin/qemu-i386:

My build system only tries to use application emulation as a smoke test on the 
cross compiler (build a static "hello world" for the target and see if you 
get hello world) if the relevant qemu-$target exists.  If the relevant 
qemu-$target isn't there (ala qemu-x86_64) then the test is automatically 
skipped.

99% of what I use qemu for is system emulation, and that works fine for me.  
I'm happy to test out other people's fixes for this, but by response to the 
weird prelinking logic would probably be "rip it all out", and I suspect it's 
there for a reason.

Most of the qemu developers seem to be happy if it works on their machines.  
Thus obscure things nobody uses (like gcc 4.x and Ubuntu 7.04) fall through 
the cracks.  If there was a stable release coming I might take a little more 
interest in solving this problem before then, but the last few times I asked 
there were no plans for such.

Rob
-- 
"One of my most productive days was throwing away 1000 lines of code."
  - Ken Thompson.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-10-26 18:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-18 21:46 [Qemu-devel] qemu-i386 does not start on x86_64 or i686 Ronan Keryell
2007-10-20  6:18 ` Rob Landley
2007-10-22 13:44 ` Thayne Harbaugh
2007-10-26  0:52   ` Rob Landley
2007-10-26  1:19     ` Thayne Harbaugh
2007-10-26 19:15       ` Rob Landley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).