diff options
author | Stewart Smith <stewart@linux.vnet.ibm.com> | 2015-05-07 17:11:40 +1000 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2015-05-15 07:58:18 +1000 |
commit | e64108422a2c3f605ecabf088d25509073b4cf7d (patch) | |
tree | b6efd3de2515a4b95960290eadb2e72d47fcbfd2 | |
parent | f7fa97c15ae443e051b3dfad57e183b05e400e04 (diff) | |
download | skiboot-e64108422a2c3f605ecabf088d25509073b4cf7d.zip skiboot-e64108422a2c3f605ecabf088d25509073b4cf7d.tar.gz skiboot-e64108422a2c3f605ecabf088d25509073b4cf7d.tar.bz2 |
Make relocate() return specific error as to what went wrong
Useful in debugging odd problems, such as skiboot > 1MB.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r-- | asm/head.S | 2 | ||||
-rw-r--r-- | core/relocate.c | 8 |
2 files changed, 5 insertions, 5 deletions
@@ -438,7 +438,7 @@ call_relocate: mr %r3,%r30 bl relocate cmpwi %r3,0 - beq 1f + bne 1f mtlr %r14 blr 1: /* Fatal relocate failure */ diff --git a/core/relocate.c b/core/relocate.c index f6bda37..7255803 100644 --- a/core/relocate.c +++ b/core/relocate.c @@ -45,21 +45,21 @@ int relocate(uint64_t offset, struct elf64_dyn *dyn, struct elf64_rela *rela) /* If we miss either rela or relacount, bail */ if (!dt_rela || !dt_relacount) - return false; + return -1; /* Check if the offset is consistent */ if ((offset + dt_rela) != (uint64_t)rela) - return false; + return -2; /* Perform relocations */ for (i = 0; i < dt_relacount; i++, rela++) { uint64_t *t; if (ELF64_R_TYPE(rela->r_info) != R_PPC64_RELATIVE) - return false; + return -3; t = (uint64_t *)(rela->r_offset + offset); *t = rela->r_addend + offset; } - return true; + return 0; } |