summaryrefslogtreecommitdiffstats
path: root/scripts/relocate_sdk.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/relocate_sdk.py')
-rwxr-xr-xscripts/relocate_sdk.py10
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
113def change_dl_sysdirs(elf_file_name): 114def change_dl_sysdirs(elf_file_name):
114 if arch == 32: 115 if arch == 32:
@@ -222,6 +223,7 @@ else:
222 223
223executables_list = sys.argv[3:] 224executables_list = sys.argv[3:]
224 225
226errors = False
225for e in executables_list: 227for 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
266if errors:
267 print("Relocation of one or more executables failed.")
268 sys.exit(-1)