summaryrefslogtreecommitdiff
path: root/src/ldso
diff options
context:
space:
mode:
Diffstat (limited to 'src/ldso')
-rw-r--r--src/ldso/dynlink.c2
-rw-r--r--src/ldso/powerpc/start.s8
2 files changed, 9 insertions, 1 deletions
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c
index ba2f6129..66f22bef 100644
--- a/src/ldso/dynlink.c
+++ b/src/ldso/dynlink.c
@@ -481,7 +481,7 @@ static struct dso *load_library(const char *name)
if (getline(&sys_path, (size_t[1]){0}, f) > 0) {
size_t l = strlen(sys_path);
if (l && sys_path[l-1]=='\n')
- sys_path[-1] = 0;
+ sys_path[l-1] = 0;
}
fclose(f);
}
diff --git a/src/ldso/powerpc/start.s b/src/ldso/powerpc/start.s
index 08b5979a..6c499e8e 100644
--- a/src/ldso/powerpc/start.s
+++ b/src/ldso/powerpc/start.s
@@ -16,6 +16,14 @@ _start:
bl __dynlink
addi 1, 1, 16
+ lwz 4, 0(1)
+1: addi 4, 4, -1
+ lwzu 5, 4(1)
+ cmpwi 5, -1
+ beq- 1b
+ addi 4, 4, 1
+ stwu 4, -4(1)
+
mtlr 3
li 3, 0
blr