|
|
@ -426,18 +426,22 @@ retry: |
|
|
|
* back and find the 2nd incidence of \x7ELF (rewind by one |
|
|
|
* back and find the 2nd incidence of \x7ELF (rewind by one |
|
|
|
* from ELF) and then patch the opcocdes */ |
|
|
|
* from ELF) and then patch the opcocdes */ |
|
|
|
if (!advance(&w, &remaining, ".text")) |
|
|
|
if (!advance(&w, &remaining, ".text")) |
|
|
|
{patchbfi = false; goto retry;} |
|
|
|
{patchbfi = false; goto retry;} |
|
|
|
w++; remaining--; |
|
|
|
w++; remaining--; |
|
|
|
if (!advance(&w, &remaining, ".text")) |
|
|
|
if (!advance(&w, &remaining, ".text")) { |
|
|
|
{patchbfi = false; goto retry;} |
|
|
|
/* 32 bit builds only one ELF */ |
|
|
|
|
|
|
|
w--; remaining++; |
|
|
|
|
|
|
|
} |
|
|
|
memcpy(&start, w + 285, 4); |
|
|
|
memcpy(&start, w + 285, 4); |
|
|
|
memcpy(&length, w + 289, 4); |
|
|
|
memcpy(&length, w + 289, 4); |
|
|
|
w = binaries[gpu]; remaining = binary_sizes[gpu]; |
|
|
|
w = binaries[gpu]; remaining = binary_sizes[gpu]; |
|
|
|
if (!advance(&w, &remaining, "ELF")) |
|
|
|
if (!advance(&w, &remaining, "ELF")) |
|
|
|
{patchbfi = false; goto retry;} |
|
|
|
{patchbfi = false; goto retry;} |
|
|
|
w++; remaining--; |
|
|
|
w++; remaining--; |
|
|
|
if (!advance(&w, &remaining, "ELF")) |
|
|
|
if (!advance(&w, &remaining, "ELF")) { |
|
|
|
{patchbfi = false; goto retry;} |
|
|
|
/* 32 bit builds only one ELF */ |
|
|
|
|
|
|
|
w--; remaining++; |
|
|
|
|
|
|
|
} |
|
|
|
w--; remaining++; |
|
|
|
w--; remaining++; |
|
|
|
w += start; remaining -= start; |
|
|
|
w += start; remaining -= start; |
|
|
|
if (opt_debug) |
|
|
|
if (opt_debug) |
|
|
|