Bug 27366 - 0.183: test suite is failing on linking dwfl-proc-attach (with lto)
Summary: 0.183: test suite is failing on linking dwfl-proc-attach (with lto)
Status: RESOLVED FIXED
Alias: None
Product: elfutils
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-02-07 22:02 UTC by kloczek
Modified: 2021-11-11 15:28 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description kloczek 2021-02-07 22:02:03 UTC
[tkloczko@barrel tests]$ make dwfl-proc-attach
gcc -std=gnu99 -Wall -Wshadow -Wformat=2 -Wold-style-definition -Wstrict-prototypes -Wtrampolines -Wlogical-op -Wduplicated-cond -Wnull-dereference -Wimplicit-fallthrough=5 -Werror -Wunused -Wextra -Wstack-usage=262144   -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto=auto -flto-partition=none -fdata-sections -ffunction-sections -Wformat -Wno-error=stack-usage= -pthread -Wl,-rpath-link,../libasm:../libdw:../libelf  -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--gc-sections -o dwfl-proc-attach dwfl-proc-attach.o ../libdw/libdw.so
/usr/bin/ld: dwfl-proc-attach.o (symbol from plugin): undefined reference to symbol 'dlopen@@GLIBC_2.2.5'
/usr/bin/ld: /usr/lib64/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [Makefile:1940: dwfl-proc-attach] Error 1

On first look it looks like missing -ldl on linking.
Comment 1 kloczek 2021-02-07 22:03:37 UTC
No I was wrong.
But is still fails using glibc, gcc and binutils from rawride.
Comment 2 Mark Wielaard 2021-02-07 22:26:21 UTC
(In reply to kloczek from comment #1)
> But is still fails using glibc, gcc and binutils from rawride.

That is odd. I just did a build on rawhide that looks fine:
https://koji.fedoraproject.org/koji/buildinfo?buildID=1704647
Comment 3 Mark Wielaard 2021-02-07 22:33:13 UTC
I see you are using -flto=auto. Sadly LTO isn't supported at the moment.
Although it would be nice if it didn't totally break with -flto-partition=none.

The problem with lto might be:

/* HACK. This is a simple workaround for a combination of old glibc
   and valgrind. libdw will try to dlopen libdebuginfod this causes
   some unsuppressable memory leak warnings when the process is
   multi-threaded under valgrind because of some bad backtraces.
   So simply override dlopen and always return NULL so libdebuginfod
   (and libcurl) are never loaded.  This test doesn't rely on
   libdebuginfod anyway.  */
void *dlopen (void)
{
  return NULL;
}

Maybe it needs some __attribute__((__used__)) to make sure it is kept around?
Comment 4 Mark Wielaard 2021-11-11 15:05:04 UTC
Is this still an issue?
Comment 5 kloczek 2021-11-11 15:22:07 UTC
Will back to you shortly with test made on top of latest 0.186.
One sec ..
Comment 6 kloczek 2021-11-11 15:28:49 UTC
With latest gcc looks like it is OK now.

Closing.

/usr/bin/make  check-TESTS
PASS: newfile
PASS: test-nlist
PASS: update1
PASS: update2
PASS: update4
PASS: update3
PASS: run-ar.sh
PASS: run-arsymtest.sh
PASS: run-get-pubnames.sh
PASS: run-get-lines.sh
PASS: run-get-aranges.sh
PASS: hash
PASS: run-show-abbrev.sh
PASS: newscn
PASS: run-next-lines.sh
PASS: run-get-files.sh
PASS: run-next-files.sh
PASS: run-line2addr.sh
PASS: run-allfcts.sh
PASS: run-strip-test3.sh
PASS: run-strip-test.sh
PASS: run-strip-test2.sh
PASS: run-strip-test4.sh
PASS: run-strip-test5.sh
PASS: run-strip-test6.sh
PASS: run-strip-test7.sh
PASS: run-strip-test9.sh
PASS: run-show-die-info.sh
PASS: run-strip-test8.sh
PASS: run-strip-test11.sh
PASS: run-strip-test10.sh
PASS: run-strip-test12.sh
PASS: run-strip-groups.sh
PASS: run-unstrip-test.sh
PASS: run-unstrip-test2.sh
PASS: run-strip-nobitsalign.sh
PASS: run-unstrip-test3.sh
PASS: run-unstrip-M.sh
PASS: run-strip-nothing.sh
PASS: run-ecp-test.sh
PASS: run-ecp-test2.sh
PASS: run-elfstrmerge-test.sh
PASS: run-alldts.sh
PASS: run-strip-g.sh
PASS: run-annobingroup.sh
PASS: run-ranlib-test.sh
PASS: run-ranlib-test2.sh
PASS: run-ranlib-test3.sh
PASS: run-strip-strmerge.sh
PASS: run-ranlib-test4.sh
PASS: run-funcscopes.sh
PASS: run-addrscopes.sh
PASS: run-unstrip-test4.sh
PASS: run-strings-test.sh
PASS: run-elflint-test.sh
PASS: run-dwarfcfi.sh
PASS: run-nm-syms.sh
PASS: run-find-prologues.sh
PASS: run-readelf-info-plus.sh
PASS: run-readelf-const-values.sh
PASS: run-readelf-compressed.sh
PASS: run-addrcfi.sh
PASS: run-readelf-test1.sh
PASS: run-allregs.sh
PASS: run-readelf-test2.sh
PASS: run-varlocs-self.sh
PASS: run-readelf-test3.sh
PASS: run-readelf-test4.sh
PASS: run-readelf-macro.sh
PASS: run-readelf-twofiles.sh
PASS: run-readelf-aranges.sh
PASS: run-arextract.sh
PASS: run-readelf-frames.sh
PASS: run-readelf-ranges.sh
PASS: run-readelf-line.sh
PASS: run-readelf-loc.sh
PASS: run-strip-remove-keep.sh
PASS: run-readelf-z.sh
PASS: run-bug1-test.sh
PASS: run-retain.sh
PASS: dwfl-bug-addr-overflow
PASS: run-debuglink.sh
PASS: run-debugaltlink.sh
PASS: run-buildid.sh
PASS: run-readelf-n.sh
PASS: dwfl-bug-report
PASS: run-exprlocs-self.sh
PASS: dwfl-report-segment-contiguous
PASS: run-dwfl-bug-offline-rel.sh
PASS: run-dwfl-addr-sect.sh
PASS: run-early-offscn.sh
PASS: run-elflint-self.sh
PASS: run-dwarf-getmacros.sh
PASS: run-test-flag-nobits.sh
PASS: run-dwarf-ranges.sh
PASS: run-dwarf-getstring.sh
PASS: run-disasm-x86.sh
PASS: run-rerequest_tag.sh
PASS: run-readelf-d.sh
PASS: run-addrname-test.sh
PASS: run-typeiter.sh
PASS: run-disasm-x86-64.sh
PASS: run-readelf-gdb_index.sh
PASS: run-elf_cntl_gelf_getshdr.sh
PASS: run-macro-test.sh
PASS: run-test-archive64.sh
PASS: run-readelf-vmcoreinfo.sh
PASS: run-unstrip-n.sh
PASS: run-readelf-variant.sh
PASS: run-readelf-fat-lto.sh
PASS: run-dwfl-report-elf-align.sh
PASS: run-prelink-addr-test.sh
PASS: run-low_high_pc.sh
PASS: run-addr2line-i-demangle-test.sh
PASS: run-readelf-mixed-corenote.sh
PASS: run-addr2line-i-lex-test.sh
PASS: run-dwfllines.sh
PASS: run-addr2line-alt-debugpath.sh
PASS: run-addr2line-test.sh
PASS: run-exprlocs.sh
PASS: run-funcretval.sh
PASS: run-backtrace-native.sh
PASS: run-backtrace-data.sh
PASS: run-addr2line-i-test.sh
PASS: run-backtrace-dwarf.sh
PASS: run-backtrace-native-biarch.sh
PASS: run-varlocs-vars.sh
PASS: run-varlocs.sh
PASS: run-backtrace-core-x86_64.sh
PASS: run-backtrace-fp-core-x86_64.sh
PASS: run-backtrace-fp-core-aarch64.sh
PASS: run-backtrace-fp-core-ppc64le.sh
PASS: run-backtrace-core-x32.sh
PASS: run-backtrace-core-i386.sh
PASS: run-backtrace-fp-core-i386.sh
PASS: run-backtrace-core-ppc.sh
PASS: run-native-test.sh
PASS: run-nm-self.sh
PASS: run-backtrace-demangle.sh
PASS: run-backtrace-core-s390x.sh
PASS: run-backtrace-core-s390.sh
PASS: run-backtrace-core-aarch64.sh
PASS: run-stack-d-test.sh
PASS: run-backtrace-core-sparc.sh
PASS: run-stack-i-test.sh
PASS: run-readelf-zp.sh
PASS: run-readelf-zx.sh
PASS: run-stack-demangled-test.sh
PASS: run-readelf-addr.sh
PASS: run-readelf-multi-noline.sh
PASS: run-readelf-types.sh
PASS: run-readelf-str.sh
PASS: run-linkmap-cut.sh
PASS: run-peel-type.sh
PASS: run-readelf-dwz-multi.sh
PASS: vdsosyms
PASS: run-aggregate-size.sh
PASS: run-allfcts-multi.sh
PASS: run-strptr.sh
PASS: dwfl-proc-attach
PASS: newdata
PASS: elfstrtab
PASS: elfshphehdr
PASS: run-readelf-A.sh
PASS: run-getsrc-die.sh
SKIP: run-lfs-symbols.sh
PASS: run-zstrptr.sh
PASS: run-dwelfgnucompressed.sh
PASS: run-elfgetzdata.sh
PASS: run-elfputzdata.sh
PASS: emptyfile
PASS: run-elfgetchdr.sh
PASS: vendorelf
PASS: fillfile
PASS: dwarf_default_lower_bound
PASS: run-readelf-zdebug.sh
PASS: run-readelf-zdebug-rel.sh
PASS: run-attr-integrate-skel.sh
PASS: run-get-units-invalid.sh
PASS: run-all-dwarf-ranges.sh
PASS: run-reloc-bpf.sh
PASS: run-dwarf-die-addr-die.sh
PASS: run-get-units-split.sh
PASS: run-unit-info.sh
PASS: run-backtrace-native-core-biarch.sh
PASS: run-next-cfi.sh
PASS: run-next-cfi-self.sh
PASS: run-deleted.sh
PASS: run-reverse-sections.sh
PASS: run-typeiter-many.sh
PASS: run-reverse-sections-self.sh
PASS: run-strip-version.sh
PASS: dwfl-bug-fd-leak
PASS: run-readelf-discr.sh
PASS: run-xlate-note.sh
PASS: run-dwelf_elf_e_machine_string.sh
PASS: run-disasm-riscv64.sh
PASS: run-copyadd-sections.sh
PASS: run-pt_gnu_prop-tests.sh
PASS: leb128
PASS: read_unaligned
PASS: msg_tst
PASS: run-getphdrnum.sh
PASS: system-elf-libelf-test
PASS: asm-tst1
PASS: asm-tst2
PASS: asm-tst3
PASS: run-test-includes.sh
PASS: asm-tst4
PASS: asm-tst7
PASS: asm-tst8
PASS: asm-tst9
PASS: asm-tst6
PASS: run-disasm-bpf.sh
PASS: run-nvidia-extended-linemap-libdw.sh
PASS: run-elfclassify-self.sh
PASS: run-low_high_pc-dw-form-indirect.sh
PASS: asm-tst5
PASS: run-backtrace-native-core.sh
PASS: run-nvidia-extended-linemap-readelf.sh
PASS: run-strip-largealign.sh
PASS: run-readelf-dw-form-indirect.sh
PASS: run-readelf-compressed-zstd.sh
PASS: run-readelf-s.sh
PASS: run-dwflsyms.sh
PASS: run-readelf-self.sh
PASS: run-debuginfod-file.sh
PASS: run-strip-test-many.sh
PASS: run-debuginfod-fd-prefetch-caches.sh
PASS: run-elfclassify.sh
PASS: run-compress-test.sh
PASS: run-debuginfod-duplicate-urls.sh
PASS: run-debuginfod-sizetime.sh
PASS: run-debuginfod-query-retry.sh
PASS: run-debuginfod-dlopen.sh
PASS: run-debuginfod-000-permission.sh
PASS: run-debuginfod-no-urls.sh
PASS: run-debuginfod-malformed.sh
PASS: run-debuginfod-artifact-running.sh
PASS: run-debuginfod-tmp-home.sh
PASS: run-debuginfod-writable.sh
PASS: run-debuginfod-regex.sh
PASS: run-debuginfod-x-forwarded-for.sh
PASS: run-debuginfod-percent-escape.sh
PASS: run-debuginfod-archive-test.sh
PASS: run-debuginfod-extraction.sh
PASS: run-debuginfod-extraction-passive.sh
PASS: run-copymany-sections.sh
PASS: run-debuginfod-archive-groom.sh
PASS: run-debuginfod-federation-sqlite.sh
PASS: run-debuginfod-response-headers.sh
PASS: run-debuginfod-federation-link.sh
PASS: run-debuginfod-federation-metrics.sh
PASS: run-debuginfod-archive-rename.sh
PASS: run-strip-reloc.sh
PASS: run-large-elf-file.sh
============================================================================
Testsuite summary for elfutils 0.186
============================================================================
# TOTAL: 256
# PASS:  255
# SKIP:  1
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
+ RPM_EC=0

[..]

/home/tkloczko/rpmbuild/BUILDROOT/elfutils-0.186-2.fc35.x86_64
Wrote: /home/tkloczko/rpmbuild/SRPMS/elfutils-0.186-2.fc35.src.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-debuginfod-client-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-debuginfod-client-debuginfo-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-libelf-devel-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-debuginfod-client-devel-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-devel-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-debuginfod-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-libelf-debuginfo-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-libs-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-libelf-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-libs-debuginfo-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-debuginfod-debuginfo-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-debuginfo-0.186-2.fc35.x86_64.rpm
Wrote: /home/tkloczko/rpmbuild/RPMS/elfutils-debugsource-0.186-2.fc35.x86_64.rpm