On Tuesday 07 June 2005 21:47, Nix wrote:
> On Tue, 7 Jun 2005, [EMAIL PROTECTED] suggested tentatively:
> > On Tuesday 07 June 2005 18:21, Nix wrote:
> >> OK, so it's a -static TT build that's failing?
> >
> > Exactly.
>
> Built, with a randomly selected .config (that is, a .config I use for
> other things, not a .config with the values set at random!)
Hmm, broken-out in the archives works perfectly (with patch-scripts). Go until 
uml-link-tt-mode-against-nptl.patch and retry, and possibly even with the 
previous one... please.

> Not quite built without problems. Can you guess the cause of this?

> Guess where the static libutil.a is. That's right, /usr/lib. Are
> we searching it in that linker script? No :(
Ok, wait that I emerge that newer version and build starts failing here too 
and you'll get that fixed. A proper patch (ok for whatever SUBARCH you need) 
would be ok, either... Ok, it's doable because I must now link in 
arch/um/sys-SUBARCH/unmap_fin.o (it's done in -bs6 too), by passing 
-DSUBARCH=$(SUBARCH). You can pass a define for the path, too.

>
> With that applied, it builds...
>
> ... and segfaults almost at once on invocation:
>
> execve("./vmlinux", ["./vmlinux"], [/* 49 vars */]) = 0
> uname({sys="Linux", node="hades", ...}) = 0
> brk(0)                                  = 0xa0343000
> brk(0xa0343834)                         = 0xa0343834
> set_thread_area({entry_number:-1 -> 6, base_addr:0xa034381c, limit:1048575,
> seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1,
> seg_not_present:0, useable:1}) = 0 --- SIGSEGV (Segmentation fault) @ 0 (0)

Hmm, gdb would be more helpful... I was getting a SIGBUS somewhere on x86_64 
(with a native binary) here, and maybe it could be the same thing (no, it 
can't, your error is different, so I'm talking to myself):

(gdb) c
Continuing.
Checking for /proc/mm...found
Checking for the skas3 patch in the host...not found
Checking PROT_EXEC mmap in /tmp...OK

Program received signal SIGBUS, Bus error.
0x00000000601fee40 in memset ()
(gdb) where
#0  0x00000000601fee40 in memset ()
#1  0x0000000060006f4e in init_bootmem_core ()
#2  0x0000000060011259 in setup_physmem ()
#3  0x000000006001870d in linux_main ()
#4  0x000000006000fe91 in main ()

From the value in memset registers and from the code, it's this call in 
init_bootmem_core():
        memset(bdata->node_bootmem_map, 0xff, mapsize);

And here is the memory map... whoops! The code is trying to read from 
60c00000, which is mapped... but from an absurd address! And from a different 
file from all the rest!

$ cat /proc/904/maps
60000000-60001000 rwxp 00000000 fe:02 
1173995                            
/home/paolo/Admin/kernel/6/clean-linux-2.6.11/vmlinux
60001000-60238000 rwxs 00000000 00:0e 
1383099                            /tmp/vm_file-VOy5x5 (deleted)
60238000-60325000 rwxs 00000000 00:0e 
1383100                            /tmp/vm_file-16FWOn (deleted)
60325000-6045b000 rwxs 00000000 00:0e 
1383101                            /tmp/vm_file-8DBi6F (deleted)
6045b000-6047c000 rwxp 6045b000 00:00 0                                  
[heap]
60c00000-a2000000 rwxs ffffffffc0c00000 00:0e 
1383102                    /tmp/vm_file-JmW1nY (deleted)
2aaaaaaab000-2aaaaaaac000 rwxp 2aaaaaaab000 00:00 0
7fffffae1000-7fffffaf6000 rwxp 7fffffae1000 00:00 0                      
[stack]
ffffffffff600000-ffffffffffe00000 ---p 00000000 00:00 0                  
[vdso]

> Looks like a thread initialization problem to *me*. And there be very
> serious and nasty snarling dragons with sharp pointy carborundum teeth
Hmm, can you pass those along to kill the Computer against which I'm playing 
at Warcraft III?
> :(
This kind of problems is normally caused from wrong alignments in the linker 
script.

> (this box, btw, is an AMD Athlon 4: it *does* have CMOV support. Not
> that that could plausibly be the problem here.)

> Whoops!

> I guess not many people have tried to build -bs6, then: I doubt that would
> work terribly well in skas mode, either ;)
Guess it wouldn't build stop.
> > Seems like I'll have to resort to something bad... which is attached,
> > i.e. black magic (using -U from time to time).
>
> Black magic during debugging makes me nervous, so...

> > Alternatively, use patch1.bz2 and patch2.bz2, which have normal context
> > (the final patch has been generated by merging them).
>
> ... I used these, which applied fine.
Btw, I forgot that broken-out is in perfect state and would help more for 
debug...


> `Seasonal allergic rhinitis',
Exactly.
> i.e., plants trying to have sex with my 
> nose over my violent protests.

> Well, it's done that in the south-east of England, too, but I don't have
> to like it, and it's `exceptional' (i.e. `has happened almost every year
> for the last decade' :( )
Global warming, isn't it? However don't worry, the Gulf Current is going to 
stop so you'll get refreshed of -10 degrees...
-- 
Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!".
Paolo Giarrusso, aka Blaisorblade (Skype ID "PaoloGiarrusso", ICQ 215621894)
http://www.user-mode-linux.org/~blaisorblade

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[EMAIL PROTECTED]>
---

 clean-linux-2.6.11-paolo/arch/um/drivers/Makefile       |    4 ++--
 clean-linux-2.6.11-paolo/arch/um/scripts/Makefile.unmap |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff -puN arch/um/drivers/Makefile~uml-pcap-on-64bit-host arch/um/drivers/Makefile
--- clean-linux-2.6.11/arch/um/drivers/Makefile~uml-pcap-on-64bit-host	2005-06-08 02:09:55.000000000 +0200
+++ clean-linux-2.6.11-paolo/arch/um/drivers/Makefile	2005-06-08 02:09:55.000000000 +0200
@@ -17,10 +17,10 @@ ubd-objs := ubd_kern.o ubd_user.o
 port-objs := port_kern.o port_user.o
 harddog-objs := harddog_kern.o harddog_user.o
 
-LDFLAGS_pcap.o := -r -lpcap -L/usr/lib
+LDFLAGS_pcap.o := -r $(shell $(CC) $(CFLAGS) -print-file-name=libpcap.a)
 
 $(obj)/pcap.o: $(obj)/pcap_kern.o $(obj)/pcap_user.o
-	$(LD) -r -dp -o $@ $^ $(LDFLAGS_pcap.o)
+	$(LD) -r -dp -o $@ $^ $(LDFLAGS) $(LDFLAGS_pcap.o)
 #XXX: The call below does not work because the flags are added before the
 # object name, so nothing from the library gets linked.
 #$(call if_changed,ld)
diff -puN arch/um/scripts/Makefile.unmap~uml-pcap-on-64bit-host arch/um/scripts/Makefile.unmap
--- clean-linux-2.6.11/arch/um/scripts/Makefile.unmap~uml-pcap-on-64bit-host	2005-06-08 02:09:55.000000000 +0200
+++ clean-linux-2.6.11-paolo/arch/um/scripts/Makefile.unmap	2005-06-08 02:09:55.000000000 +0200
@@ -15,7 +15,7 @@ $(obj)/unmap.o: _c_flags = $(__UNMAP_CFL
 
 quiet_cmd_wrapld = LD      $@
 define cmd_wrapld
-	$(LD) $(LDFLAGS) -r -o $(obj)/unmap_tmp.o $< $(shell $(CC) -print-file-name=libc.a); \
+	$(LD) $(LDFLAGS) -r -o $(obj)/unmap_tmp.o $< $(shell $(CC) $(CFLAGS) -print-file-name=libc.a); \
 	$(OBJCOPY) $(UML_OBJCOPYFLAGS) $(obj)/unmap_tmp.o $@ -G switcheroo
 endef
 
_

Reply via email to