[Linuxppc-users] Toolchain version for RHEL 7.1

Ben Hood ben at relops.com
Wed Nov 14 04:48:48 AEDT 2018


Here is the output - it appears to have the line you expected:

$ readelf -1 /tmp/c4/erts-10.1.1/bin/erlc
Elf file type is EXEC (Executable file)
Entry point OxlOOOOecO
fhere are 9 program headers, starting at offset 64
Program Headers:
Type	    Offset	           VirtAddr	            PhysAddr
            FileSiz	           MemSiz	            Flags Align
PHDR	    0x0000000000000040 0x0000000010000040	0x0000000010000040
            OxOOOOOOOOOOOOOlf8 OxOOOOOOOOOOOOOlf8	R	8
INTERP	    0x0000000000000238 0x0000000010000238	0x0000000010000238
            0x000000000000001c 0x000000000000001c	R	1
    [Requesting program interpreter: /opt/atl2.0/lib64/ld64.so.2]
LOAD	    0x0000000000000000 0x0000000010000000	0x0000000010000000
            0x0000000000008134 0x0000000000008134	R	E	10000
LOAD	    OxOOOOOOOOOOOOfcbO OxOOOOOOOOlOOlfcbO	OxOOOOOOOOlOOlfcbO
            0x00000000000004b9 0x0000000000000518	RW	10000
DYNAMIC	    OxOOOOOOOOOOOOfccO OxOOOOOOOOlOOlfccO	OxOOOOOOOOlOOlfccO
            0x0000000000000240 0x0000000000000240	RW	8
NOTE	    0x0000000000000254 0x0000000010000254	0x0000000010000254
            0x0000000000000044 0x0000000000000044	R	4
GNU_EH_FRAME 0x0000000000007838	0x0000000010007838	0x0000000010007838
            0x00000000000001c4 0x00000000000001c4	R	4
GNU_STACK	0x0000000000000000 0x0000000000000000	0x0000000000000000
            0x0000000000000000 0x0000000000000000	RW	10
GNU_RELRO	OxOOOOOOOOOOOOfcbO OxOOOOOOOOlOOlfcbO	OxOOOOOOOOlOOlfcbO
            0x0000000000000350 0x0000000000000350	R	1
Section to Segment mapping:
Segment Sections...
00
01	.interp
02	.interp .note.ABI-tag .note.gnu.build-id .hash .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt . init .text .fini .rodata .eh_frame_hdr .eh_frame
03	.init_array .fini_array	.dynamic	.got .pit .data .bss
04	.dynamic
05	.note.ABI-tag .note.gnu.build-id
06	.eh_frame_hdr
07
08	.init_array .fini_array	.dynamic	.got


When I compiled this, I supplied this LD arg:

LD="/opt/at12.0/bin/powerpc64le-linux-gnu-ld"

--
Ben Hood
Technical Director | RelOps Ltd
+44 782 4631586 | ben at relops.com | http://relops.com
> On 13 Nov 2018, at 17:34, Ulrich Weigand <Ulrich.Weigand at de.ibm.com> wrote:
> 
> Aha, the loader is actually complaining about missing symbols in *the loader itself*, not in libc.
> 
> This seems strange:
> /opt/atl2.0/lib64/ld64.so.2 => /Iib64/ld64.so.2
> 
> /opt/atl12.0/lib64/ld64.so.2 should be the dynamic loader provided by the AT, it should definitely not fall back to using the system dynamic loader (/lib64/ld64.so.2).
> 
> If you run "readelf -l" on your binary, what does it say under the INTERP segment (it should have something like "Requesting program interpreter: ...")?
> 
> If this does *not* show /opt/atl12.0/lib64/ld64.so.2, then most likely you did not use the AT to *link* your application. Note, you specifically need to use the AT gcc also for the *link* step, not just for the compile steps.
> 
> 
> Mit freundlichen Gruessen / Best Regards
> 
> Ulrich Weigand
> 
> -- 
> Dr. Ulrich Weigand | Phone: +49-7031/16-3727
> STSM, GNU/Linux compilers and toolchain
> IBM Deutschland Research & Development GmbH
> Vorsitzende des Aufsichtsrats: Martina Koederitz | Geschäftsführung: Dirk Wittkopp
> Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht Stuttgart, HRB 243294
> 
> <graycol.gif>Ben Hood ---13.11.2018 18:25:17---Here’s the output from ldd: $ ldd /tmp/c4/erts-10.1.1/bin/erlc
> 
> From: Ben Hood <ben at relops.com>
> To: linuxppc-users at lists.ozlabs.org
> Date: 13.11.2018 18:25
> Subject: Re: [Linuxppc-users] Toolchain version for RHEL 7.1
> Sent by: "Linuxppc-users" <linuxppc-users-bounces+ulrich.weigand=de.ibm.com at lists.ozlabs.org>
> 
> 
> 
> 
> Here’s the output from ldd:
> 
> $ ldd /tmp/c4/erts-10.1.1/bin/erlc
> /tmp/c4/erts-10.1.1/bin/erlc: /lib64/ld64.30.2: version 'GLIBC2.23' not found (required by /opt/atl2.0/lib64/power8/libc.so.6)
> /tmp/c4/erts-10.1.1/bin/erlc: /lib64/ld64.so.2: version 'GLIBC2.22' not found (required by /opt/atl2.0/lib64/power8/libc.so.6)
> linux-vdso64.so.1 => (0x00003fff7acb0000)
> libutil.so.l => /opt/atl2.0/lib64/power8/libutil.so.1 (0x00003fff7ac80000)
> libdl.so.2 => /opt/atl2.0/lib64/power8/libdl.so.2 (0x00003fff7ac50000)
> libm.30.6 => /opt/atl2.0/lib64/power8/libm.so.6 (0x00003fff7aaf0000)
> libc.30.6 => /opt/atl2.0/lib64/power8/libc.so.6 (0x00003fff7a8a0000)
> /opt/atl2.0/lib64/ld64.so.2 => /Iib64/ld64.so.2 (0x000000002d750000
> 
> I’m wondering whether when I compiled the binary, I had somehow compiled/linked against a glibc that is only available on the build machine, rather than instructing the compiler to 100% link against the libraries supplied by AT?
> On 13 Nov 2018, at 16:33, Ulrich Weigand <Ulrich.Weigand at de.ibm.com> wrote:
> That runtime package is supposed to install the AT glibc (under /opt/atX.X/lib64/...).
> 
> The AT dynamic loader (/opt/atX.X/lib64/ld64.so.2) is supposed to automatically use the AT libraries, including glibc, from /opt/atX.X/lib64/...
> 
> AT-built binaries should have the AT dynamic loader pre-configured so they always use it.
> 
> If this doesn't work for you, one of the above three steps must have failed somehow. What is the output when running your binary under "ldd" ?
> 
> 
> Mit freundlichen Gruessen / Best Regards
> 
> Ulrich Weigand
> 
> -- 
> Dr. Ulrich Weigand | Phone: +49-7031/16-3727
> STSM, GNU/Linux compilers and toolchain
> IBM Deutschland Research & Development GmbH
> Vorsitzende des Aufsichtsrats: Martina Koederitz | Geschäftsführung: Dirk Wittkopp
> Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht Stuttgart, HRB 243294
> 
> <graycol.gif>Ben Hood ---13.11.2018 16:28:15---Many thanks for the heads up. I’ve installed advance-toolchain-at12.0-runtime on the target machine,
> 
> From: Ben Hood <ben at relops.com>
> To: linuxppc-users at lists.ozlabs.org
> Date: 13.11.2018 16:28
> Subject: Re: [Linuxppc-users] Toolchain version for RHEL 7.1
> Sent by: "Linuxppc-users" <linuxppc-users-bounces+ulrich.weigand=de.ibm.com at lists.ozlabs.org>
> 
> 
> 
> 
> 
> Many thanks for the heads up.
> 
> I’ve installed advance-toolchain-at12.0-runtime on the target machine, but this does not appear to supply a glibc of the required version.
> 
> Is this in another AT RPM package?
> 
> Perusing the FAQS
> 
> https://developer.ibm.com/linuxonpower/advance-toolchain/adv-tool-usage/#faq1A
> 
> Indicates that advance-toolchain-at12.0-runtime is mandatory, but I’m wondering if a GLIBC_2.23 object is supplied by a different package. I guess I could go through and install all of them to find out what works, but it feels like glibc is quite a fundamental building block.
> 
> Other FAQs indicate that you can use
> 
> /opt/atX.X/sbin/ldconfig
> 
> To cache the correct library path, but running this hasn’t resolved the missing glibc object.
> 
> Am I looking at the wrong FAQs?
> 
> 
> > On 13 Nov 2018, at 13:52, Ulrich Weigand <Ulrich.Weigand at de.ibm.com> wrote:
> > 
> > The AT uses a completely separate runtime library which is incompatible with the system library.
> > 
> > In order to run any binary compiled with AT, you must always install (at least the runtime components of) the AT on the system that is to run the binary.
> > 
> > 
> > Mit freundlichen Gruessen / Best Regards
> > 
> > Ulrich Weigand
> > 
> > -- 
> > Dr. Ulrich Weigand | Phone: +49-7031/16-3727
> > STSM, GNU/Linux compilers and toolchain
> > IBM Deutschland Research & Development GmbH
> > Vorsitzende des Aufsichtsrats: Martina Koederitz | Geschäftsführung: Dirk Wittkopp
> > Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht Stuttgart, HRB 243294
> > 
> > <graycol.gif>Ben Hood ---13.11.2018 14:50:38---Hi list, I’m having issues loading the binary I’ve cross compiled for ppc64le/RHEL 7.1:
> > 
> > From: Ben Hood <ben at relops.com>
> > To: linuxppc-users at lists.ozlabs.org
> > Date: 13.11.2018 14:50
> > Subject: [Linuxppc-users] Toolchain version for RHEL 7.1
> > Sent by: "Linuxppc-users" <linuxppc-users-bounces+ulrich.weigand=de.ibm.com at lists.ozlabs.org>
> > 
> > 
> > 
> > 
> > Hi list,
> > 
> > I’m having issues loading the binary I’ve cross compiled for ppc64le/RHEL 7.1:
> > 
> > /lib64/ld64.so.2: version ‘GLIBC_2.23’ not found (required by /opt/at12.0/lib64/power8/libm.so.6)
> > 
> > The onboard version of glibc appears to be 2.17-157.el7.
> > 
> > What is the idiomatic way to supply the required glibc version?
> > 
> > Is there some kind of incompatibility between the AT runtime version (and the choice of toolchain version on the build machine)? Can I solve this issue by using a different version of AT?
> > 
> > Thanks in advance,
> > 
> > Ben
> > 
> > 
> > _______________________________________________
> > Linuxppc-users mailing list
> > Linuxppc-users at lists.ozlabs.org
> > https://lists.ozlabs.org/listinfo/linuxppc-users
> > 
> > 
> > 
> > 
> 
> _______________________________________________
> Linuxppc-users mailing list
> Linuxppc-users at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-users
> 
> 
> 
> _______________________________________________
> Linuxppc-users mailing list
> Linuxppc-users at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-users
> 
> 
> 



More information about the Linuxppc-users mailing list