Skip to content

Instantly share code, notes, and snippets.

View yuyichao's full-sized avatar

Yichao Yu yuyichao

View GitHub Profile
(gdb) i r
eax 0x2 2
ecx 0x2 2
edx 0xfe971020 -23654368
ebx 0xfe971020 -23654368
esp 0xfe971020 0xfe971020
ebp 0xfe971048 0xfe971048
esi 0xfe971020 -23654368
edi 0xfe971010 -23654384
eip 0x800d17b 0x800d17b <julia_==_43940+91>
#0 0x0800d17b in julia_==_43940 (t1=<optimized out>, t2=<optimized out>)
at tuple.jl:80
#1 0x0800d075 in julia_complex_43939 (A=0xfe97121c, B=0x2) at array.jl:871
#2 0x040cb49b in jl_apply (f=0x9f15de0, args=0xfe97121c, nargs=2)
at julia.h:1280
#3 0x040cef22 in jl_trampoline (F=0x9f15de0, args=0xfe97121c, nargs=2)
at builtins.c:961
#4 0x040c00c7 in jl_apply (f=0x9f15de0, args=0xfe97121c, nargs=2)
at julia.h:1280
#5 0x040c5af7 in jl_apply_generic (F=0x994c0d0, args=0xfe97121c, nargs=2)
@yuyichao
yuyichao / gist:11279ae05c681c9524f3
Created May 10, 2015 03:12
LLVM IR with `jl_(jl_dump_function_ir(jl_function_ptr_by_llvm_name("julia_==_43940"), 1))`
; Function Attrs: sspreq
define i1 @"julia_==_43940"([2 x i32], [2 x i32]) #-1 {
pass5:
%StackGuardSlot = alloca i8*
%StackGuard = load i8* addrspace(256)* inttoptr (i32 20 to i8* addrspace(256)*)
call void @llvm.stackprotector(i8* %StackGuard, i8** %StackGuardSlot)
%2 = call i8* @llvm.stacksave()
%3 = alloca [2 x i32], align 4
store [2 x i32] %0, [2 x i32]* %3, align 4
%4 = bitcast [2 x i32]* %3 to i32*
@yuyichao
yuyichao / gist:7c874368c1a98ea2ae21
Created May 10, 2015 03:11
LLVM IR with `jl_(jl_dump_function_ir(jl_function_ptr_by_llvm_name("julia_==_43940"), 0))`
; Function Attrs: sspreq
define i1 @"julia_==_43940"([2 x i32], [2 x i32]) #0 {
pass5:
%StackGuardSlot = alloca i8*
%StackGuard = load i8* addrspace(256)* inttoptr (i32 20 to i8* addrspace(256)*)
call void @llvm.stackprotector(i8* %StackGuard, i8** %StackGuardSlot)
call void @llvm.dbg.value(metadata [2 x i32] %0, i64 0, metadata !13, metadata !15)
call void @llvm.dbg.value(metadata [2 x i32] %1, i64 0, metadata !16, metadata !15)
call void @llvm.dbg.value(metadata i32 1, i64 0, metadata !17, metadata !15)
call void @llvm.dbg.value(metadata i32 1, i64 0, metadata !18, metadata !15)
@yuyichao
yuyichao / gist:51b44ecc7631fcd02d5d
Created May 10, 2015 03:10
Assembly from jl_(jl_dump_function_asm(jl_function_ptr_by_llvm_name("julia_==_43940")))
.text
Filename: tuple.jl
Source line: 0
pushl %ebp
movl %esp, %ebp
pushl %ebx
pushl %edi
pushl %esi
subl $28, %esp
movl 20(%ebp), %ecx
; Function Attrs: sspreq
define i1 @"julia_==_43940"([2 x i32], [2 x i32]) #0 {
pass5:
%StackGuardSlot = alloca i8*
%StackGuard = load i8* addrspace(256)* inttoptr (i32 20 to i8* addrspace(256)*)
call void @llvm.stackprotector(i8* %StackGuard, i8** %StackGuardSlot)
call void @llvm.dbg.value(metadata [2 x i32] %0, i64 0, metadata !13, metadata !15)
call void @llvm.dbg.value(metadata [2 x i32] %1, i64 0, metadata !16, metadata !15)
call void @llvm.dbg.value(metadata i32 1, i64 0, metadata !17, metadata !15)
call void @llvm.dbg.value(metadata i32 1, i64 0, metadata !18, metadata !15)
; Dump of assembler code for function julia_==_43940:
0x0800d120 <+0>: push %ebp
0x0800d121 <+1>: mov %esp,%ebp
0x0800d123 <+3>: push %ebx
0x0800d124 <+4>: push %edi
0x0800d125 <+5>: push %esi
0x0800d126 <+6>: sub $0x1c,%esp
0x0800d129 <+9>: mov 0x14(%ebp),%ecx
0x0800d12c <+12>: mov 0x10(%ebp),%eax
0x0800d12f <+15>: mov 0xc(%ebp),%esi
; Function Attrs: sspreq
define i1 @"julia_==_43936"([2 x i32], [2 x i32]) #0 {
pass5:
%StackGuardSlot = alloca i8*
%StackGuard = load i8* addrspace(256)* inttoptr (i32 20 to i8* addrspace(256)*)
call void @llvm.stackprotector(i8* %StackGuard, i8** %StackGuardSlot)
call void @llvm.dbg.value(metadata [2 x i32] %0, i64 0, metadata !13, metadata !15)
call void @llvm.dbg.value(metadata [2 x i32] %1, i64 0, metadata !16, metadata !15)
call void @llvm.dbg.value(metadata i32 1, i64 0, metadata !17, metadata !15)
call void @llvm.dbg.value(metadata i32 1, i64 0, metadata !18, metadata !15)
; Function Attrs: sspreq
define i1 @"julia_==_43936"([2 x i32], [2 x i32]) #-1 {
pass5:
%StackGuardSlot = alloca i8*
%StackGuard = load i8* addrspace(256)* inttoptr (i32 20 to i8* addrspace(256)*)
call void @llvm.stackprotector(i8* %StackGuard, i8** %StackGuardSlot)
%2 = call i8* @llvm.stacksave()
%3 = alloca [2 x i32], align 4
store [2 x i32] %0, [2 x i32]* %3, align 4
%4 = bitcast [2 x i32]* %3 to i32*
* thread #1: tid = 28836, 0x00007ffff63e0528 libc.so.6`__GI_raise + 56, name = 'julia', stop reason = signal SIGABRT
* frame #0: 0x00007ffff63e0528 libc.so.6`__GI_raise + 56
frame #1: 0x00007ffff63e193a libc.so.6`__GI_abort + 362
frame #2: 0x00007ffff6af9fcd libjulia.so`jl_gc_collect + 149 at gc.c:2104
frame #3: 0x00007ffff6af9f38 libjulia.so`jl_gc_collect(full=<unavailable>) + 3160 at gc.c:2311
frame #4: 0x00007ffff6afd2b7 libjulia.so`jl_gc_counted_malloc [inlined] maybe_collect + 39 at gc.c:809
frame #5: 0x