File: update-dyld-environment-load-command

package info (click to toggle)
wpewebkit 2.38.6-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 311,508 kB
  • sloc: cpp: 2,653,313; javascript: 289,013; ansic: 121,268; xml: 64,149; python: 35,534; ruby: 17,287; perl: 15,877; asm: 11,072; yacc: 2,326; sh: 1,863; lex: 1,319; java: 937; makefile: 146; pascal: 60
file content (29 lines) | stat: -rwxr-xr-x 895 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env python3
# encoding: utf-8

import argparse
import sys
from typing import Any, Dict, Iterable, List, Tuple
from webkitpy import mach_o

def main(args: List[str]):
    parser = argparse.ArgumentParser()
    parser.add_argument("binary")
    parser.add_argument("variables", nargs="+")
    options = parser.parse_args(args)

    with open(options.binary, "r+b") as binary_file:
        mach_o_file = mach_o.MachOFile(binary_file)

        for mach_o_header in mach_o_file.headers:
            mach_o_header.filter_commands(lambda command: not isinstance(command, mach_o.MachODyldEnvironmentCommand))

            for variable_pair in options.variables:
                mach_o_header.commands.append(mach_o.MachODyldEnvironmentCommand.build(variable_pair))

            mach_o_header.update_file(binary_file)

    return 0

if __name__ == '__main__':
    sys.exit(main(sys.argv[1:]))