mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-28 23:34:53 +03:00 
			
		
		
		
	I used these shell commands: ../glibc/scripts/update-copyrights $PWD/../gnulib/build-aux/update-copyright (cd ../glibc && git commit -am"[this commit message]") and then ignored the output, which consisted lines saying "FOO: warning: copyright statement not found" for each of 6694 files FOO. I then removed trailing white space from benchtests/bench-pthread-locks.c and iconvdata/tst-iconv-big5-hkscs-to-2ucs4.c, to work around this diagnostic from Savannah: remote: *** pre-commit check failed ... remote: *** error: lines with trailing whitespace found remote: error: hook declined to update refs/heads/master
		
			
				
	
	
		
			153 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* ELF startup code for HPPA.
 | |
|    Copyright (C) 2002-2021 Free Software Foundation, Inc.
 | |
|    This file is part of the GNU C Library.
 | |
| 
 | |
|    The GNU C Library is free software; you can redistribute it and/or
 | |
|    modify it under the terms of the GNU Lesser General Public
 | |
|    License as published by the Free Software Foundation; either
 | |
|    version 2.1 of the License, or (at your option) any later version.
 | |
| 
 | |
|    In addition to the permissions in the GNU Lesser General Public
 | |
|    License, the Free Software Foundation gives you unlimited
 | |
|    permission to link the compiled version of this file with other
 | |
|    programs, and to distribute those programs without any restriction
 | |
|    coming from the use of this file. (The GNU Lesser General Public
 | |
|    License restrictions do apply in other respects; for example, they
 | |
|    cover modification of the file, and distribution when not linked
 | |
|    into another program.)
 | |
| 
 | |
|    Note that people who make modified versions of this file are not
 | |
|    obligated to grant this special exception for their modified
 | |
|    versions; it is their choice whether to do so. The GNU Lesser
 | |
|    General Public License gives permission to release a modified
 | |
|    version without this exception; this exception also makes it
 | |
|    possible to release a modified version which carries forward this
 | |
|    exception.
 | |
| 
 | |
|    The GNU C Library is distributed in the hope that it will be useful,
 | |
|    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
|    Lesser General Public License for more details.
 | |
| 
 | |
|    You should have received a copy of the GNU Lesser General Public
 | |
|    License along with the GNU C Library.  If not, see
 | |
|    <https://www.gnu.org/licenses/>.  */
 | |
| 
 | |
| 	.import main, code
 | |
| 	.import $global$, data
 | |
| 	.import __libc_start_main, code
 | |
| 	.import __libc_csu_fini, code
 | |
| 	.import __libc_csu_init, code
 | |
| 
 | |
| 	/* Have the linker create plabel words so we get PLABEL32
 | |
| 	   relocs and not 21/14.  The use of 21/14 relocs is only
 | |
| 	   supported in the latest dynamic linker.  */
 | |
| #ifdef PIC
 | |
| 	.section	.data.rel.ro,"aw",@progbits
 | |
| #else
 | |
| 	.section	.rodata,"a",@progbits
 | |
| #endif
 | |
| 	.align 4
 | |
| .Lpmain:
 | |
| 	.word P%main
 | |
| .Lp__libc_start_main:
 | |
| 	.word P%__libc_start_main
 | |
| .Lp__libc_csu_fini:
 | |
| 	.word P%__libc_csu_fini
 | |
| .Lp__libc_csu_init:
 | |
| 	.word P%__libc_csu_init
 | |
| 
 | |
| 	.text
 | |
| 	.align 4
 | |
| 	.globl _start
 | |
| 	.export _start, ENTRY
 | |
| 	.type _start,@function
 | |
| _start:
 | |
| 	/* At entry to the function we have:
 | |
| 
 | |
| 		r26 - Unused
 | |
| 		r25 - argc
 | |
| 		r24 - argv
 | |
| 		r23 - False _dl_fini plabel address
 | |
| 
 | |
| 	   This function is called from the lower half of RTLD_START.
 | |
| 
 | |
| 	   The call to __libc_start_main expects:
 | |
| 
 | |
| 		1. r26 - Application main
 | |
| 		2. r25 - argc
 | |
| 		3. r24 - argv
 | |
| 		4. r23 - __libc_csu_init
 | |
| 		5. sp-52 - __libc_csu_fini
 | |
| 		6. sp-56 - rtld_fini
 | |
| 		7. sp-60 - stackend  */
 | |
| 
 | |
| 	.proc
 | |
| 	.callinfo
 | |
| 	/* Clear previous-sp.  */
 | |
| 	stw	%r0, -4(%sp)
 | |
| 	/* Setup the stack and frame.  */
 | |
| 	stw	%rp, -20(%sp)
 | |
| 	ldo	64(%sp), %sp
 | |
| 	stw	%sp, -4(%sp)
 | |
| 	stw	%r19, -32(%sp)
 | |
| 
 | |
| 	/* argc and argv should be in 25 and 24 (2nd and 3rd argument) */
 | |
| 	/* void (*rtld_fini) (void) (6th argument) */
 | |
| 	stw	%r23, -56(%sp)
 | |
| 
 | |
| 	/* Need to setup 1, 4, 5, and 7th arguments */
 | |
| 
 | |
| #ifdef PIC
 | |
| 	/* Load $global$ address into %dp */
 | |
| 	bl	.+8, %dp
 | |
| 	addil	L'$global$-$PIC_pcrel$0+1, %dp
 | |
| 	ldo	R'$global$-$PIC_pcrel$0+5(%r1), %dp
 | |
| 
 | |
| 	/* load main (1st argument) */
 | |
| 	addil	LT'.Lpmain, %r19
 | |
| 	ldw	RT'.Lpmain(%r1), %r26
 | |
| 	ldw	0(%r26),%r26
 | |
| 	/* void (*init) (void) (4th argument) */
 | |
| 	addil	LT'.Lp__libc_csu_init, %r19
 | |
| 	ldw	RT'.Lp__libc_csu_init(%r1), %r23
 | |
| 	ldw	0(%r23), %r23
 | |
| 	/* void (*fini) (void) (5th argument) */
 | |
| 	addil	LT'.Lp__libc_csu_fini, %r19
 | |
| 	ldw	RT'.Lp__libc_csu_fini(%r1), %r22
 | |
| 	ldw	0(%r22), %r22
 | |
| #else
 | |
| 	/* Load $global$ address into %dp */
 | |
| 	ldil	L%$global$, %dp
 | |
| 	ldo	R%$global$(%dp), %dp
 | |
| 
 | |
| 	/* load main (1st argument) */
 | |
| 	ldil	LR'.Lpmain, %r26
 | |
| 	ldw	RR'.Lpmain(%r26), %r26
 | |
| 	/* void (*init) (void) (4th argument) */
 | |
| 	ldil	LR'.Lp__libc_csu_init, %r23
 | |
| 	ldw	RR'.Lp__libc_csu_init(%r23), %r23
 | |
| 	/* void (*fini) (void) (5th argument) */
 | |
| 	ldil	LR'.Lp__libc_csu_fini, %r22
 | |
| 	ldw	RR'.Lp__libc_csu_fini(%r22), %r22
 | |
| #endif
 | |
| 	/* Store 5th argument */
 | |
| 	stw	%r22, -52(%sp)
 | |
| 	/* void *stack_end (7th argument) */
 | |
| 	stw	%sp, -60(%sp)
 | |
| 	bl	__libc_start_main,%r2
 | |
| 	nop
 | |
| 	/* die horribly if it returned (it shouldn't) */
 | |
| 	iitlbp %r0,(%sr0,%r0)
 | |
| 	nop
 | |
| 
 | |
| 	.procend
 | |
| 
 | |
| /* Define a symbol for the first piece of initialized data.  */
 | |
| 	.data
 | |
| 	.globl __data_start
 | |
| __data_start:
 | |
| 	.long 0
 | |
| 	.weak data_start
 | |
| 	data_start = __data_start
 |