	.section        ".init"
	.align 		4
	.global 	%1$s
%1$s:
!
!*      Code for worst case global offset table is 64 bits away from us
!
1:
	rd	%%pc,%%l2
	sethi	%%hh(_GLOBAL_OFFSET_TABLE_ + (. - 1b)), %%l0
	sethi	%%lm(_GLOBAL_OFFSET_TABLE_ + (. - 1b)), %%l1
	or	%%l0,%%hm(_GLOBAL_OFFSET_TABLE_ + (. - 1b)),%%l0
	or	%%l1,%%lo(_GLOBAL_OFFSET_TABLE_ + (. - 1b)),%%l1
	sllx	%%l0,32,%%l0
	or	%%l0,%%l1,%%l0
	add 	%%l2,%%l0,%%l0
	sethi   %%hi(%5$d),%%o0
	or      %%o0,%%lo(%5$d),%%o0
	sethi	%%hi(soinfo),%%o1
	or	%%o1,%%lo(soinfo),%%o1
	ldx    [%%l0+%%o1],%%o1
	call    %3$s
	or	%%g0,%%g0,%%o2
	.section        ".fini"
	.align 		4
	.global 	%2$s
%2$s:
!
!*      Code for worst case global offset table is 64 bits away from us
!
1:
	rd	%%pc,%%l2
	sethi	%%hh(_GLOBAL_OFFSET_TABLE_ + (. - 1b)), %%l0
	sethi	%%lm(_GLOBAL_OFFSET_TABLE_ + (. - 1b)), %%l1
	or	%%l0,%%hm(_GLOBAL_OFFSET_TABLE_ + (. - 1b)),%%l0
	or	%%l1,%%lo(_GLOBAL_OFFSET_TABLE_ + (. - 1b)),%%l1
	sllx	%%l0,32,%%l0
	or	%%l0,%%l1,%%l0
	add 	%%l2,%%l0,%%l0
	sethi   %%hi(%5$d),%%o0
	or      %%o0,%%lo(%5$d),%%o0
	sethi	%%hi(soinfo),%%o1
	or	%%o1,%%lo(soinfo),%%o1
	ldx    [%%l0+%%o1],%%o1
	call    %4$s
	or	%%g0,%%g0,%%o2
