def METHOD_NAME(self, objcopy):
    """
    Alters module's file on disk, to record self.required_mods
    into .module_deps section.
    objcopy should be path to an objcopy executable valid for
    the binary format of module files; ARM ELF.
    If required_mods is empty, the section is not added.  See
    add_cross_module_deps().
    """
    try:
        if self.required_mods:
            pass
        else:
            return
    except AttributeError:
        return
    mod_name_data = b""
    with tempfile.NamedTemporaryFile() as dep_file:
        for d in self.required_mods:
            mod_name_data += d.encode("utf8") + b"\0"
        mod_name_data += b"\0" # 0 length string to mark end of array
        dep_file.write(mod_name_data)
        dep_file.flush()
        objcopy_invoke = [objcopy,
                          "--add-section", ".module_deps=" + dep_file.name,
                          self.mo_file]
        # this might fail on Windows, because it is dumb and doesn't like
        # opening the same file twice
        if mod_name_data:
            print("writing .module_deps section for module: %s" % self.name)
            subprocess.run(objcopy_invoke)
        # objcopy is also kind of dumb.  You can't use add-section if the section
        # already exists, you can't use update-section if it doesn't.
        # You get a rather unhelpful error like this if you run add-section twice:
        # arm-none-eabi-objcopy: dual_iso/stTJMQwP: can't add section '.module_deps': file format not recognized
        # Currently, I can't be bothered fixing this, so, each cam will try to
        # add-section and most likely fail because the modules didn't need rebuilding,
        # so the section exists from last time.  This is okay.
        # Ideally we'd only run this step if modules had changed.
    #print("mod name data: %s" % mod_name_data)