[OE-core] [PATCH v2] systemd: work-around ppc gold linker error

Randy MacLeod randy.macleod at windriver.com
Fri Jun 23 00:30:56 UTC 2017


On 2017-06-22 06:22 PM, Khem Raj wrote:
> What's the link to upstream bug in linker

Do you mean: Have I created an upstream bug?

No, not yet but I'm just reading their email lists and
trying to understand where and how to report the bug.
If you'd like to do that and CC me, then the task will
finish sooner and I'll know for next time. :)


I've been taking the opportunity to see how we manage
binutils by adding a bintuils-2.29 this points to
master but I haven't gotten very far yet. My intent is
to see if this bug is reproducible on the bintuils
master branch since looking at:
    git log --oneline master ^binutils-2_28-branch gold/powerpc.cc
only turned up:

bdab445 [GOLD] PowerPC move plt indx_ out of unordered map key
94de2a2 [GOLD] Avoid duplicate PLT stub symbols on ppc32
590b87f PR21503, Gold doesn't create linker stub symbols on ppc64
6528b6e PowerPC ld segfault on script discarding dynamic sections
e666304 [GOLD] PowerPC64 TOC indirect to TOC relative segfault
857e829 Gold: Fix build with GCC 4.2
5edad15 [GOLD] PowerPC64 TOC indirect to TOC relative code editing
f159cdb [GOLD] Add --secure-plt option for ppc32
3254d32 [GOLD] Set sh_info of .rela.plt for powerpc
0e123f6 [GOLD] powerpc.cc tidies
2571583 Update year range in copyright notice of all files.

and after an initial quick review it seems that those commits
are either not relevant or have been cherry-picked back to
binutils-2_28-branch already.

I'll include my cleaned-up link failure summary below.
-- 
# Randy MacLeod. SMTS, Linux, Wind River
Direct: 613.963.1350 | 350 Terry Fox Drive, Suite 200, Ottawa, ON, 
Canada, K2K 2W5


--------


powerpc-oe-linux-libtool: link: powerpc-oe-linux-gcc  \
   -m32 -mhard-float -mcpu=7400 -mno-spe \
 
--sysroot=/.../tmp-glibc/work/ppc7400-oe-linux/systemd/1_232-r0/recipe-sysroot 
\
   -shared  -fPIC -DPIC  \
   src/basic/.libs/libsystemd_shared_la-capability-util.o \
   src/basic/.libs/libsystemd_shared_la-conf-files.o \
   src/basic/.libs/libsystemd_shared_la-hostname-util.o \
   ...
   src/libudev/.libs/libsystemd_shared_la-libudev-queue.o \
   src/libudev/.libs/libsystemd_shared_la-libudev-hwdb.o \
   -lcap -lrt -lm -lresolv -llzma -lacl  \
   -m32 -mhard-float -mcpu=7400 -mno-spe \
 
--sysroot=/.../tmp-glibc/work/ppc7400-oe-linux/systemd/1_232-r0/recipe-sysroot 
\
   -fstack-protector -fstack-protector-strong -flto -fstack-protector 
-fstack-protector-strong \
   -flto -pthread -fstack-protector -fstack-protector-strong -flto 
-fstack-protector -fstack-protector-strong \
   -flto -O2 -g \
   -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined \
   -Wl,-z -Wl,relro -Wl,-z -Wl,now -Wl,-fuse-ld=gold \
   -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed   -pthread \
   -Wl,-soname -Wl,libsystemd-shared-232.so \
   -o .libs/libsystemd-shared-232.so
----------------------------------------------->>>
/.../tmp-glibc/work/ppc7400-oe-linux/systemd/1_232-r0/recipe-sysroot-native\
/usr/bin/powerpc-oe-linux/powerpc-oe-linux-ld.gold:
    error: invalid STB_LOCAL symbol in external symbols
    error: linker defined: multiple definition of 
'00000001.plt_call.memcpy+8000'
    command line: previous definition here
... <5577 more> ... with functions/symbols such as:
'00000001.plt_call.fflush_and_check+8000'
'00000001.plt_call.fileno+8000'
'00000001.plt_call.fchmod+8000'

| collect2: error: ld returned 1 exit status
| Makefile:11575: recipe for target 'libsystemd-shared.la' failed
| make[2]: *** [libsystemd-shared.la] Error 1
| Makefile:21970: recipe for target 'all-recursive' failed
| make[1]: *** [all-recursive] Error 1
| Makefile:9900: recipe for target 'all' failed
| make: *** [all] Error 2
| ERROR: oe_runmake failed

----------





More information about the Openembedded-core mailing list