; This code is UNTESTED, and almost certainly DOES NOT WORK!
; Do NOT use this as an example of how to write AMD64 shared libraries!
; This code is simply to test the AMD64 ELF WRT relocations.

; This file should test the following:
; [1] Define and export a global text-section symbol
; [2] Define and export a global data-section symbol
; [3] Define and export a global BSS-section symbol
; [4] Define a non-global text-section symbol
; [5] Define a non-global data-section symbol
; [6] Define a non-global BSS-section symbol
; [7] Define a COMMON symbol
; [8] Define a NASM local label
; [9] Reference a NASM local label
; [10] Import an external symbol
; [11] Make a PC-relative call to an external symbol
; [12] Reference a text-section symbol in the text section
; [13] Reference a data-section symbol in the text section
; [14] Reference a BSS-section symbol in the text section
; [15] Reference a text-section symbol in the data section
; [16] Reference a data-section symbol in the data section
; [17] Reference a BSS-section symbol in the data section

	  BITS 64
	  GLOBAL lrotate:function ; [1]
	  GLOBAL greet:function	; [1]
	  GLOBAL asmstr:data asmstr.end-asmstr ; [2]
	  GLOBAL textptr:data 4	; [2]
	  GLOBAL selfptr:data 4	; [2]
	  GLOBAL integer:data 4	; [3]
	  EXTERN printf		; [10]
	  COMMON commvar 4:4	; [7]
	  EXTERN _GLOBAL_OFFSET_TABLE_

	  SECTION .text

; prototype: long lrotate(long x, int num);
lrotate:			; [1]
	  push rbp
	  mov rbp,rsp
	  mov rax,[rbp+8]
	  mov rcx,[rbp+12]
.label	  rol rax,1		; [4] [8]
	  loop .label		; [9] [12]
	  mov rsp,rbp
	  pop rbp
	  ret

; prototype: void greet(void);
greet	  push rbx		; we'll use RBX for GOT, so save it
	  mov rbx,[integer wrt ..gotpcrel wrt rip]
	  mov rax,[rbx] ; [14]
	  inc rax
	  mov rbx,[_GLOBAL_OFFSET_TABLE_ wrt ..gotpcrel wrt rip]
	  mov [rbx+localint wrt ..got],eax ; [14]
	  mov rax,[rbx+commvar wrt ..got]
	  push qword [rax]
	  mov rax,[rbx+localptr wrt ..got] ; [13]
	  push qword [rax]
	  mov rax,[rbx+integer wrt ..got] ; [1] [14]
	  push qword [rax]
	  lea rax,[rbx+printfstr wrt ..got]
	  push rax		; [13]
	  call printf wrt ..plt	; [11]
	  add rsp,16
	  pop rbx
	  ret

	  SECTION .data

; a string
asmstr	  db 'hello, world', 0	; [2]
.end

; a string for Printf
printfstr db "integer==%d, localint==%d, commvar=%d"
	  db 10, 0

; some pointers
localptr  dd localint		; [5] [17]
textptr	  dd greet wrt ..sym	; [15]
selfptr	  dd selfptr wrt ..sym	; [16]

	  SECTION .bss

; an integer
integer	  resd 1		; [3]

; a local integer
localint  resd 1		; [6]
