OpenWrt之quilt打补丁

OpenWrt使用的是quilt工具来制作补丁非传统的diff

diff和quilt使用方法参考博客

官方quilt文档

准备工作

cat > ~/.quiltrc <<EOF
QUILT_DIFF_ARGS="--no-timestamps --no-index -p ab --color=auto"
QUILT_REFRESH_ARGS="--no-timestamps --no-index -p ab"
QUILT_SERIES_ARGS="--color=auto"
QUILT_PATCH_OPTS="--unified"
QUILT_DIFF_OPTS="-p"
EDITOR="vim"
EOF
给gdb打补丁修复Remote ‘g’ packet reply is too long

准备gdb源码以及patch文件

make toolchain/gdb/{clean,prepare} V=s QUILT=1

进入到gdb源码目录

cd build_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/gdb-linaro-7.6-2013.05/

打上原来的所有补丁

quilt push -a

创建新的patch

quilt new 700-fix-remote-g-packet-reply-too-long.patch

修改源文件

quilt edit gdb/remote.c

--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -6110,8 +6110,19 @@ process_g_packet (struct regcache *regca
   buf_len = strlen (rs->buf);
 
   /* Further sanity checks, with knowledge of the architecture.  */
-  if (buf_len > 2 * rsa->sizeof_g_packet)
-    error (_("Remote 'g' packet reply is too long: %s"), rs->buf);
+  // if (buf_len > 2 * rsa->sizeof_g_packet)
+  //  error (_("Remote 'g' packet reply is too long: %s"), rs->buf);
+  if (buf_len > 2 * rsa->sizeof_g_packet) {
+    rsa->sizeof_g_packet = buf_len;
+    for (i = 0; i < gdbarch_num_regs (gdbarch); i++) {
+      if (rsa->regs[i].pnum == -1)
+        continue;
+      if (rsa->regs[i].offset >= rsa->sizeof_g_packet)
+        rsa->regs[i].in_g_packet = 0;
+      else
+        rsa->regs[i].in_g_packet = 1;
+    }
+  }

查看修改前后对比

quilt diff

更新修改到patch文件

quilt refresh

返回buildroot目录

cd -

打上新的补丁

make toolchain/gdb/update V=s

重新编译

make toolchain/gdb/{clean,compile,install} V=s

cat ./scripts/remote-gdb

示例二:内核打补丁

make target/linux/{clean,prepare} V=s QUILT=1

cd build_dir/target-mipsel_24kc_musl/linux-ramips_mt76x8/linux-4.14.149/

quilt push -a

quilt new platform/666-reboot-softreset-2-hardreset-by-GPIO5.patch

quilt edit kernel/reboot.c
quilt edit 其他文件

quilt diff

quilt refresh

make target/linux/update V=s  
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值