diff options
Diffstat (limited to 'src/ldso')
-rw-r--r-- | src/ldso/dynlink.c | 2 | ||||
-rw-r--r-- | src/ldso/powerpc/start.s | 8 |
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 |