This is the mail archive of the gdb-prs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug gdb/17984] New: GDB fails to build on Aarch64 when -fno-common is enabled.


https://sourceware.org/bugzilla/show_bug.cgi?id=17984

            Bug ID: 17984
           Summary: GDB fails to build on Aarch64 when -fno-common is
                    enabled.
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gdb
          Assignee: unassigned at sourceware dot org
          Reporter: m.ostapenko at partner dot samsung.com
                CC: marcus.shawcroft at arm dot com, y.gribov at samsung dot com
            Target: aarch64-linux-gnu

Created attachment 8131
  --> https://sourceware.org/bugzilla/attachment.cgi?id=8131&action=edit
Trivial fix

When testing, I found out, that building GDB with -fno-common option fails on
Aarch64 with:

[  190s] gcc -O2 -g2 -feliminate-unused-debug-types -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector -Wformat
-Wformat-security -fmessage-length=0 -g -O0 -fno-common   -static-libstdc++
-static-libgcc    \
[  190s] >-------o gdb gdb.o aarch64-tdep.o aarch64-linux-tdep.o glibc-tdep.o
linux-tdep.o solib-svr4.o symfile-mem.o ser-base.o ser-unix.o ser-pipe.o
ser-tcp.o inf-ptrace.o fork-child.o aarch64-linux-nat.o proc-service.o
linux-thread-db.o linux-nat.o linux-fork.o linux-procfs.o linux-ptrace.o
linux-osdata.o linux-waitpid.o linux-personality.o remote.o dcache.o
tracepoint.o ax-general.o ax-gdb.o remote-fileio.o remote-notif.o ctf.o
tracefile.o tracefile-tfile.o  cli-dump.o cli-decode.o cli-script.o cli-cmds.o
cli-setshow.o cli-logging.o cli-interp.o cli-utils.o mi-out.o mi-console.o
mi-cmds.o mi-cmd-catch.o mi-cmd-env.o mi-cmd-var.o mi-cmd-break.o
mi-cmd-stack.o mi-cmd-file.o mi-cmd-disas.o mi-symbol-cmds.o mi-cmd-target.o
mi-cmd-info.o mi-interp.o mi-main.o mi-parse.o mi-getopt.o tui-command.o
tui-data.o tui-disasm.o tui-file.o tui-hooks.o tui-interp.o tui-io.o
tui-layout.o tui-out.o tui-regs.o tui-source.o tui-stack.o tui-win.o
tui-windata.o tui-wingeneral.o tui-winsource.o tui.o python.o py-arch.o
py-auto-load.o py-block.o py-bpevent.o py-breakpoint.o py-cmd.o
py-continueevent.o py-xmethods.o py-event.o py-evtregistry.o py-evts.o
py-exitedevent.o py-finishbreakpoint.o py-frame.o py-framefilter.o
py-function.o py-gdb-readline.o py-inferior.o py-infevents.o py-infthread.o
py-lazy-string.o py-linetable.o py-newobjfileevent.o py-objfile.o py-param.o
py-prettyprint.o py-progspace.o py-signalevent.o py-stopevent.o py-symbol.o
py-symtab.o py-threadevent.o py-type.o py-utils.o py-value.o py-varobj.o
guile.o elfread.o stap-probe.o posix-hdep.o posix-strerror.o c-exp.o
cp-name-parser.o ada-exp.o jv-exp.o d-exp.o f-exp.o go-exp.o m2-exp.o p-exp.o
version.o annotate.o addrmap.o auto-load.o auxv.o agent.o bfd-target.o
blockframe.o breakpoint.o break-catch-sig.o break-catch-throw.o findvar.o
regcache.o cleanups.o charset.o continuations.o corelow.o disasm.o
dummy-frame.o dfp.o source.o value.o eval.o valops.o valarith.o valprint.o
printcmd.o block.o symtab.o psymtab.o symfile.o symfile-debug.o symmisc.o
linespec.o dictionary.o infcall.o infcmd.o infrun.o expprint.o environ.o
stack.o thread.o exceptions.o extension.o filesystem.o filestuff.o inf-child.o
interps.o minidebug.o main.o macrotab.o macrocmd.o macroexp.o macroscope.o
mi-common.o event-loop.o event-top.o inf-loop.o completer.o gdbarch.o
arch-utils.o gdbtypes.o gdb_bfd.o gdb_obstack.o osabi.o copying.o memattr.o
mem-break.o target.o target-dcache.o parse.o language.o build-id.o buildsym.o
findcmd.o std-regs.o signals.o exec.o reverse.o bcache.o objfiles.o observer.o
minsyms.o maint.o demangle.o dbxread.o coffread.o coff-pe-read.o dwarf2read.o
mipsread.o stabsread.o corefile.o dwarf2expr.o dwarf2loc.o dwarf2-frame.o
dwarf2-frame-tailcall.o ada-lang.o c-lang.o d-lang.o f-lang.o objc-lang.o
ada-tasks.o ada-varobj.o c-varobj.o ui-out.o cli-out.o varobj.o vec.o go-lang.o
go-valprint.o go-typeprint.o jv-lang.o jv-valprint.o jv-typeprint.o jv-varobj.o
m2-lang.o opencl-lang.o p-lang.o p-typeprint.o p-valprint.o sentinel-frame.o
complaints.o typeprint.o ada-typeprint.o c-typeprint.o f-typeprint.o
m2-typeprint.o ada-valprint.o c-valprint.o cp-valprint.o d-valprint.o
f-valprint.o m2-valprint.o serial.o mdebugread.o top.o utils.o ui-file.o
user-regs.o frame.o frame-unwind.o doublest.o frame-base.o inline-frame.o
gnu-v2-abi.o gnu-v3-abi.o cp-abi.o cp-support.o cp-namespace.o reggroups.o
trad-frame.o tramp-frame.o solib.o solib-target.o prologue-value.o memory-map.o
memrange.o xml-support.o xml-syscall.o xml-utils.o target-descriptions.o
target-memory.o xml-tdesc.o xml-builtin.o inferior.o osdata.o gdb_usleep.o
record.o record-full.o gcore.o gdb_vecs.o jit.o progspace.o skip.o probe.o
common-utils.o buffer.o ptid.o gdb-dlfcn.o common-agent.o format.o registry.o
btrace.o record-btrace.o waitstatus.o print-utils.o rsp-low.o errors.o
common-debug.o debug.o common-exceptions.o btrace-common.o compile.o
compile-c-symbols.o compile-c-types.o compile-object-load.o
compile-object-run.o compile-loc2c.o compile-c-support.o inflow.o    init.o \
[  190s] >------   ../readline/libreadline.a ../opcodes/libopcodes.a
../bfd/libbfd.a  ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a   
-ldl -ldl -lncurses -lm -ldl     -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker
-export-dynamic /usr/lib64/libexpat.so   ../libiberty/libiberty.a 
build-gnulib/import/libgnu.a -ldl -Wl,--dynamic-list=./proc-service.list
[  199s] aarch64-linux-nat.o: In function `initialize_tdesc_aarch64':
[  199s] /home/abuild/rpmbuild/BUILD/gdb-7.8.1/gdb/features/aarch64.c:11:
multiple definition of `tdesc_aarch64'
[  199s]
aarch64-tdep.o:/home/abuild/rpmbuild/BUILD/gdb-7.8.1/gdb/objfiles.h:540: first
defined here
[  199s] aarch64-linux-nat.o: In function `initialize_tdesc_aarch64':
[  199s] /home/abuild/rpmbuild/BUILD/gdb-7.8.1/gdb/features/aarch64.c:11:
multiple definition of `tdesc_aarch64'
[  199s]
aarch64-tdep.o:/home/abuild/rpmbuild/BUILD/gdb-7.8.1/gdb/objfiles.h:540: first
defined here
[  199s] collect2: error: ld returned 1 exit status
[  199s] make[2]: *** [gdb] Error 1
[  199s] make[2]: Leaving directory `/home/abuild/rpmbuild/BUILD/gdb-7.8.1/gdb'
[  199s] make[1]: *** [all-gdb] Error 2
[  199s] make[1]: Leaving directory `/home/abuild/rpmbuild/BUILD/gdb-7.8.1'
[  199s] make: *** [all] Error 2
[  199s] error: Bad exit status from /var/tmp/rpm-tmp.YfrTV4 (%build)


This happens because struct target_desc *tdesc_aarch64 is defined in
gdb/features/aarch64.c source file, that is included to many other source files
(gdb/aarch64-linux-nat.c, for example). So, we have multiple definition of
`tdesc_aarch64' error during link stage.

One possible solution for this issue is replacing 'struct target_desc
*tdesc_aarch64' with 'extern struct target_desc *tdesc_aarch64' in
gdb/features/aarch64.c and defining this pointer into another source file, for
example gdb/aarch64-linux-nat.c.

Trivial fix is attached.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]