gcl.git - GNU Common Lisp

index : gcl.git
GNU Common Lisp
summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamm Maguire <camm@debian.org>2014年09月28日 16:58:03 -0400
committerCamm Maguire <camm@debian.org>2014年09月28日 16:58:03 -0400
commitfd44ebd45d51a2ec819aaacf0930278bd8254bad (patch)
tree8bc66da2ac1cad2a46ac04435c14bcda93630d7c
parent7fdc74e59fe9f5b28bd78442779e35b838741095 (diff)
downloadgcl-fd44ebd45d51a2ec819aaacf0930278bd8254bad.tar.gz
reloc externals off of plt entries for ppc64le
Diffstat
-rw-r--r--gcl/h/elf64_ppcle_reloc_special.h 54
1 files changed, 33 insertions, 21 deletions
diff --git a/gcl/h/elf64_ppcle_reloc_special.h b/gcl/h/elf64_ppcle_reloc_special.h
index 7b08122c7..e60fcdd67 100644
--- a/gcl/h/elf64_ppcle_reloc_special.h
+++ b/gcl/h/elf64_ppcle_reloc_special.h
@@ -1,12 +1,12 @@
static Sym *toc;
-static int tramp[]={0,0,
- (((0x3a<<10)|(0x9<<5)|0xc)<<16)|0xfff8,/*ld r9,-8(r12)*/
- ((0x3a<<10)|(0x9<<5)|0x9)<<16, /*ld r9,0(r9)*/
- 0x7d2c4b78, /*mr r12,r9 */
- 0x7d8903a6, /*mtctr r12*/
- 0x4e800420 /*bctrl*/
-};
+/* static int tramp[]={0,0, */
+/* (((0x3a<<10)|(0x9<<5)|0xc)<<16)|0xfff8,/\*ld r9,-8(r12)*\/ */
+/* ((0x3a<<10)|(0x9<<5)|0x9)<<16, /\*ld r9,0(r9)*\/ */
+/* 0x7d2c4b78, /\*mr r12,r9 *\/ */
+/* 0x7d8903a6, /\*mtctr r12*\/ */
+/* 0x4e800420 /\*bctrl*\/ */
+/* }; */
static int
find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
@@ -18,28 +18,40 @@ find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
ul j,*u;
- massert((sec=get_section(".rel.dyn",sec1,sece,sn))||
- (sec=get_section(".rela.dyn",sec1,sece,sn)));
+ massert((sec=get_section(".rela.plt",sec1,sece,sn)));
v+=sec->sh_offset;
ve=v+sec->sh_size;
- for (j=0,r=v;v<ve;v+=sec->sh_entsize,r=v)
+ for (r=v;v<ve;v+=sec->sh_entsize,r=v)
if (ELF_R_TYPE(r->r_info) && !ds1[ELF_R_SYM(r->r_info)].st_value)
- j++;
+ ds1[ELF_R_SYM(r->r_info)].st_value=*(ul *)r->r_offset;
- massert(u=malloc(j*sizeof(tramp)));
+ return 0;
- v=ve-sec->sh_size;
- for (r=v;v<ve;v+=sec->sh_entsize,r=v)
- if (ELF_R_TYPE(r->r_info) && !ds1[ELF_R_SYM(r->r_info)].st_value) {
- memcpy(u,tramp,sizeof(tramp));
- *u++=r->r_offset;
- ds1[ELF_R_SYM(r->r_info)].st_value=(ul)u;
- u=((void *)(u-1)+sizeof(tramp));
- }
- return 0;
+ /* massert((sec=get_section(".rel.dyn",sec1,sece,sn))|| */
+ /* (sec=get_section(".rela.dyn",sec1,sece,sn))); */
+
+ /* v+=sec->sh_offset; */
+ /* ve=v+sec->sh_size; */
+
+ /* for (j=0,r=v;v<ve;v+=sec->sh_entsize,r=v) */
+ /* if (ELF_R_TYPE(r->r_info) && !ds1[ELF_R_SYM(r->r_info)].st_value) */
+ /* j++; */
+
+ /* massert(u=malloc(j*sizeof(tramp))); */
+
+ /* v=ve-sec->sh_size; */
+ /* for (r=v;v<ve;v+=sec->sh_entsize,r=v) */
+ /* if (ELF_R_TYPE(r->r_info) && !ds1[ELF_R_SYM(r->r_info)].st_value) { */
+ /* memcpy(u,tramp,sizeof(tramp)); */
+ /* *u++=r->r_offset; */
+ /* ds1[ELF_R_SYM(r->r_info)].st_value=(ul)u; */
+ /* u=((void *)(u-1)+sizeof(tramp)); */
+ /* } */
+
+ /* return 0; */
}
generated by cgit v1.2.3 (git 2.25.1) at 2025年09月04日 14:53:15 +0000

AltStyle によって変換されたページ (->オリジナル) /