diff --git a/package/musl/0002-fix-rcrt1.o.patch b/package/musl/0002-fix-rcrt1.o.patch new file mode 100644 index 000000000000..3dae65569f80 --- /dev/null +++ b/package/musl/0002-fix-rcrt1.o.patch @@ -0,0 +1,26 @@ +diff --git a/ldso/dlstart.c b/ldso/dlstart.c +index 4dbe178..0dd1d5a 100644 +--- a/ldso/dlstart.c ++++ b/ldso/dlstart.c +@@ -128,16 +128,18 @@ void _dlstart_c(size_t *sp, size_t *dynv) + rel = (void *)(base+dyn[DT_REL]); + rel_size = dyn[DT_RELSZ]; + for (; rel_size; rel+=2, rel_size-=2*sizeof(size_t)) { +- if (!IS_RELATIVE(rel[1], 0)) continue; + size_t *rel_addr = (void *)(base + rel[0]); ++ if (rel[1] == REL_DTPMOD) *rel_addr = 1; ++ if (!IS_RELATIVE(rel[1], 0)) continue; + *rel_addr += base; + } + + rel = (void *)(base+dyn[DT_RELA]); + rel_size = dyn[DT_RELASZ]; + for (; rel_size; rel+=3, rel_size-=3*sizeof(size_t)) { +- if (!IS_RELATIVE(rel[1], 0)) continue; + size_t *rel_addr = (void *)(base + rel[0]); ++ if (rel[1] == REL_DTPMOD) *rel_addr = 1; ++ if (!IS_RELATIVE(rel[1], 0)) continue; + *rel_addr = base + rel[2]; + } + #endif +