这是来自gdb-7.6.patch文件的内容:
--- gdb-7.6/libiberty/Makefile.in.orig
+++ gdb-7.6/libiberty/Makefile.in
@@ -175,6 +175,7 @@ REQUIRED_OFILES = \
./getruntime.$(objext) ./hashtab.$(objext) ./hex.$(objext) \
./lbasename.$(objext) ./lrealpath.$(objext) \
./make-relative-prefix.$(objext) ./make-temp-file.$(objext) \
+ ./mkstemps.$(objext) \
./objalloc.$(objext) \
./obstack.$(objext) \
./partition.$(objext) ./pexecute.$(objext) ./physmem.$(objext) \
@@ -206,7 +207,7 @@ CONFIGURED_OFILES = ./asprintf.$(objext)
./index.$(objext) ./insque.$(objext) \
./memchr.$(objext) ./memcmp.$(objext) ./memcpy.$(objext) \
./memmem.$(objext) ./memmove.$(objext) \
- ./mempcpy.$(objext) ./memset.$(objext) ./mkstemps.$(objext) \
+ ./mempcpy.$(objext) ./memset.$(objext) \
./pex-djgpp.$(objext) ./pex-msdos.$(objext) \
./pex-unix.$(objext) ./pex-win32.$(objext) \
./putenv.$(objext) \
--- gdb-7.6/opcodes/i386-dis.c.orig
+++ gdb-7.6/opcodes/i386-dis.c
@@ -11510,6 +11510,10 @@ print_insn (bfd_vma pc, disassemble_info
threebyte = *++codep;
dp = &dis386_twobyte[threebyte];
need_modrm = twobyte_has_modrm[*codep];
+ if (dp->name && ((strcmp(dp->name, "ud2a") == 0) ||
+(strcmp(dp->name, "ud2") == 0))) {
+ extern int kernel_BUG_encoding_bytes(void);
+ codep += kernel_BUG_encoding_bytes();
+ }
codep++;
}
else
--- gdb-7.6/gdb/dwarf2read.c.orig
+++ gdb-7.6/gdb/dwarf2read.c
@@ -2670,7 +2670,11 @@ read_index_from_section (struct objfile
indices. */
if (version < 4)
{
+#ifdef CRASH_MERGE
+ static int warning_printed = 1;
+#else
static int warning_printed = 0;
+#endif
if (!warning_printed)
{
warning (_("Skipping obsolete .gdb_index section in %s."),
@@ -2689,7 +2693,11 @@ read_index_from_section (struct objfile
"set use-deprecated-index-sections on". */
if (version < 6 && !deprecated_ok)
{
+#ifdef CRASH_MERGE
+ static int warning_printed = 1;
+#else
static int warning_printed = 0;
+#endif
if (!warning_printed)
{
warning (_("\
我想知道这个补丁是如何制作的。我猜在制作补丁之前,应该有六个文件,其布局是这样的:
gdb-7.6/libiberty/Makefile.in.orig
gdb-7.6/libiberty/Makefile.in
gdb-7.6/opcodes/i386-dis.c.orig
gdb-7.6/opcodes/i386-dis.c
gdb-7.6/gdb/dwarf2read.c.orig
gdb-7.6/gdb/dwarf2read.c
文件以&#39; orig&#39;结尾。后缀是orignal文件,而其他文件是 我试了一下diff -uNr,因此产生了3个补丁,但我不知道如何生成包含所有变化的补丁。任何人都可以告诉我如何实现这一目标吗? 谢谢!
答案 0 :(得分:2)
@VonC几乎完全基于差异有一个很好的解决方案,但我对shell的热爱不能让这个问题没有基于文件操作的答案。 :)
如果你可以创建你想要的3个,你总是可以按照你想要的方式附加信息:
diff -ruN gdb-7.6/libiberty/Makefile.in{.orig,} > gdb-7.6.patch
diff -ruN gdb-7.6/opcodes/i386-dis.c{.orig,} >> gdb-7.6.patch
diff -ruN gdb-7.6/gdb/dwarf2read.c{.orig,} >> gdb-7.6.patch
答案 1 :(得分:1)
This article "How to Make and Apply Patches"提及:
对于多个文件,这个过程稍微复杂一点 假设您有一个文件夹“
original
”和一个文件夹“changed
”,后者包含前者文件的多个更改版本。
如果您调用diff
传递文件夹名称而不是文件名,则会导致差异将一个文件夹中的file1与第二个文件夹中的file1进行比较,这正是我们所需要的。
diff -rupN original changed > original.patch
在您的情况下,您需要:
gdb-7.6.ori
文件夹内容未触动gdb-7.6
文件夹,其中包含更改