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

            Bug ID: 25309
           Summary: Certain source lines when debugging with GDB are not
                    found for an executable using gold linker, but are
                    found if regular ld is used instead
           Product: binutils
           Version: 2.30
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gold
          Assignee: ccoutant at gmail dot com
          Reporter: ciro.santilli at gmail dot com
                CC: ian at airs dot com
  Target Milestone: ---

I don't have a fully minimized example, but here is a fully reproducible setup
within a more or less complex build of a big project:
https://github.com/cirosantilli/linux-kernel-module-cheat/issues/109 running in
Ubuntu 18.04.

The project uses partial linking.

The compilation, partial link, and final link commands for one particular file
for which the source lines could not be found was as follows. Do you see
anything suspicious?

compile.tmp.sh

```
g++ \
  -o out/gem5/upstream-master/build/ARM/cpu/o3/cpu.do \
  -c \
  -std=c++11 \
  -pipe \
  -fno-strict-aliasing \
  -Wall \
  -Wundef \
  -Wextra \
  -Wno-sign-compare \
  -Wno-unused-parameter \
  -Werror \
  -Wno-error=deprecated-declarations \
  -Wno-error=deprecated \
  -pthread \
  -fno-builtin-malloc \
  -fno-builtin-calloc \
  -fno-builtin-realloc \
  -fno-builtin-free \
  -DPROTOBUF_INLINE_NOT_IN_HEADERS=0 \
  -ggdb3 \
  -O0 \
  -DNUMBER_BITS_PER_SET=64 \
  -DDEBUG \
  -DTRACING_ON=1 \
  -Iext/pybind11/include \
  -Iout/gem5/upstream-master/build/drampower/src \
  -Iout/gem5/upstream-master/build/nomali/include \
  -Iout/gem5/upstream-master/build/iostream3 \
  -Iout/gem5/upstream-master/build/libfdt \
  -Iout/gem5/upstream-master/build/libelf \
  -Iout/gem5/upstream-master/build/fputils/include \
  -Iinclude \
  -Iext \
  -I/usr/include/python2.7 \
  -I/usr/include/x86_64-linux-gnu/python2.7 \
  -I/usr/include/hdf5/serial \
  -Iext/googletest/googletest/include \
  -Iext/googletest/googlemock/include \
  -Iout/gem5/upstream-master/build/ARM \
  -Iout/gem5/upstream-master/build/ARM/systemc/ext \
  out/gem5/upstream-master/build/ARM/cpu/o3/cpu.cc
```

intermediate-link.tmp.sh

```
g++ \
  -o out/gem5/upstream-master/build/ARM/cpu/o3/lib.do.partial \
  -fuse-ld=gold \
  -r \
  -nostdlib \
  -flinker-output=rel \
  out/gem5/upstream-master/build/ARM/cpu/o3/base_dyn_inst.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/commit.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/cpu.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/deriv.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/decode.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/dyn_inst.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/fetch.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/free_list.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/fu_pool.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/iew.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/inst_queue.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/lsq.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/lsq_unit.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/mem_dep_unit.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/regfile.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/rename.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/rename_map.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/rob.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/scoreboard.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/store_set.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/thread_context.do \
  out/gem5/upstream-master/build/ARM/cpu/o3/checker.do \
  -Lout/gem5/upstream-master/build/drampower \
  -Lout/gem5/upstream-master/build/nomali \
  -Lout/gem5/upstream-master/build/iostream3 \
  -Lout/gem5/upstream-master/build/libfdt \
  -Lout/gem5/upstream-master/build/libelf \
  -Lout/gem5/upstream-master/build/fputils \
  -L/usr/lib/x86_64-linux-gnu/hdf5/serial \
  -Lout/gem5/upstream-master/build/googletest
```

link.tmp.sh

```
g++ \
  -o out/gem5/upstream-master/build/ARM/gem5.debug \
  -fuse-ld=gold \
  -pthread \
  -L/usr/lib/python2.7/config-x86_64-linux-gnu \
  -L/usr/lib \
  -Xlinker \
  -export-dynamic \
  -Wl,-O1 \
  -Wl,-Bsymbolic-functions \
  -z origin \
  -O0 \
  out/gem5/upstream-master/build/ARM/sim/main.do \
  out/gem5/upstream-master/build/ARM/dev/pci/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/ruby/network/lib.do.partial \
  out/gem5/upstream-master/build/ARM/dev/ps2/lib.do.partial \
  out/gem5/upstream-master/build/ARM/cpu/o3/probe/lib.do.partial \
  out/gem5/upstream-master/build/ARM/systemc/dt/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/protocol/lib.do.partial \
  out/gem5/upstream-master/build/ARM/kern/lib.do.partial \
  out/gem5/upstream-master/build/ARM/cpu/minor/lib.do.partial \
 
out/gem5/upstream-master/build/ARM/mem/ruby/network/fault_model/lib.do.partial
\
  out/gem5/upstream-master/build/ARM/sim/probe/lib.do.partial \
  out/gem5/upstream-master/build/ARM/base/vnc/lib.do.partial \
 
out/gem5/upstream-master/build/ARM/systemc/tlm_core/2/generic_payload/lib.do.partial
\
  out/gem5/upstream-master/build/ARM/arch/arm/lib.do.partial \
  out/gem5/upstream-master/build/ARM/dev/i2c/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/ruby/network/garnet2.0/lib.do.partial
\
  out/gem5/upstream-master/build/ARM/mem/ruby/common/lib.do.partial \
  out/gem5/upstream-master/build/ARM/sim/lib.do.partial \
  out/gem5/upstream-master/build/ARM/cpu/testers/directedtest/lib.do.partial \
  out/gem5/upstream-master/build/ARM/systemc/dt/misc/lib.do.partial \
  out/gem5/upstream-master/build/ARM/learning_gem5/part2/lib.do.partial \
  out/gem5/upstream-master/build/ARM/cpu/lib.do.partial \
  out/gem5/upstream-master/build/ARM/cpu/o3/lib.do.partial \
  out/gem5/upstream-master/build/ARM/systemc/dt/fx/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/qos/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/ruby/slicc_interface/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/cache/compressors/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/ruby/system/lib.do.partial \
  out/gem5/upstream-master/build/ARM/arch/generic/lib.do.partial \
  out/gem5/upstream-master/build/ARM/python/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/cache/prefetch/lib.do.partial \
 
out/gem5/upstream-master/build/ARM/mem/cache/tags/indexing_policies/lib.do.partial
\
  out/gem5/upstream-master/build/ARM/mem/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/ruby/profiler/lib.do.partial \
  out/gem5/upstream-master/build/ARM/dev/virtio/lib.do.partial \
  out/gem5/upstream-master/build/ARM/dev/net/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/ruby/protocol/lib.do.partial \
  out/gem5/upstream-master/build/ARM/systemc/tlm_core/2/quantum/lib.do.partial
\
  out/gem5/upstream-master/build/ARM/cpu/testers/memtest/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/ruby/structures/lib.do.partial \
  out/gem5/upstream-master/build/ARM/systemc/core/lib.do.partial \
  out/gem5/upstream-master/build/ARM/arch/arm/tracers/lib.do.partial \
  out/gem5/upstream-master/build/ARM/systemc/dt/int/lib.do.partial \
  out/gem5/upstream-master/build/ARM/proto/lib.do.partial \
  out/gem5/upstream-master/build/ARM/systemc/dt/bit/lib.do.partial \
  out/gem5/upstream-master/build/ARM/systemc/tlm_bridge/lib.do.partial \
 
out/gem5/upstream-master/build/ARM/cpu/testers/garnet_synthetic_traffic/lib.do.partial
\
  out/gem5/upstream-master/build/ARM/cpu/testers/traffic_gen/lib.do.partial \
  out/gem5/upstream-master/build/ARM/sim/power/lib.do.partial \
  out/gem5/upstream-master/build/ARM/systemc/utils/lib.do.partial \
  out/gem5/upstream-master/build/ARM/base/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/cache/tags/lib.do.partial \
  out/gem5/upstream-master/build/ARM/systemc/channel/lib.do.partial \
  out/gem5/upstream-master/build/ARM/dev/arm/lib.do.partial \
  out/gem5/upstream-master/build/ARM/dev/storage/lib.do.partial \
  out/gem5/upstream-master/build/ARM/dev/serial/lib.do.partial \
  out/gem5/upstream-master/build/ARM/cpu/pred/lib.do.partial \
  out/gem5/upstream-master/build/ARM/unittest/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/probes/lib.do.partial \
  out/gem5/upstream-master/build/ARM/cpu/trace/lib.do.partial \
  out/gem5/upstream-master/build/ARM/base/filters/lib.do.partial \
  out/gem5/upstream-master/build/ARM/cpu/testers/rubytest/lib.do.partial \
  out/gem5/upstream-master/build/ARM/systemc/tlm_utils/lib.do.partial \
  out/gem5/upstream-master/build/ARM/dev/lib.do.partial \
 
out/gem5/upstream-master/build/ARM/mem/cache/replacement_policies/lib.do.partial
\
  out/gem5/upstream-master/build/ARM/cpu/simple/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/cache/lib.do.partial \
  out/gem5/upstream-master/build/ARM/mem/ruby/network/simple/lib.do.partial \
  out/gem5/upstream-master/build/ARM/cpu/simple/probes/lib.do.partial \
  out/gem5/upstream-master/build/ARM/base/date.do \
  -Lout/gem5/upstream-master/build/drampower \
  -Lout/gem5/upstream-master/build/nomali \
  -Lout/gem5/upstream-master/build/iostream3 \
  -Lout/gem5/upstream-master/build/libfdt \
  -Lout/gem5/upstream-master/build/libelf \
  -Lout/gem5/upstream-master/build/fputils \
  -L/usr/lib/x86_64-linux-gnu/hdf5/serial \
  -Lout/gem5/upstream-master/build/googletest \
  -lpython2.7 \
  -lpthread \
  -ldl \
  -lutil \
  -lm \
  -lz \
  -lprotobuf \
  -lrt \
  -ltcmalloc \
  -lhdf5 \
  -lhdf5_cpp \
  -lfputils \
  -lelf \
  -lfdt \
  -liostream3 \
  -lnomali \
  -ldrampower \
  -lpng
```

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

Reply via email to