uftrace icon indicating copy to clipboard operation
uftrace copied to clipboard

Compile Error on WSL2(x86_64) Ubuntu 20.04 Clang compile

Open paranlee opened this issue 3 years ago • 3 comments

My Clang version on x86_64 WSL2 ubuntu 20.04

~/uftrace$ uname -r
5.10.16.3-microsoft-standard-WSL2
~/uftrace$ clang --version
clang version 10.0.0-4ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

Linker show -fPIE

~/uftrace$ make -j4 CC=clang ASAN=1
  LINK     uftrace
/usr/bin/ld: /home/kim/uftrace/arch/x86_64/uftrace.o: relocation R_X86_64_32S against symbol `__asan_option_detect_stack_use_after_return' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: /home/kim/uftrace/libtraceevent/libtraceevent.a(event-parse.o): relocation R_X86_64_32S against `.bss' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: /home/kim/uftrace/libtraceevent/libtraceevent.a(trace-seq.o): relocation R_X86_64_32S against `.bss' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: /home/kim/uftrace/libtraceevent/libtraceevent.a(parse-utils.o): relocation R_X86_64_32S against symbol `stderr@@GLIBC_2.2.5' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: /home/kim/uftrace/libtraceevent/libtraceevent.a(kbuffer-parse.o): relocation R_X86_64_32S against symbol `__asan_option_detect_stack_use_after_return' can not be used when making a PIE object; recompile with -fPIE
collect2: error: ld returned 1 exit status
make: *** [Makefile:308: /home/kim/uftrace/uftrace] Error 1

@namhyung, Is it okay to put a default CFLAG Add -fPIE?

~/uftrace$ git diff
diff --git a/Makefile b/Makefile
index 61095d3b..12f2f23d 100644
--- a/Makefile
+++ b/Makefile
@@ -55,7 +55,7 @@ INSTALL = install

 export ARCH CC AR LD RM srcdir objdir LDFLAGS

-COMMON_CFLAGS := -D_GNU_SOURCE $(CFLAGS) $(CPPFLAGS)
+COMMON_CFLAGS := -D_GNU_SOURCE $(CFLAGS) $(CPPFLAGS) -fPIE
 COMMON_CFLAGS += -iquote $(srcdir) -iquote $(objdir) -iquote $(srcdir)/arch/$(ARCH)
 COMMON_CFLAGS += -Wdeclaration-after-statement
 #CFLAGS-DEBUG = -g -D_GNU_SOURCE $(CFLAGS_$@)

paranlee avatar Sep 04 '22 07:09 paranlee

Could you please test it on other distro + arch combinations too?

namhyung avatar Sep 06 '22 06:09 namhyung

x86_64 WSL2 Fedora 36

$ cat /etc/fedora-release
Generic release 36 (Generic)
$ uname -a
Linux DESKTOP-NK4TH6S 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Compiled well, with no ASAN

$ CC=clang make DEBUG=1 -j8
  CC       cmds/graph.o
  GEN      version.h
  CC       cmds/live.o
  CC       cmds/record.o
  CC       cmds/recv.o
  CC       cmds/replay.o
  CC       cmds/report.o
  CC       cmds/script.o
  CC       cmds/tui.o
  CC       utils/argspec.o
  CC       utils/auto-args.o
  CC       utils/data-file.o
  CC       utils/debug.o
  CC       utils/demangle.o
  CC       utils/dwarf.o
  CC       utils/event.o
  CC       utils/extern.o
  CC       utils/field.o
  CC       utils/filter.o
  CC       utils/fstack.o
  CC       utils/graph.o
  CC       utils/hashmap.o
  CC       utils/kernel.o
  CC       utils/pager.o
  CC       utils/perf.o
  CC       utils/rbtree.o
  CC       utils/regs.o
  CC       utils/report.o
  CC       utils/script-luajit.o
  CC       utils/script-python.o
  CC       utils/script.o
  CC       utils/session.o
  CC       utils/symbol-libelf.o
  CC       utils/symbol-rawelf.o
  CC       utils/symbol.o
  CC       utils/tracefs.o
  CC       utils/utils.o
  CC       arch/x86_64/cpuinfo.o
  FLAGS:   * new build flags or cross compiler
  CC FPIC  libmcount/dynamic.op
  CC       arch/x86_64/symbol.o
  CC FPIC  libmcount/event.op
  CC FPIC  libmcount/mcount.op
  CC FPIC  libmcount/misc.op
  LINK     arch/x86_64/uftrace.o
  CC FPIC  libmcount/plthook.op
  CC FPIC  libtraceevent/event-parse.o
  CC FPIC  libmcount/pmu.op
  CC FPIC  libmcount/record.op
  CC FPIC  libmcount/wrap.op
  CC FPIC  libtraceevent/event-plugin.o
  CC FPIC  libtraceevent/trace-seq.o
  CC FPIC  libtraceevent/parse-filter.o
  CC FPIC  libtraceevent/parse-utils.o
  CC FPIC  libmcount/debug.op
  CC FPIC  libtraceevent/kbuffer-parse.o
  CC FPIC  libmcount/regs.op
  CC FPIC  libmcount/rbtree.op
  CC FPIC  libmcount/filter.op
  CC FPIC  libmcount/demangle.op
  CC FPIC  libmcount/utils.op
  CC FPIC  libmcount/script.op
  CC FPIC  libmcount/script-python.op
  CC FPIC  libmcount/script-luajit.op
  CC FPIC  libmcount/auto-args.op
  CC FPIC  libmcount/dwarf.op
  CC FPIC  libmcount/hashmap.op
  CC FPIC  libmcount/argspec.op
  CC FPIC  libmcount/tracefs.op
  CC FPIC  libmcount/symbol-libelf.op
  LINK     libtraceevent/libtraceevent.a
  CC FPIC  libmcount/symbol-rawelf.op
  CC FPIC  libmcount/symbol.op
  ASM      arch/x86_64/dynamic.op
  ASM      arch/x86_64/fentry.op
  ASM      arch/x86_64/mcount.op
  ASM      arch/x86_64/xray.op
  ASM      arch/x86_64/plthook.op
  CC FPIC  libmcount/dynamic-fast.op
  CC FPIC  arch/x86_64/mcount-dynamic.op
  CC FPIC  arch/x86_64/mcount-insn.op
  CC FPIC  arch/x86_64/mcount-event.op
  CC FPIC  arch/x86_64/mcount-noplt.op
  CC FPIC  libmcount/event-fast.op
  CC FPIC  arch/x86_64/mcount-support.op
  CC FPIC  arch/x86_64/symbol.op
  CC FPIC  libmcount/mcount-fast.op
  CC FPIC  libmcount/misc-fast.op
  CC FPIC  libmcount/plthook-fast.op
  CC FPIC  libmcount/pmu-fast.op
  CC FPIC  libmcount/record-fast.op
  LINK     arch/x86_64/mcount-entry.op
  CC FPIC  libmcount/wrap-fast.op
  CC FPIC  libmcount/dynamic-single.op
  CC FPIC  libmcount/event-single.op
  CC FPIC  libmcount/mcount-single.op
  CC FPIC  libmcount/misc-single.op
  CC FPIC  libmcount/plthook-single.op
  CC FPIC  libmcount/pmu-single.op
  CC FPIC  libmcount/record-single.op
  CC FPIC  libmcount/wrap-single.op
  CC FPIC  libmcount/dynamic-fast-single.op
  CC FPIC  libmcount/event-fast-single.op
  CC FPIC  libmcount/mcount-fast-single.op
  CC FPIC  libmcount/misc-fast-single.op
  CC FPIC  libmcount/plthook-fast-single.op
  CC FPIC  libmcount/pmu-fast-single.op
  CC FPIC  libmcount/record-fast-single.op
  CC FPIC  libmcount/wrap-fast-single.op
  CC FPIC  libmcount/mcount-nop.op
  CC       misc/demangler.o
  CC       misc/symbols.o
  CC       misc/dbginfo.o
  CC       uftrace.o
  CC       cmds/dump.o
  CC       cmds/info.o
  LINK     libmcount/libmcount.so
  LINK     libmcount/libmcount-fast.so
  LINK     libmcount/libmcount-single.so
  LINK     libmcount/libmcount-nop.so
  LINK     misc/demangler
  LINK     misc/symbols
  LINK     misc/dbginfo
  LINK     libmcount/libmcount-fast-single.so
  LINK     uftrace

When ASAN On

$ CC=clang make ASAN=1 DEBUG=1 -j8
  CC       cmds/graph.o
  CC       cmds/live.o
  GEN      version.h
  CC       cmds/record.o
  CC       cmds/recv.o
  CC       cmds/replay.o
  CC       cmds/report.o
  CC       cmds/script.o
  CC       cmds/tui.o
  CC       utils/argspec.o
  CC       utils/auto-args.o
  CC       utils/data-file.o
  CC       utils/debug.o
  CC       utils/demangle.o
  CC       utils/dwarf.o
  CC       utils/event.o
  CC       utils/extern.o
  CC       utils/field.o
  CC       utils/filter.o
  CC       utils/fstack.o
  CC       utils/graph.o
  CC       utils/hashmap.o
  CC       utils/kernel.o
  CC       utils/pager.o
  CC       utils/perf.o
  CC       utils/rbtree.o
  CC       utils/regs.o
  CC       utils/report.o
  CC       utils/script-luajit.o
  CC       utils/script-python.o
  CC       utils/script.o
  CC       utils/session.o
  CC       utils/symbol-libelf.o
  CC       utils/symbol-rawelf.o
  CC       utils/symbol.o
  CC       utils/tracefs.o
  CC       utils/utils.o
  CC       arch/x86_64/cpuinfo.o
  CC       arch/x86_64/symbol.o
  FLAGS:   * new build flags or cross compiler
  CC FPIC  libmcount/dynamic.op
  CC FPIC  libtraceevent/event-parse.o
  CC FPIC  libtraceevent/event-plugin.o
  LINK     arch/x86_64/uftrace.o
  CC FPIC  libtraceevent/trace-seq.o
  CC FPIC  libmcount/event.op
  CC FPIC  libmcount/mcount.op
  CC FPIC  libtraceevent/parse-filter.o
  CC FPIC  libtraceevent/parse-utils.o
  CC FPIC  libtraceevent/kbuffer-parse.o
  CC FPIC  libmcount/misc.op
  CC FPIC  libmcount/plthook.op
  CC FPIC  libmcount/pmu.op
  CC FPIC  libmcount/record.op
  CC FPIC  libmcount/wrap.op
  CC FPIC  libmcount/debug.op
  CC FPIC  libmcount/regs.op
  CC FPIC  libmcount/rbtree.op
  CC FPIC  libmcount/filter.op
  CC FPIC  libmcount/demangle.op
  CC FPIC  libmcount/utils.op
  CC FPIC  libmcount/script.op
  CC FPIC  libmcount/script-python.op
  CC FPIC  libmcount/script-luajit.op
  CC FPIC  libmcount/auto-args.op
  CC FPIC  libmcount/dwarf.op
  CC FPIC  libmcount/hashmap.op
  CC FPIC  libmcount/argspec.op
  CC FPIC  libmcount/tracefs.op
  CC FPIC  libmcount/symbol-libelf.op
  CC FPIC  libmcount/symbol-rawelf.op
  CC FPIC  libmcount/symbol.op
  ASM      arch/x86_64/dynamic.op
  ASM      arch/x86_64/fentry.op
  CC FPIC  libmcount/dynamic-fast.op
  ASM      arch/x86_64/mcount.op
  CC FPIC  libmcount/event-fast.op
  ASM      arch/x86_64/plthook.op
  ASM      arch/x86_64/xray.op
  CC FPIC  arch/x86_64/mcount-dynamic.op
  CC FPIC  libmcount/mcount-fast.op
  CC FPIC  arch/x86_64/mcount-event.op
  CC FPIC  libmcount/misc-fast.op
  CC FPIC  arch/x86_64/mcount-insn.op
  CC FPIC  libmcount/plthook-fast.op
  CC FPIC  arch/x86_64/mcount-noplt.op
  CC FPIC  libmcount/pmu-fast.op
  CC FPIC  libmcount/record-fast.op
  CC FPIC  libmcount/wrap-fast.op
  CC FPIC  arch/x86_64/mcount-support.op
  CC FPIC  arch/x86_64/symbol.op
  CC FPIC  libmcount/dynamic-single.op
  CC FPIC  libmcount/event-single.op
  CC FPIC  libmcount/mcount-single.op
  LINK     arch/x86_64/mcount-entry.op
  CC FPIC  libmcount/misc-single.op
  CC FPIC  libmcount/plthook-single.op
  CC FPIC  libmcount/pmu-single.op
  CC FPIC  libmcount/record-single.op
  CC FPIC  libmcount/wrap-single.op
  CC FPIC  libmcount/dynamic-fast-single.op
  CC FPIC  libmcount/event-fast-single.op
  CC FPIC  libmcount/mcount-fast-single.op
  CC FPIC  libmcount/misc-fast-single.op
  CC FPIC  libmcount/plthook-fast-single.op
  CC FPIC  libmcount/pmu-fast-single.op
  CC FPIC  libmcount/record-fast-single.op
  CC FPIC  libmcount/wrap-fast-single.op
  CC FPIC  libmcount/mcount-nop.op
  LINK     libtraceevent/libtraceevent.a
  CC       misc/demangler.o
  CC       misc/symbols.o
  CC       misc/dbginfo.o
  CC       uftrace.o
  CC       cmds/dump.o
  CC       cmds/info.o
  LINK     libmcount/libmcount.so
  LINK     libmcount/libmcount-fast.so
  LINK     libmcount/libmcount-single.so
  LINK     libmcount/libmcount-nop.so
  LINK     misc/demangler
/usr/bin/ld: cannot find /usr/lib64/libubsan.so.1.0.0
collect2: error: ld returned 1 exit status
make: *** [Makefile:311: /home/kim/uftrace/misc/demangler] Error 1
make: *** Waiting for unfinished jobs....

$ ls /usr/lib64/libubsan.so.1.0.0
ls: cannot access '/usr/lib64/libubsan.so.1.0.0': No such file or directory

$ rpm -ql libasan
/usr/lib/.build-id
/usr/lib/.build-id/ac
/usr/lib/.build-id/ac/671d2745eaadc3ed15955ceaf707ecf0c07cc1
/usr/lib64/libasan.so.8
/usr/lib64/libasan.so.8.0.0

paranlee avatar Sep 08 '22 10:09 paranlee

x86_64 WSL2 Ubuntu 22.04.1

/etc$ cat os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

$ uname -a
Linux DESKTOP-NK4TH6S 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Compiled well, with ASAN

~/uftrace$ CC=clang make -j8 ASAN=1 DEBUG=1 TRACE=1
  CC       cmds/graph.o
  CC       cmds/live.o
  CC       cmds/record.o
  CC       cmds/recv.o
  CC       cmds/replay.o
  CC       cmds/report.o
  GEN      version.h
  CC       utils/argspec.o
  CC       utils/auto-args.o
  CC       utils/data-file.o
  CC       utils/debug.o
  CC       utils/demangle.o
  CC       utils/dwarf.o
  CC       utils/event.o
  CC       utils/extern.o
  CC       utils/field.o
  CC       utils/filter.o
  CC       utils/fstack.o
  CC       utils/graph.o
  CC       utils/hashmap.o
  CC       utils/kernel.o
  CC       utils/pager.o
  CC       utils/perf.o
  CC       utils/rbtree.o
  CC       utils/regs.o
  CC       utils/report.o
  CC       utils/script-luajit.o
  CC       utils/script-python.o
  CC       utils/script.o
  CC       utils/session.o
  CC       utils/symbol-libelf.o
  CC       utils/symbol-rawelf.o
  CC       utils/symbol.o
  CC       utils/tracefs.o
  CC       utils/utils.o
  CC       arch/x86_64/cpuinfo.o
  FLAGS:   * new build flags or cross compiler
  CC       arch/x86_64/symbol.o
  CC FPIC  libmcount/dynamic.op
  CC FPIC  libtraceevent/event-parse.o
  CC FPIC  libtraceevent/event-plugin.o
  LINK     arch/x86_64/uftrace.o
  CC FPIC  libmcount/event.op
  CC FPIC  libmcount/mcount.op
  CC FPIC  libmcount/misc.op
  CC FPIC  libtraceevent/trace-seq.o
  CC FPIC  libmcount/plthook.op
  CC FPIC  libmcount/pmu.op
  CC FPIC  libmcount/record.op
  CC FPIC  libtraceevent/parse-filter.o
  CC FPIC  libmcount/wrap.op
  CC FPIC  libmcount/debug.op
  CC FPIC  libmcount/regs.op
  CC FPIC  libmcount/rbtree.op
  CC FPIC  libmcount/filter.op
  CC FPIC  libtraceevent/parse-utils.o
  CC FPIC  libtraceevent/kbuffer-parse.o
  CC FPIC  libmcount/demangle.op
  CC FPIC  libmcount/utils.op
  CC FPIC  libmcount/script.op
  CC FPIC  libmcount/script-python.op
  CC FPIC  libmcount/script-luajit.op
  CC FPIC  libmcount/auto-args.op
  CC FPIC  libmcount/dwarf.op
  CC FPIC  libmcount/hashmap.op
  CC FPIC  libmcount/argspec.op
  CC FPIC  libmcount/tracefs.op
  CC FPIC  libmcount/symbol-libelf.op
  CC FPIC  libmcount/symbol-rawelf.op
  CC FPIC  libmcount/symbol.op
  ASM      arch/x86_64/dynamic.op
  CC FPIC  libmcount/dynamic-fast.op
  CC FPIC  libmcount/event-fast.op
  CC FPIC  libmcount/mcount-fast.op
  ASM      arch/x86_64/fentry.op
  CC FPIC  libmcount/misc-fast.op
  ASM      arch/x86_64/mcount.op
  ASM      arch/x86_64/plthook.op
  ASM      arch/x86_64/xray.op
  CC FPIC  libmcount/plthook-fast.op
  CC FPIC  arch/x86_64/mcount-dynamic.op
  CC FPIC  arch/x86_64/mcount-event.op
  CC FPIC  libmcount/pmu-fast.op
  CC FPIC  libmcount/record-fast.op
  CC FPIC  libmcount/wrap-fast.op
  CC FPIC  arch/x86_64/mcount-insn.op
  CC FPIC  arch/x86_64/mcount-noplt.op
  CC FPIC  libmcount/dynamic-single.op
  CC FPIC  libmcount/event-single.op
  CC FPIC  arch/x86_64/mcount-support.op
  CC FPIC  arch/x86_64/symbol.op
  CC FPIC  libmcount/mcount-single.op
  CC FPIC  libmcount/misc-single.op
  CC FPIC  libmcount/plthook-single.op
  CC FPIC  libmcount/pmu-single.op
  LINK     arch/x86_64/mcount-entry.op
  CC FPIC  libmcount/record-single.op
  CC FPIC  libmcount/wrap-single.op
  CC FPIC  libmcount/dynamic-fast-single.op
  CC FPIC  libmcount/event-fast-single.op
  CC FPIC  libmcount/mcount-fast-single.op
  CC FPIC  libmcount/misc-fast-single.op
  CC FPIC  libmcount/plthook-fast-single.op
  CC FPIC  libmcount/pmu-fast-single.op
  LINK     libtraceevent/libtraceevent.a
  CC FPIC  libmcount/record-fast-single.op
  CC FPIC  libmcount/wrap-fast-single.op
  CC FPIC  libmcount/mcount-nop.op
  CC       misc/demangler.o
  CC       misc/symbols.o
  CC       misc/dbginfo.o
  CC       uftrace.o
  CC       cmds/dump.o
  CC       cmds/info.o
  CC       cmds/script.o
  CC       cmds/tui.o
  LINK     libmcount/libmcount.so
  LINK     libmcount/libmcount-fast.so
  LINK     libmcount/libmcount-single.so
  LINK     libmcount/libmcount-fast-single.so
  LINK     libmcount/libmcount-nop.so
  LINK     misc/demangler
  LINK     misc/symbols
  LINK     misc/dbginfo
  LINK     uftrace

paranlee avatar Sep 08 '22 13:09 paranlee