⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dl-machine-arm.patch

📁 linux下编译交叉工具链的工具源码
💻 PATCH
字号:
Fixes error:In file included from dynamic-link.h:21,                 from dl-load.c:32:../sysdeps/arm/dl-machine.h:124:25: missing terminating " character...make[2]: *** [/crosstool-0.22/build/arm-unknown-linux-gnu/gcc-3.3-glibc-2.2.5/build-glibc/elf/dl-load.o] Error 1The first two hunks of http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/arm/dl-machine.h.diff?r1=1.39&r2=1.40&cvsroot=glibcapplied cleanly, but the third hunk didn't, so I just added the \n\'s by hand for that section.--- glibc-2.2.5/sysdeps/arm/dl-machine.h.orig	Sat Sep  8 14:31:40 2001+++ glibc-2.2.5/sysdeps/arm/dl-machine.h	Wed Aug 27 10:55:26 2003@@ -121,14 +121,15 @@    and then redirect to the address it returns.  */    // macro for handling PIC situation.... #ifdef PIC-#define CALL_ROUTINE(x) " ldr sl,0f-	add 	sl, pc, sl-1:	ldr	r2, 2f-	mov	lr, pc-	add	pc, sl, r2-	b	3f-0:	.word	_GLOBAL_OFFSET_TABLE_ - 1b - 4-2:	.word " #x "(GOTOFF)+#define CALL_ROUTINE(x) "\+	ldr sl,0f\n\+	add 	sl, pc, sl\n\+1:	ldr	r2, 2f\n\+	mov	lr, pc\n\+	add	pc, sl, r2\n\+	b	3f\n\+0:	.word	_GLOBAL_OFFSET_TABLE_ - 1b - 4\n\+2:	.word " #x "(GOTOFF)\n\ 3:	" #else #define CALL_ROUTINE(x) " bl " #x@@ -136,114 +137,114 @@  #ifndef PROF # define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\-	.text-	.globl _dl_runtime_resolve-	.type _dl_runtime_resolve, #function-	.align 2-_dl_runtime_resolve:-	@ we get called with-	@ 	stack[0] contains the return address from this call-	@	ip contains &GOT[n+3] (pointer to function)-	@	lr points to &GOT[2]--	@ save almost everything; lr is already on the stack-	stmdb	sp!,{r0-r3,sl,fp}--	@ prepare to call fixup()-	@ change &GOT[n+3] into 8*n        NOTE: reloc are 8 bytes each-	sub	r1, ip, lr-	sub	r1, r1, #4-	add	r1, r1, r1--	@ get pointer to linker struct-	ldr	r0, [lr, #-4]--	@ call fixup routine-	" CALL_ROUTINE(fixup) "--	@ save the return-	mov	ip, r0--	@ restore the stack-	ldmia	sp!,{r0-r3,sl,fp,lr}--	@ jump to the newly found address-	mov	pc, ip--	.size _dl_runtime_resolve, .-_dl_runtime_resolve--	.globl _dl_runtime_profile-	.type _dl_runtime_profile, #function-	.align 2-_dl_runtime_profile:-	@ save almost everything; lr is already on the stack-	stmdb	sp!,{r0-r3,sl,fp}--	@ prepare to call fixup()-	@ change &GOT[n+3] into 8*n        NOTE: reloc are 8 bytes each-	sub	r1, ip, lr-	sub	r1, r1, #4-	add	r1, r1, r1--	@ get pointer to linker struct-	ldr	r0, [lr, #-4]--	@ call profiling fixup routine-	" CALL_ROUTINE(profile_fixup) "--	@ save the return-	mov	ip, r0--	@ restore the stack-	ldmia	sp!,{r0-r3,sl,fp,lr}--	@ jump to the newly found address-	mov	pc, ip--	.size _dl_runtime_resolve, .-_dl_runtime_resolve-	.previous+	.text\n\+	.globl _dl_runtime_resolve\n\+	.type _dl_runtime_resolve, #function\n\+	.align 2\n\+_dl_runtime_resolve:\n\+	@ we get called with\n\+	@ 	stack[0] contains the return address from this call\n\+	@	ip contains &GOT[n+3] (pointer to function)\n\+	@	lr points to &GOT[2]\n\+\n\+	@ save almost everything; lr is already on the stack\n\+	stmdb	sp!,{r0-r3,sl,fp}\n\+\n\+	@ prepare to call fixup()\n\+	@ change &GOT[n+3] into 8*n        NOTE: reloc are 8 bytes each\n\+	sub	r1, ip, lr\n\+	sub	r1, r1, #4\n\+	add	r1, r1, r1\n\+\n\+	@ get pointer to linker struct\n\+	ldr	r0, [lr, #-4]\n\+\n\+	@ call fixup routine\n\+	" CALL_ROUTINE(fixup) "\n\+\n\+	@ save the return\n\+	mov	ip, r0\n\+\n\+	@ restore the stack\n\+	ldmia	sp!,{r0-r3,sl,fp,lr}\n\+\n\+	@ jump to the newly found address\n\+	mov	pc, ip\n\+\n\+	.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\+\n\+	.globl _dl_runtime_profile\n\+	.type _dl_runtime_profile, #function\n\+	.align 2\n\+_dl_runtime_profile:\n\+	@ save almost everything; lr is already on the stack\n\+	stmdb	sp!,{r0-r3,sl,fp}\n\+\n\+	@ prepare to call fixup()\n\+	@ change &GOT[n+3] into 8*n        NOTE: reloc are 8 bytes each\n\+	sub	r1, ip, lr\n\+	sub	r1, r1, #4\n\+	add	r1, r1, r1\n\+\n\+	@ get pointer to linker struct\n\+	ldr	r0, [lr, #-4]\n\+\n\+	@ call profiling fixup routine\n\+	" CALL_ROUTINE(profile_fixup) "\n\+\n\+	@ save the return\n\+	mov	ip, r0\n\+\n\+	@ restore the stack\n\+	ldmia	sp!,{r0-r3,sl,fp,lr}\n\+\n\+	@ jump to the newly found address\n\+	mov	pc, ip\n\+\n\+	.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\+	.previous\n\ "); #else // PROF # define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\-	.text-	.globl _dl_runtime_resolve-	.globl _dl_runtime_profile-	.type _dl_runtime_resolve, #function-	.type _dl_runtime_profile, #function-	.align 2-_dl_runtime_resolve:-_dl_runtime_profile:-	@ we get called with-	@ 	stack[0] contains the return address from this call-	@	ip contains &GOT[n+3] (pointer to function)-	@	lr points to &GOT[2]--	@ save almost everything; return add is already on the stack-	stmdb	sp!,{r0-r3,sl,fp}--	@ prepare to call fixup()-	@ change &GOT[n+3] into 8*n        NOTE: reloc are 8 bytes each-	sub	r1, ip, lr-	sub	r1, r1, #4-	add	r1, r1, r1--	@ get pointer to linker struct-	ldr	r0, [lr, #-4]--	@ call profiling fixup routine-	" CALL_ROUTINE(fixup) "--	@ save the return-	mov	ip, r0--	@ restore the stack-	ldmia	sp!,{r0-r3,sl,fp,lr}--	@ jump to the newly found address-	mov	pc, ip--	.size _dl_runtime_profile, .-_dl_runtime_profile-	.previous+	.text\n\+	.globl _dl_runtime_resolve\n\+	.globl _dl_runtime_profile\n\+	.type _dl_runtime_resolve, #function\n\+	.type _dl_runtime_profile, #function\n\+	.align 2\n\+_dl_runtime_resolve:\n\+_dl_runtime_profile:\n\+	@ we get called with\n\+	@ 	stack[0] contains the return address from this call\n\+	@	ip contains &GOT[n+3] (pointer to function)\n\+	@	lr points to &GOT[2]\n\+\n\+	@ save almost everything; return add is already on the stack\n\+	stmdb	sp!,{r0-r3,sl,fp}\n\+\n\+	@ prepare to call fixup()\n\+	@ change &GOT[n+3] into 8*n        NOTE: reloc are 8 bytes each\n\+	sub	r1, ip, lr\n\+	sub	r1, r1, #4\n\+	add	r1, r1, r1\n\+\n\+	@ get pointer to linker struct\n\+	ldr	r0, [lr, #-4]\n\+\n\+	@ call profiling fixup routine\n\+	" CALL_ROUTINE(fixup) "\n\+\n\+	@ save the return\n\+	mov	ip, r0\n\+\n\+	@ restore the stack\n\+	ldmia	sp!,{r0-r3,sl,fp,lr}\n\+\n\+	@ jump to the newly found address\n\+	mov	pc, ip\n\+\n\+	.size _dl_runtime_profile, .-_dl_runtime_profile\n\+	.previous\n\ "); #endif //PROF @@ -256,70 +257,70 @@    its return value is the user program's entry point.  */  #define RTLD_START asm ("\-.text-.globl _start-.globl _dl_start_user-_start:-	@ at start time, all the args are on the stack-	mov	r0, sp-	bl	_dl_start-	@ returns user entry point in r0-_dl_start_user:-	mov	r6, r0-	@ we are PIC code, so get global offset table-	ldr	sl, .L_GET_GOT-	add	sl, pc, sl-.L_GOT_GOT:-	@ Store the highest stack address-	ldr	r1, .L_STACK_END-	ldr	r1, [sl, r1]-	str	sp, [r1]-	@ See if we were run as a command with the executable file-	@ name as an extra leading argument.-	ldr	r4, .L_SKIP_ARGS-	ldr	r4, [sl, r4]-	@ get the original arg count-	ldr	r1, [sp]-	@ subtract _dl_skip_args from it-	sub	r1, r1, r4-	@ adjust the stack pointer to skip them-	add	sp, sp, r4, lsl #2-	@ get the argv address-	add	r2, sp, #4-	@ store the new argc in the new stack location-	str	r1, [sp]-	@ compute envp-	add	r3, r2, r1, lsl #2-	add	r3, r3, #4--	@ now we call _dl_init-	ldr	r0, .L_LOADED-	ldr	r0, [sl, r0]-	ldr	r0, [r0]-	@ call _dl_init-	bl	_dl_init(PLT)-	@ clear the startup flag-	ldr	r2, .L_STARTUP_FLAG-	ldr	r1, [sl, r2]-	mov	r0, #0-	str	r0, [r1]-	@ load the finalizer function-	ldr	r0, .L_FINI_PROC-	ldr	r0, [sl, r0]-	@ jump to the user_s entry point-	mov	pc, r6-.L_GET_GOT:+.text\n\+.globl _start\n\+.globl _dl_start_user\n\+_start:\n\+	@ at start time, all the args are on the stack\n\+	mov	r0, sp\n\+	bl	_dl_start\n\+	@ returns user entry point in r0\n\+_dl_start_user:\n\+	mov	r6, r0\n\+	@ we are PIC code, so get global offset table\n\+	ldr	sl, .L_GET_GOT\n\+	add	sl, pc, sl\n\+.L_GOT_GOT:\n\+	@ Store the highest stack address\n\+	ldr	r1, .L_STACK_END\n\+	ldr	r1, [sl, r1]\n\+	str	sp, [r1]\n\+	@ See if we were run as a command with the executable file\n\+	@ name as an extra leading argument.\n\+	ldr	r4, .L_SKIP_ARGS\n\+	ldr	r4, [sl, r4]\n\+	@ get the original arg count\n\+	ldr	r1, [sp]\n\+	@ subtract _dl_skip_args from it\n\+	sub	r1, r1, r4\n\+	@ adjust the stack pointer to skip them\n\+	add	sp, sp, r4, lsl #2\n\+	@ get the argv address\n\+	add	r2, sp, #4\n\+	@ store the new argc in the new stack location\n\+	str	r1, [sp]\n\+	@ compute envp\n\+	add	r3, r2, r1, lsl #2\n\+	add	r3, r3, #4\n\+\n\+	@ now we call _dl_init\n\+	ldr	r0, .L_LOADED\n\+	ldr	r0, [sl, r0]\n\+	ldr	r0, [r0]\n\+	@ call _dl_init\n\+	bl	_dl_init(PLT)\n\+	@ clear the startup flag\n\+	ldr	r2, .L_STARTUP_FLAG\n\+	ldr	r1, [sl, r2]\n\+	mov	r0, #0\n\+	str	r0, [r1]\n\+	@ load the finalizer function\n\+	ldr	r0, .L_FINI_PROC\n\+	ldr	r0, [sl, r0]\n\+	@ jump to the user_s entry point\n\+	mov	pc, r6\n\+.L_GET_GOT:\n\ 	.word	_GLOBAL_OFFSET_TABLE_ - .L_GOT_GOT - 4	\n\ .L_SKIP_ARGS:					\n\ 	.word	_dl_skip_args(GOTOFF)		\n\-.L_STARTUP_FLAG:-	.word	_dl_starting_up(GOT)-.L_FINI_PROC:-	.word	_dl_fini(GOT)-.L_STACK_END:-	.word	__libc_stack_end(GOT)-.L_LOADED:-	.word	_dl_loaded(GOT)+.L_STARTUP_FLAG:\n\+	.word	_dl_starting_up(GOT)\n\+.L_FINI_PROC:\n\+	.word	_dl_fini(GOT)\n\+.L_STACK_END:\n\+	.word	__libc_stack_end(GOT)\n\+.L_LOADED:\n\+	.word	_dl_loaded(GOT)\n\ .previous\n\ "); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -