* [parisc-linux] Foiled by the linker again
@ 2000-05-29 21:34 bame
2000-05-30 2:49 ` Alan Modra
0 siblings, 1 reply; 4+ messages in thread
From: bame @ 2000-05-29 21:34 UTC (permalink / raw)
To: parisc-linux
Through some hacks, and special thanks to taggart for producing
header files, I built a tool chain which cross compiles all applications
I've attempted... well almost. Anyway the good news is I have a
native binutils for palinux. Unfortunately cross-compiling
bash, tar, and gcc all fail in the link stage with:
/home/bame/xc/bin/../lib/gcc-lib/hppa1.1-linux/2.9-hppa-991112/../../../../hppa1.1-linux/lib/libc.a(execve.o): In function `__execve':
/users/bame/palinux/glibc/posix/../sysdeps/unix/sysv/linux/execve.c:39: undefined reference to `$global$'
collect2: ld returned 1 exit status
I checked, and the absence of $global$ is a special case in the linker. I
tried adding a file which defined $global$ by hand and that didn't help
either.
My tentative conclusion is that smaller apps link and larger ones don't --
possibly some interaction with the decision to start using %r8-based stubs
when the app gets too big. I'm stuck.
I'll leave puffin.external.hp.com:~bame/rrtar.o around for anyone who
wants to mess with the linker. It is the "ld -r" of all the object files
for tar. 'hppa1.1-linux-gcc -o tar rrtar.o' should create tar,
but this causes the (my) linker to fail.
The tool chain I'm using, which has some hand patches in it because I
don't really know where they belong in sources, can be rsync-ed from
puffin.external.hp.com:~bame/xc or grab the tarball
ftp://puffin.external.hp.com/pub/parisc/binaries/tgz/elf32x86.tar.gz
In the meantime I think this is pretty cool:
VFS: Mounted root (NFS filesystem) readonly.
request_irq(538, c01aca7c, 0x4000000, serial, c02cf95c)
Stand-alone shell (version 3.4)
> ar tv /usr/lib/libcrypt.a
rw-r--r-- 16602/100 12176 May 28 00:01 2000 crypt-entry.o
rw-r--r-- 16602/100 29312 May 28 00:01 2000 md5-crypt.o
rw-r--r-- 16602/100 31364 May 28 00:01 2000 md5.o
> objdump -d /usr/lib/crti.o
/usr/lib/crti.o: file format elf32-hppa
Disassembly of section .text:
Disassembly of section .init:
00000000 <_init>:
0: 6b c2 3f d9 stw rp,-14(sr0,sp)
4: 37 de 00 80 ldo 40(sp),sp
8: 6b d3 3f c1 stw r19,-20(sr0,sp)
c: 6b c4 3f 81 stw r4,-40(sr0,sp)
10: e8 40 00 00 b,l 18 <gcc2_compiled.+0x18>,rp
14: 08 13 02 44 copy r19,r4
Disassembly of section .fini:
00000000 <_fini>:
0: 6b c2 3f d9 stw rp,-14(sr0,sp)
4: 37 de 00 80 ldo 40(sp),sp
8: 6b d3 3f c1 stw r19,-20(sr0,sp)
c: 6b c4 3f 81 stw r4,-40(sr0,sp)
10: 08 13 02 44 copy r19,r4
-Paul Bame
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [parisc-linux] Foiled by the linker again
2000-05-29 21:34 [parisc-linux] Foiled by the linker again bame
@ 2000-05-30 2:49 ` Alan Modra
2000-05-30 6:42 ` Alan Modra
0 siblings, 1 reply; 4+ messages in thread
From: Alan Modra @ 2000-05-30 2:49 UTC (permalink / raw)
To: bame; +Cc: parisc-linux
On Mon, 29 May 2000 bame@puffin.external.hp.com wrote:
> /home/bame/xc/bin/../lib/gcc-lib/hppa1.1-linux/2.9-hppa-991112/../../../../hppa1.1-linux/lib/libc.a(execve.o): In function `__execve':
> /users/bame/palinux/glibc/posix/../sysdeps/unix/sysv/linux/execve.c:39: undefined reference to `$global$'
> collect2: ld returned 1 exit status
This is a bogus error message. The real error is that a call to
__pthread_kill_other_threads_np is too far to be reached by a branch so
needs to go through a stub, but the relevant stub
_____long_branch_stub___pthread_kill_other_threads_np isn't found for some
reason.
Chasing it up...
--
Linuxcare. Support for the Revolution.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [parisc-linux] Foiled by the linker again
2000-05-30 2:49 ` Alan Modra
@ 2000-05-30 6:42 ` Alan Modra
2000-05-30 15:11 ` Paul Bame
0 siblings, 1 reply; 4+ messages in thread
From: Alan Modra @ 2000-05-30 6:42 UTC (permalink / raw)
To: bame; +Cc: parisc-linux
On Tue, 30 May 2000, Alan Modra wrote:
> On Mon, 29 May 2000 bame@puffin.external.hp.com wrote:
>
> > /home/bame/xc/bin/../lib/gcc-lib/hppa1.1-linux/2.9-hppa-991112/../../../../hppa1.1-linux/lib/libc.a(execve.o): In function `__execve':
> > /users/bame/palinux/glibc/posix/../sysdeps/unix/sysv/linux/execve.c:39: undefined reference to `$global$'
> > collect2: ld returned 1 exit status
>
> This is a bogus error message. The real error is that a call to
> __pthread_kill_other_threads_np is too far to be reached by a branch so
> needs to go through a stub, but the relevant stub
> _____long_branch_stub___pthread_kill_other_threads_np isn't found for some
> reason.
>
> Chasing it up...
It turned out that elf32_hppa_bfd_final_link_relocate wasn't handling
undefined weak symbols correctly. I've fixed this, the bogus error
message, and a handfull of other minor things, and commited the fixes to
pehp CVS.
Now I get
$ ld/ld-new -o tar /usr/parisc/lib/crt1.o /usr/parisc/lib/crti.o
/usr/parisc/lib/gcc-lib/hppa1.1-linux/2.9-hppa-991112/crtbegin.o
-L/usr/parisc/lib/gcc-lib/hppa1.1-linux/2.9-hppa-991112 -L/usr/parisc/lib/
rrtar.o -lgcc -lc -lgcc
/usr/parisc/lib/gcc-lib/hppa1.1-linux/2.9-hppa-991112/crtend.o
/usr/parisc/lib/crtn.o
/usr/parisc/lib//libc.a(nsswitch.o)(.data+0x64): undefined reference to
`_nss_files_getaliasent_r'
which looks like a problem with my glibc build.
Regards, Alan Modra
--
Linuxcare. Support for the Revolution.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [parisc-linux] Foiled by the linker again
2000-05-30 6:42 ` Alan Modra
@ 2000-05-30 15:11 ` Paul Bame
0 siblings, 0 replies; 4+ messages in thread
From: Paul Bame @ 2000-05-30 15:11 UTC (permalink / raw)
To: Alan Modra; +Cc: bame, parisc-linux
= On Tue, 30 May 2000, Alan Modra wrote:
=
= > On Mon, 29 May 2000 bame@puffin.external.hp.com wrote:
= >
= > > /home/bame/xc/bin/../lib/gcc-lib/hppa1.1-linux/2.9-hppa-991112/../../../.
./hppa1.1-linux/lib/libc.a(execve.o): In function `__execve':
= > > /users/bame/palinux/glibc/posix/../sysdeps/unix/sysv/linux/execve.c:39: u
ndefined reference to `$global$'
= > > collect2: ld returned 1 exit status
= >
= > This is a bogus error message. The real error is that a call to
= > __pthread_kill_other_threads_np is too far to be reached by a branch so
= > needs to go through a stub, but the relevant stub
= > _____long_branch_stub___pthread_kill_other_threads_np isn't found for some
= > reason.
= >
= > Chasing it up...
=
= It turned out that elf32_hppa_bfd_final_link_relocate wasn't handling
= undefined weak symbols correctly. I've fixed this, the bogus error
= message, and a handfull of other minor things, and commited the fixes to
= pehp CVS.
=
= Now I get
= $ ld/ld-new -o tar /usr/parisc/lib/crt1.o /usr/parisc/lib/crti.o
= /usr/parisc/lib/gcc-lib/hppa1.1-linux/2.9-hppa-991112/crtbegin.o
= -L/usr/parisc/lib/gcc-lib/hppa1.1-linux/2.9-hppa-991112 -L/usr/parisc/lib/
= rrtar.o -lgcc -lc -lgcc
= /usr/parisc/lib/gcc-lib/hppa1.1-linux/2.9-hppa-991112/crtend.o
= /usr/parisc/lib/crtn.o
= /usr/parisc/lib//libc.a(nsswitch.o)(.data+0x64): undefined reference to
= `_nss_files_getaliasent_r'
=
= which looks like a problem with my glibc build.
Yup. Grab the file glibc/PARISC-EXTRA-FILES which contains a list of
the missing .o files which you can add by hand with 'hppa1.1-linux-ar'.
-P
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2000-05-30 15:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2000-05-29 21:34 [parisc-linux] Foiled by the linker again bame
2000-05-30 2:49 ` Alan Modra
2000-05-30 6:42 ` Alan Modra
2000-05-30 15:11 ` Paul Bame
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox