I have one more clue: on old Tiger the changed component of curr (or filevec) holds TRUE instead of FALSE. Here are excepts from the debug sessions, side by side:
Session on PPC Mac OS X 10.4.11, Tiger, Darwin 8.11.0 | Session on x86_64 macOS High Sierra, Version 10.13.6, Darwin 17.7.0 ===================================================== | =================================================================== Current directory is …/work/diffutils-3.12/src/ | Current directory is …/work/diffutils-3.12/src/ GNU gdb 6.3.50-20050815 (Apple version gdb-696) (Sat Oct 20 18:20:28 GMT 2007) | GNU gdb (GDB) 14.2 Copyright 2004 Free Software Foundation, Inc. | Copyright (C) 2023 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are | License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> welcome to change it and/or distribute copies of it under certain conditions. | This is free software: you are free to change and redistribute it. Type "show copying" to see the conditions. | There is NO WARRANTY, to the extent permitted by law. There is absolutely no warranty for GDB. Type "show warranty" for details. | Type "show copying" and "show warranty" for details. This GDB was configured as "powerpc-apple-darwin"...DISPLAY = Mac | This GDB was configured as "x86_64-apple-darwin17.7.0". TERM = dumb | Type "show configuration" for configuration details. | For bug reporting instructions, please see: | <https://www.gnu.org/software/gdb/bugs/>. | Find the GDB manual and other documentation resources online at: | <http://www.gnu.org/software/gdb/documentation/>. | warning: --arch option not supported in this gdb. | For help, type "help". Reading symbols for shared libraries ..... done | Type "apropos word" to search for commands related to "word"... | Reading symbols from …/work/diffutils-3.12/src/diff... Breakpoint 1 at 0xe1c8: file diff.c, line 1372. | Breakpoint 1 at 0x10000ab7a: file diff.c, line 1372. Breakpoint 2 at 0x5fa8: file analyze.c, line 463. | Breakpoint 2 at 0x100001c44: file analyze.c, line 463. Breakpoint 3 at 0x6764: file analyze.c, line 578. | Breakpoint 3 at 0x1000022d5: file analyze.c, line 578. Breakpoint 4 at 0xf1ac: file diff.c, line 1633. | Breakpoint 4 at 0x1000098b6: file diff.c, line 1633. Breakpoint 5 at 0x8e10: file context.c, line 349. | Breakpoint 5 at 0x1000057ec: file context.c, line 349. Breakpoint 6 at 0x69f4: file analyze.c, line 624. | Breakpoint 6 at 0x100002527: file analyze.c, line 624. Breakpoint 7 at 0x6a04: file analyze.c, line 628. | Breakpoint 7 at 0x10000253d: file analyze.c, line 628. Breakpoint 8 at 0x82f4: file context.c, line 123. | Breakpoint 8 at 0x10000523e: file context.c, line 123. Breakpoint 9 at 0x8fa8: file context.c, line 379. | Breakpoint 9 at 0x1000059ab: file context.c, line 379. Breakpoint 10 at 0x222e4: file util.c, line 989. | Breakpoint 10 at 0x100013092: file util.c, line 989. Breakpoint 11 at 0x2244c: file util.c, line 1028. | Breakpoint 11 at 0x1000131ab: file util.c, line 1028. DISPLAY = Mac | DISPLAY = :0 TERM = dumb | TERM = dumb (gdb) run | (gdb) run Starting program: …/work/diffutils-3.12/src/diff -a -u \ | Starting program: …/work/diffutils-3.12/src/diff -a -u \ Portfile-graphite2-312 Portfile-graphite2 | Portfile-graphite2-P312 Portfile-graphite2 | [New Thread 0x1803 of process 55582] | [Thread 0x1803 of process 55582 exited] | [New Thread 0x1a03 of process 55582] | [Thread 0x1a03 of process 55582 exited] | [New Thread 0x1b03 of process 55582] Reading symbols for shared libraries ..................+ done | | Breakpoint 4, compare_files (parent=0x61000, detype=0x5e2b4, \ | Thread 3 hit Breakpoint 4, compare_files (parent=0x100060520, detype=0x10004c164 name0=0xbfffd8a1 "Portfile-graphite2-312", \ | name0=0x7ffeefbff5e9 "Portfile-graphite2-P312", name1=0xbfffd8b8 "Portfile-graphite2") at diff.c:1633 | name1=0x7ffeefbff601 "Portfile-graphite2") at diff.c:1633 (gdb) n | (gdb) n (gdb) step | (gdb) step compare_prepped_files (parent=0x61000, cmp=0xbfffd218, | compare_prepped_files (parent=0x100060520, cmp=0x7ffeefbfed90, \ open_flags=1073741824) at diff.c:1167 | open_flags=16777216) at diff.c:1167 (gdb) cont | (gdb) cont Continuing. | Continuing. | Breakpoint 1, compare_prepped_files (parent=0x61000, \ | Thread 3 hit Breakpoint 1, compare_prepped_files (parent=0x100060520, cmp=0xbfffd218, open_flags=1073741824) at diff.c:1372 | cmp=0x7ffeefbfed90, open_flags=16777216) at diff.c:1372 (gdb) step | (gdb) step | Breakpoint 2, diff_2_files (cmp=0xbfffd218) at analyze.c:463 | Thread 3 hit Breakpoint 2, diff_2_files (cmp=0x7ffeefbfed90) at analyze.c:463 (gdb) cont | (gdb) cont Continuing. | Continuing. | Breakpoint 3, diff_2_files (cmp=0xbfffd218) at analyze.c:578 | Thread 3 hit Breakpoint 3, diff_2_files (cmp=0x7ffeefbfed90) at analyze.c:578 (gdb) step | (gdb) step # from 578 back to 575 | (gdb) step build_script (filevec=0xbfffd218) at analyze.c:411 | build_script (filevec=0x7ffeefbfed90) at analyze.c:411 (gdb) n | (gdb) n (gdb) n | (gdb) n (gdb) n | (gdb) n (gdb) n # at line #418 | (gdb) n # at line #418 | (gdb) n # at line #420 So this OK for both until here, but here a difference now shows up: (gdb) p i0 | (gdb) p i0 $1 = 7 | $1 = 7 (gdb) p i1 | (gdb) p i1 $2 = 7 | $2 = 7 (gdb) p *changed0 | $3 = true | (gdb) p *changed1 | $4 = true | (gdb) n # at line #420 | (gdb) n # at line #422 | (gdb) p changed0[6] | (gdb) p changed0[6] $5 = true | $3 = false (gdb) p changed1[6] | (gdb) p changed1[6] $6 = true | $4 = false (gdb) n # at line #425 | (gdb) n # at line #433 On Tiger it's TRUE and on High Sierra it's FALSE, which is the correct value… (the "at line #xyz" comments report the line number in analyze.c to which GDB points. I also examined the output of the C pre-processor: no difference. So some time before build_script() is called the wrong value is written into the component changed of both files' filevec or curr structs. Let's find out! BTW, on High Sierra at first changed0[3] and changed1[3] are TRUE. At all other positions the value is FALSE. -- Greetings Pete These are my principles and if you don't like them... well, I have others. - Groucho Marx