DDD 3.3.11 (x86_64-pc-linux-gnu) gets `Segmentation fault' signal

Polarina <[email protected]> Fri, 30 May 2008 19:22:11 +0000
Newsgroups gmane.comp.debugging.ddd.bugs,gmane.comp.debugging.ddd.general
Message-ID <1212175331.19493.5.camel@localhost>
$ gcc -nostdlib -ggdb3 sha256.S -o a.out-S
$ ddd ./a.out-S

Internal error (Segmentation fault).

Oops!  You have found a bug in DDD.

If you can reproduce this bug, please send a bug report
to <[email protected]>, giving a subject like

    DDD 3.3.11 (x86_64-pc-linux-gnu) gets `Segmentation fault' signal

To enable us to fix the bug, you should include the following
information:
* What you were doing to get this message.  Report all the facts.
* The contents of the `~/.ddd/log' file as generated by this session.
Please read also the section "Reporting Bugs" in the DDD manual.

We thank you for your support.

Segmentation fault

_______________________________________________
bug-ddd mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-ddd
log (application/octet-stream, 16.4 KB) - not displayed
sha256.S (text/plain, 4.1 KB)
.section .data
	sha256_keys: ## Needs to be reversed.
		.long 0x428a2f98
		.long 0x71374491
		.long 0xb5c0fbcf
		.long 0xe9b5dba5
		.long 0x3956c25b
		.long 0x59f111f1
		.long 0x923f82a4
		.long 0xab1c5ed5
		.long 0xd807aa98
		.long 0x12835b01
		.long 0x243185be
		.long 0x550c7dc3
		.long 0x72be5d74
		.long 0x80deb1fe
		.long 0x9bdc06a7
		.long 0xc19bf174
		.long 0xe49b69c1
		.long 0xefbe4786
		.long 0x0fc19dc6
		.long 0x240ca1cc
		.long 0x2de92c6f
		.long 0x4a7484aa
		.long 0x5cb0a9dc
		.long 0x76f988da
		.long 0x983e5152
		.long 0xa831c66d
		.long 0xb00327c8
		.long 0xbf597fc7
		.long 0xc6e00bf3
		.long 0xd5a79147
		.long 0x06ca6351
		#.long 0xd5a79147
		#.long 0x06ca6351
		.long 0x14292967
		.long 0x27b70a85
		.long 0x2e1b2138
		.long 0x4d2c6dfc
		.long 0x53380d13
		.long 0x650a7354
		.long 0x766a0abb
		.long 0x81c2c92e
		.long 0x92722c85
		.long 0xa2bfe8a1
		.long 0xa81a664b
		.long 0xc24b8b70
		.long 0xc76c51a3
		.long 0xd192a819
		.long 0xd6990624
		.long 0xf40e3585
		.long 0x106aa070
		.long 0x19a4c116
		.long 0x1e376c08
		.long 0x2748774c
		.long 0x34b0bcb5
		.long 0x391c0cb3
		.long 0x4ed8aa4a
		.long 0x5b9cca4f
		.long 0x682e6ff3
		.long 0x748f82ee
		.long 0x78a5636f
		.long 0x84c87814
		.long 0x8cc70208
		.long 0x90befffa
		.long 0xa4506ceb
		.long 0xbef9a3f7
		.long 0xc67178f2
	sha256_h:
		.long 0x6a09e667
		.long 0xbb67ae85
		.long 0x3c6ef372
		.long 0xa54ff53a
		.long 0x510e527f
		.long 0x9b05688c
		.long 0x1f83d9ab
		.long 0x5be0cd19
	sha256_data:
		.long 0x00000080
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000
		.long 0x00000000

.section .text
	.globl _start

# Arguments
# 	%r8  - *hash
# 	%r9  - *data
sha256_transform:
	mov %rsp, %rbp
	sub $64, %rsp
	
	mov $16, %al
	
	sha256_transform_init:
		mov -4(%r9, %rax, 4), %ebx
		bswap %ebx
		mov %ebx, -4(%rsp, %rax, 4)
		dec %al
	jnz sha256_transform_init
	
	mov (%r8), %ebx
	mov 4(%r8), %r9d
	mov 8(%r8), %r10d
	mov 12(%r8), %r11d
	mov 16(%r8), %r12d
	mov 20(%r8), %r13d
	mov 24(%r8), %r14d
	mov 28(%r8), %r15d
	
	sha256_transform_loop:
		# Process.
		add %r15d, %r11d
		#add %r15d, %r15d
		
		#mov %r9d, %edx
		#mov %r9d, %ecx
		#mov %r10d, %edi
		#xor %ebx, %edx
		#and %ebx, %ecx
		#and %edx, %edi
		#or %edi, %ecx
		#add %ecx, %r15d
		
		mov %ebx, %ecx
		mov %ebx, %edx
		ror $2, %ecx
		ror $13, %edx
		xor %edx, %ecx
		mov %ebx, %edx
		ror $22, %edx
		xor %edx, %ecx
		add %ecx, %r15d
		
		mov %r12d, %ecx
		mov %r12d, %edx
		ror $6, %ecx
		ror $11, %edx
		xor %edx, %ecx
		mov %r12d, %edx
		ror $25, %edx
		xor %edx, %ecx
		
		mov %r13d, %edx
		xor %r14d, %edx
		and %r12d, %edx
		xor %r14d, %edx
		add %edx, %ecx
		
		mov %rax, %rdx
		and $0x0F, %rdx
		add (%rsp, %rdx, 4), %ecx
		add sha256_keys(, %rax, 4), %ecx
		add %ecx, %r11d
		add %ecx, %r15d
		
		# Extend.
		#mov %rax, %rcx
		#inc %cl
		#and $0x0F, %cl
		#mov (%rsp, %rcx, 4), %edx
		#mov %edx, %edi
		#mov %edx, %esi
		#ror $7, %edx
		#ror $18, %edi
		#shr $3, %esi
		#xor %edi, %edx
		#xor %esi, %edx
		
		#sub $3, %cl
		#and $0x0F, %cl
		#mov (%rsp, %rcx, 4), %ecx
		#mov %ecx, %edi
		#mov %ecx, %esi
		#ror $17, %ecx
		#ror $19, %edi
		#shr $10, %esi
		#xor %edi, %ecx
		#xor %esi, %ecx
		#add %ecx, %edx
		
		#mov %eax, %ecx
		#sub $7, %cl
		#and $0x0F, %cl
		#add (%rsp, %rcx, 4), %edx
		#mov %al, %cl
		#and $0x0F, %cl
		#add %edx, (%rsp, %rcx, 4)
		
		# Rotate state.
		mov %r15d, %ecx
		mov %r14d, %r15d
		mov %r13d, %r14d
		mov %r12d, %r13d
		mov %r11d, %r12d
		mov %r10d, %r11d
		mov %r9d, %r10d
		mov %ebx, %r9d
		mov %ecx, %ebx
		
		inc %al
		cmp $64, %al
	jl sha256_transform_loop
	
	add %ebx, (%r8)
	add %r9d, 4(%r8)
	add %r10d, 8(%r8)
	add %r11d, 12(%r8)
	add %r12d, 16(%r8)
	add %r13d, 20(%r8)
	add %r14d, 24(%r8)
	add %r15d, 28(%r8)
	
	mov %rbp, %rsp
	ret


_start:
	mov $0x00FFFFFF, %rsi
	
	loop:
		push %rsi
		mov $sha256_h, %r8
		mov $sha256_data, %r9
		call sha256_transform
		pop %rsi
		
		dec %rsi
	jnz loop
	
	xor %eax, %eax
	inc %eax
	xor %ebx, %ebx
	int $0x80