http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52583
--- Comment #7 from Uros Bizjak <ubizjak at gmail dot com> 2012-03-16 08:44:50 UTC --- (In reply to comment #6) > Thanks for looking at this. > > The first step is to run readelf --debug=line FILE to make sure that the line > number information is recorded correctly. Which of course it probably is. If > you have trouble parsing the --debug=line output, try --debug=decodedline. > > The place that Go is reading that information is > libgo/go/debug/dwarf/line.go. > Most likely something is going wrong in the way that it gathers the > information, but I don't know what. Something happens at line 48 (is_stmt is briefly toggled and Discriminator is set): Special opcode 9: advance Address by 0 to 0x120004dd8 and Line by 4 to 47 Special opcode 76: advance Address by 20 to 0x120004dec and Line by 1 to 48 Special opcode 18: advance Address by 4 to 0x120004df0 and Line by -1 to 47 Special opcode 20: advance Address by 4 to 0x120004df4 and Line by 1 to 48 Extended opcode 4: set Discriminator to 2 Set is_stmt to 0 Special opcode 33: advance Address by 8 to 0x120004dfc and Line by 0 to 48 Extended opcode 4: set Discriminator to 2 Set is_stmt to 1 Special opcode 118: advance Address by 32 to 0x120004e1c and Line by 1 to 49 Extended opcode 4: set Discriminator to 2 Special opcode 18: advance Address by 4 to 0x120004e20 and Line by -1 to 48 Extended opcode 4: set Discriminator to 2 Special opcode 20: advance Address by 4 to 0x120004e24 and Line by 1 to 49 Extended opcode 4: set Discriminator to 2 Special opcode 116: advance Address by 32 to 0x120004e44 and Line by -1 to 48 Also --debug=decodedline says: log_test.go 47 0x120004dd8 log_test.go 48 0x120004dec log_test.go 47 0x120004df0 log_test.go 48 0x120004df4 UNKNOWN: length 2 log_test.go 48 0x120004dfc UNKNOWN: length 2 log_test.go 49 0x120004e1c It is probably this UNKNOWN that disturbs decoding.