diff options
Diffstat (limited to 'scripts/relocate_sdk.py')
-rwxr-xr-x | scripts/relocate_sdk.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/scripts/relocate_sdk.py b/scripts/relocate_sdk.py index 4ed8bfc0d1..8a728720ba 100755 --- a/scripts/relocate_sdk.py +++ b/scripts/relocate_sdk.py | |||
@@ -104,11 +104,12 @@ def change_interpreter(elf_file_name): | |||
104 | if (len(new_dl_path) >= p_filesz): | 104 | if (len(new_dl_path) >= p_filesz): |
105 | print("ERROR: could not relocate %s, interp size = %i and %i is needed." \ | 105 | print("ERROR: could not relocate %s, interp size = %i and %i is needed." \ |
106 | % (elf_file_name, p_memsz, len(new_dl_path) + 1)) | 106 | % (elf_file_name, p_memsz, len(new_dl_path) + 1)) |
107 | break | 107 | return False |
108 | dl_path = new_dl_path + b("\0") * (p_filesz - len(new_dl_path)) | 108 | dl_path = new_dl_path + b("\0") * (p_filesz - len(new_dl_path)) |
109 | f.seek(p_offset) | 109 | f.seek(p_offset) |
110 | f.write(dl_path) | 110 | f.write(dl_path) |
111 | break | 111 | break |
112 | return True | ||
112 | 113 | ||
113 | def change_dl_sysdirs(elf_file_name): | 114 | def change_dl_sysdirs(elf_file_name): |
114 | if arch == 32: | 115 | if arch == 32: |
@@ -222,6 +223,7 @@ else: | |||
222 | 223 | ||
223 | executables_list = sys.argv[3:] | 224 | executables_list = sys.argv[3:] |
224 | 225 | ||
226 | errors = False | ||
225 | for e in executables_list: | 227 | for e in executables_list: |
226 | perms = os.stat(e)[stat.ST_MODE] | 228 | perms = os.stat(e)[stat.ST_MODE] |
227 | if os.access(e, os.W_OK|os.R_OK): | 229 | if os.access(e, os.W_OK|os.R_OK): |
@@ -247,7 +249,8 @@ for e in executables_list: | |||
247 | arch = get_arch() | 249 | arch = get_arch() |
248 | if arch: | 250 | if arch: |
249 | parse_elf_header() | 251 | parse_elf_header() |
250 | change_interpreter(e) | 252 | if not change_interpreter(e): |
253 | errors = True | ||
251 | change_dl_sysdirs(e) | 254 | change_dl_sysdirs(e) |
252 | 255 | ||
253 | """ change permissions back """ | 256 | """ change permissions back """ |
@@ -260,3 +263,6 @@ for e in executables_list: | |||
260 | print("New file size for %s is different. Looks like a relocation error!", e) | 263 | print("New file size for %s is different. Looks like a relocation error!", e) |
261 | sys.exit(-1) | 264 | sys.exit(-1) |
262 | 265 | ||
266 | if errors: | ||
267 | print("Relocation of one or more executables failed.") | ||
268 | sys.exit(-1) | ||