> On Feb 15, 2018, at 3:56 AM, Dmitry Antipov via lldb-dev 
> <lldb-dev@lists.llvm.org> wrote:
> 
> On 02/15/2018 02:21 PM, Pavel Labath wrote:
> 
>> I've tried your sample, and I was indeed able to reproduce the
>> problem. What makes your case special is that "sin" and "cos" are
>> indirect functions (STT_GNU_IFUNC), so we have to do some extra work
>> (call the resolver function) to resolve them. 
> 
> I've changed my sample to dlsym() a regular function instead of an indirect
> stub, and got a breakpoint hit, but:
> 
> (lldb) attach 16196
> Process 16196 stopped
> * thread #1, name = 'main', stop reason = signal SIGSTOP
>    frame #0: 0x0000000000400798 main`main(argc=1, argv=0x00007ffd6f662668) at 
> main.c:16
>   13            for (a = 0; a < DELAY + argc; a++)
>   14              for (b = 0; b < DELAY + argc; b++)
>   15                for (c = 0; c < DELAY + argc; c++)
> -> 16                 z += a + b + c;
>   17            while (1)
>   18              {
>   19                void *handle = dlopen ("libfoo.so", RTLD_LAZY);
> 
> Executable module set to "/home/dantipov/tmp/t-dl2/main".
> Architecture set to: x86_64--linux.
> (lldb) breakpoint set -n foo
> Breakpoint 1: no locations (pending).
> WARNING:  Unable to resolve breakpoint to any actual locations.
> (lldb) process continue
> Process 16196 resuming
> 1 location added to breakpoint 1
> (lldb) error: ld-linux-x86-64.so.2 0x0005d207: adding range [0x14eea-0x14f5a) 
> which has a base that is less than the function's low PC 0x15730. Please file 
> a bug and attach the file at the start of this error message
> error: ld-linux-x86-64.so.2 0x0005d207: adding range [0x14f70-0x14f76) which 
> has a base that is less than the function's low PC 0x15730. Please file a bug 
> and attach the file at the start of this error message
> error: ld-linux-x86-64.so.2 0x0005d268: adding range [0x14eea-0x14f5a) which 
> has a base that is less than the function's low PC 0x15730. Please file a bug 
> and attach the file at the start of this error message
> error: ld-linux-x86-64.so.2 0x0005d268: adding range [0x14f70-0x14f76) which 
> has a base that is less than the function's low PC 0x15730. Please file a bug 
> and attach the file at the start of this error message
> Process 16196 stopped
> * thread #1, name = 'main', stop reason = breakpoint 1.1
>    frame #0: 0x00007f3b1a8536f7 
> libfoo.so`foo(v=0.00000000000003907985046680551) at libfoo.c:6
>   3           double
>   4           foo (double v)
>   5           {
> -> 6            return sin (v) + cos (v);
>   7           }
> 
> This seems to be an another bug, isn't it?
> 

Yes, the compiler or linker is producing bad DWARF. It is creating DWARF that 
has a function that has a top level address range of something like 
[0x1000-0x2000) and it has a child lexical block with a range like 
[0x900-0x910). All address ranges must be contained in their parent ranges 
within a DW_TAG_subprogram in the DWARF. If you have llvm-dwarfdump, you can 
run "llvm-dwarfdump --verify" to see a list of the errors in the DWARF that you 
can use to file a compiler bug. Try running "llvm-dwarfdump --verify" on the .o 
file before it is linked. If there are DWARF problems with the .o file, then 
file a bug on the compiler. If the problem only exists on the final executable, 
then file a bug against your linker.

Greg

> Dmitry
> 
> -----------------------------------------------------------------------------------
> This email message is for the sole use of the intended recipient(s) and may 
> contain
> confidential information.  Any unauthorized review, use, disclosure or 
> distribution
> is prohibited.  If you are not the intended recipient, please contact the 
> sender by
> reply email and destroy all copies of the original message.
> -----------------------------------------------------------------------------------
> <libfoo.c><main.c><Makefile.txt>_______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to