project:cfg:BoardConfig_IPC: Added fastboot BoardConfig file and firmware post-scripts, distinguishing between the BoardConfigs for Luckfox Pico Pro and Luckfox Pico Max. project:app: Added fastboot_client and rk_smart_door for quick boot applications; updated rkipc app to adapt to the latest media library. media:samples: Added more usage examples. media:rockit: Fixed bugs; removed support for retrieving data frames from VPSS. media:isp: Updated rkaiq library and related tools to support connection to RKISP_Tuner. sysdrv:Makefile: Added support for compiling drv_ko on Luckfox Pico Ultra W using Ubuntu; added support for custom root filesystem. sysdrv:tools:board: Updated Buildroot optional mirror sources, updated some software versions, and stored device tree files and configuration files that undergo multiple modifications for U-Boot and kernel separately. sysdrv:source:mcu: Used RISC-V MCU SDK with RT-Thread system, mainly for initializing camera AE during quick boot. sysdrv:source:uboot: Added support for fastboot; added high baud rate DDR bin for serial firmware upgrades. sysdrv:source:kernel: Upgraded to version 5.10.160; increased NPU frequency for RV1106G3; added support for fastboot. Signed-off-by: luckfox-eng29 <eng29@luckfox.com>
77 lines
1.4 KiB
C
77 lines
1.4 KiB
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* Copyright (C) 2017 Josh Poimboeuf <jpoimboe@redhat.com>
|
|
*/
|
|
|
|
/*
|
|
* objtool orc:
|
|
*
|
|
* This command analyzes a .o file and adds .orc_unwind and .orc_unwind_ip
|
|
* sections to it, which is used by the in-kernel ORC unwinder.
|
|
*
|
|
* This command is a superset of "objtool check".
|
|
*/
|
|
|
|
#include <string.h>
|
|
#include "builtin.h"
|
|
#include "objtool.h"
|
|
|
|
static const char *orc_usage[] = {
|
|
"objtool orc generate [<options>] file.o",
|
|
"objtool orc dump file.o",
|
|
NULL,
|
|
};
|
|
|
|
int cmd_orc(int argc, const char **argv)
|
|
{
|
|
const char *objname;
|
|
|
|
argc--; argv++;
|
|
if (argc <= 0)
|
|
usage_with_options(orc_usage, check_options);
|
|
|
|
if (!strncmp(argv[0], "gen", 3)) {
|
|
struct objtool_file *file;
|
|
int ret;
|
|
|
|
argc = parse_options(argc, argv, check_options, orc_usage, 0);
|
|
if (argc != 1)
|
|
usage_with_options(orc_usage, check_options);
|
|
|
|
objname = argv[0];
|
|
|
|
file = objtool_open_read(objname);
|
|
if (!file)
|
|
return 1;
|
|
|
|
ret = check(file);
|
|
if (ret)
|
|
return ret;
|
|
|
|
if (list_empty(&file->insn_list))
|
|
return 0;
|
|
|
|
ret = orc_create(file);
|
|
if (ret)
|
|
return ret;
|
|
|
|
if (!file->elf->changed)
|
|
return 0;
|
|
|
|
return elf_write(file->elf);
|
|
}
|
|
|
|
if (!strcmp(argv[0], "dump")) {
|
|
if (argc != 2)
|
|
usage_with_options(orc_usage, check_options);
|
|
|
|
objname = argv[1];
|
|
|
|
return orc_dump(objname);
|
|
}
|
|
|
|
usage_with_options(orc_usage, check_options);
|
|
|
|
return 0;
|
|
}
|