[llvm-bugs] [Bug 47781] New: Intruction incorrectly marked as not mappable back to source code

via llvm-bugs llvm-bugs at lists.llvm.org
Fri Oct 9 07:07:32 PDT 2020


https://bugs.llvm.org/show_bug.cgi?id=47781

            Bug ID: 47781
           Summary: Intruction incorrectly marked as not mappable back to
                    source code
           Product: libraries
           Version: 10.0
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: DebugInfo
          Assignee: unassignedbugs at nondot.org
          Reporter: wcohen at redhat.com
                CC: jdevlieghere at apple.com, keith.walker at arm.com,
                    llvm-bugs at lists.llvm.org,
                    paul_robinson at playstation.sony.com

When reviewing the binaries of programs build with clang-10.0.1-2.fc32.x86_64
on fedora 32 with "eu-readelf --debug-dump=decodedline" I found that clang
appeared to incorrectly state that one of the instructions in the executable
could not be mapped back to the source code.  This can be observed build a
small rpm package on Fedora 32.  

Get the heapsort-0.5-fc32.src.rpm from
https://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps .
Then following the steps below to build the binary:

sudo dnf build-dep ./heapsort-0.5-fc32.src.rpm
rpm -Uvh heapsort-0.5-fc32.src.rpm
cd ~/rpmbuild/SPECS
export CC=clang
export CXX=clang++
rpmbuild --define '%optflags  -O2 -g  -pipe -Wall -Werror=format-security
-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions
-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 -fcf-protection -Wno-narrowing
-Wno-unused-command-line-argument' -bc heapsort.spec

The issue can be seen in the resulting heapsort binary:

cd ~/rpmbuild/BUILD/heapsort-0.5
eu-readelf --debug-dump=decodedline ./heapsort

The output of eu-readelf has:

     0:14           0   0  0 0x0000000000401202 <main+0x42>

Looking at the dissembly of the code produced with "objdump -d
heapsort" this instruction is a zeroing of the register used for the
variable of i:

  401202:       31 db                   xor    %ebx,%ebx

Would expect that the eu-readelf output be (the "i=0" in the source code):

     97:9           0   0  0 0x0000000000401202 <main+0x42>

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20201009/8b260cb4/attachment.html>


More information about the llvm-bugs mailing list